Contenu | Rechercher | Menus

Annonce

Toute l'équipe d'ubuntu-fr vous souhaite un joyeux Noël et une bonne et heureuse année 2018.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 18/11/2017, à 18:04

Ambigua

Filtre PHP de couleur HTML

Salut !

Je developpe un petit site en php, mysql et html où les utilisateurs ont la possibilité de choisir des couleurs pour personnaliser le css du site...

J'ai donc une série d'input type=color qui permettent de choisir les couleurs de différents élements.
Mais à la validation, je voudrais "filtrer" les résultats pour ne pas avoir d'injection d'autres types de caractères que # en premier des caractères de A à F ou de 0 à 9

Je me casse la tête avec preg_match depuis ce matin et je n'arrive pas à ce que je veux...
Au mieux, ça me renvoie "true" alors même que le format n'est pas bon, au pire, ça fait "page blanche" avec une erreur dans la fonction. hmm

J'ai fait ainsi:

function validerCouleur($ATester) {
    //ne garde que les numeros entre 0-9 et supprimer les espaces
    $ATester = preg_replace('`[^0-9]`', '', $ATester);
    //Ajout de zéros si besoin a droite
    $ATester = str_pad($ATester, 6, '0', STR_PAD_RIGHT);
    //Retourne le numéro s'il est valide, sinon false.
    return preg_match('`^0[1-9]([-. ]?[0-9]{2}){4}$`', $ATester) ? $ATester : false;
}

Globalement, ça marche sile code couleur n'a que des chiffres ( type 555), il est retourné en 555000, je dois rajouter le # devant...

Je voudrais que le code Couleur #C800000 soit retourné intact ou un retour FALSE si ça ne correspond pas

Un peu d'aide me serait utile pour ne pas finir sans cheveu tongue roll

Merci


A+

Florent

Hors ligne

#2 Le 18/11/2017, à 18:36

Rufus T. Firefly

Re : Filtre PHP de couleur HTML

Salut,

En principe tu n'as pas besoin de vérifier. Regarde ceci, et essaye :

<label for="background-color">Choose a color for background :</label>
<input id="background-color" type="color" /> 

Tu peux copier ça dans un fichier color.html et directement l'ouvrir avec firefox.
Source : https://html5tutorial.info/html5-color.php


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#3 Le 18/11/2017, à 18:53

Ambigua

Re : Filtre PHP de couleur HTML

J'ai mis un input type color, mais il permet de saisir un code couleur...

Et par principe, je préfère toujours filtrer les infos qui entrent dans la base de données... C'est de la sécurité de base.

J'ai trouvé un modèle à améliorer, je le modifie et je le posterai ici, si j'arrive à faire ce que je veux... (ou pas )


A+

Florent

Hors ligne

#4 Le 18/11/2017, à 19:06

Rufus T. Firefly

Re : Filtre PHP de couleur HTML

Ambigua a écrit :

J'ai mis un input type color, mais il permet de saisir un code couleur...

J'ai essayé les lignes ci-dessus. Il me propose un sélecteur de couleur et je peux effectivement taper quelque chose dans une zone de saisie, mais elle n'accepte qu'une couleur comme résultat. Donc la vérification semble déjà faite.


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#5 Le 18/11/2017, à 20:00

Ambigua

Re : Filtre PHP de couleur HTML

Bon, j'ai fait une fonction, un peu tordue, mais elle marche tongue

//Couleur html
function Couleur($couleur){
	//Si le premier caractère est #
	if($couleur[0]=='#'){
		//On remplace tout ce qui n'est pas chiffre ou entre A et F par 0
		$couleur = preg_replace('/[^[a-fA-F0-9]]/', '0', $couleur);
		//au cas où il y a plus de 6 caractères
		$couleur = substr(0, 5, $couleur);
		//Ajout de zéros si besoin a droite
		$couleur = str_pad($couleur, 6, '0', STR_PAD_RIGHT);
		return '#'.$couleur;
	} else return false;
}

A+

Florent

Hors ligne