ha ouai nan mais t'as vraiment un niveau pourri en PHP/SQL !
:) héhéhéé
bon j'explique :
il y a une fonction "isHTMLColor" qui vérifie que les couleurs envoyées sont de format "#000" ou "#000000"
ici, le script nous renvois :
Il n'y a rien à enregistrer.
<pre style="border:1px solid #c00">Array
(
[zc1] => rgb(204, 102, 0)
[zc2] => rgb(0, 204, 255)
[zc3] => rgb(204, 102, 255)
)
</pre>
soit rgb(xxx,xxx,xxx) et non #000 ou #000000
voila ou est le problème ! le format n'est pas le bon. Tu n'a pas du lire les commentaires dans le code :
// detecte les couleurs de format court #000 à #fff
// et les couleurs format long #000000 à #ffffff
return preg_match('/^#([a-f0-9]{3}){1,2}$/i',$color);
tu veux aussi supporter RGBA et RGB ?! ok pas de problème, voici les corrections :
patch de la table UTILISATEURS
#PATCH POUR LA TABLE UTILISATEUR
ALTER TABLE 'UTILISATEURS'
CHANGE 'zonecouleur1' 'zonecouleur1' VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
CHANGE 'zonecouleur2' 'zonecouleur2' VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
CHANGE 'zonecouleur3' 'zonecouleur3' VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
Remplacement de la fonction isHTMLColor par ValidCSSColor
function ValidCSSColor($color){
/*
detecte les chaines representation de couleurs au format CSS
format court #RGB
format long #RRGGBB
fonction rgb rgb(0-255, 0-255, 0-255) avec ou sans espace après les virgules
fonction rgba rgba(0-255, 0-255, 0-255, 0.0-1.0) avec ou sans espace après les virgules
sans case sensitive, #ff = #FF, rgb() = RGB()
*/
return preg_match('/^#([a-f0-9]{3}){1,2}$/i',$color)
||
preg_match('/^rgb\( ?((((\d{1,2})|(1\d{1,2})|(2[0-4]\d{1})|(25[0-5]))), ?){2}'.
'(((\d{1,2})|(1\d{1,2})|(2[0-4]\d{1})|(25[0-5]))){1} ?\)$/i', $color)
||
preg_match('/^rgba\( ?((((\d{1,2})|(1\d{1,2})|(2[0-4]\d{1})|(25[0-5]))), ?){3}'.
'((0.\d{0,8})|(1(.0)?)){1} ?\)$/i', $color);
}
un peu plus compliquée la bougresse ;) c'est pourquoi je l'avais pas mise au départ.
patcher les lignes suivantes (le reste du code ne change pas) :
// récupération des couleurs (note les paramètres GET court !)
$couleur1 = isset($_GET['zc1']) ? $_GET['zc1'] : false;
$couleur2 = isset($_GET['zc2']) ? $_GET['zc2'] : false;
$couleur3 = isset($_GET['zc3']) ? $_GET['zc3'] : false;
if(ValidCSSColor($couleur1) && ValidCSSColor($couleur2) && ValidCSSColor($couleur3))
{// si les couleurs sont valides
/* on utilise toujours sprintf pour remplir les requêtes
et on execute jamais une requête directement à la déclaration
*/
$sql = sprintf("INSERT INTO '%s' VALUES ('%s','%s','%s')",
'UTILISATEURS', $couleur1, $couleur2, $couleur3);
patcher les lignes suivantes :
<form method="GET" action="">
<h3>Indiquez trois couleurs type CSS valides</h3>
<p><label>zone couleur 1</label> <input type="text" name="zc1" maxlength="40" value="#000"/></p>
<p><label>zone couleur 2</label> <input type="text" name="zc2" maxlength="40" value="#ffffff"/></p>
<p><label>zone couleur 3</label> <input type="text" name="zc3" maxlength="40" value="rgb(0, 128, 190)"/></p>
<hr>
<p><input type="submit" value="Appliquer"/></p>
</form>