cirkooo
Messages postés35Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention26 décembre 2012 1 déc. 2010 à 02:38
@christo_59,
bonjour, désolé pour l'absence [11 mois].
Je cites: Peut- tu préciser où tu mettrais le `?.
Comme je te le disais, dans la requête sql, je n'ai plus ton code sous les yeux, mais dans une requete sql de ton script, tu ne dois pas en avoir mis "50" " 'de' requete sql" ^^, et bien, il en manquait une ou un (une quote, un guillemet) [`]. Peut être est-ce moi qui l'aie effacé par erreur, dans tous les cas, ça marche par paire, ``.
De plus, je te donnais la ligne: reponse webmaster, alors, voilà où, j'ai ajouté cette quote penché.
Repeat please again: Ligne contenant: Réponse Webmaster.
darkynounet
Messages postés22Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention21 novembre 2010 21 nov. 2010 à 14:37
bonjour, ton livre d'or m'interesse beaucoup, cependant pourrait tu m'explicité le ficher
htacces parce que pour l'instant n'importe qui peut aller dans la page d'administration :s
merci :)
En ce qui concerne la posibilité d'utiliser d'autres base de données. Etant débutant, je préfère d'abord commencer avec une seule base que plusieurs mais j'amèliorer le code en ce sens.
Pour le XHTML, c'est un point que je vais amèliorer.
@+
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 23 déc. 2007 à 20:32
Dans le doute j'ai vérifié la doc , et ils conseille égallement l'utilisation de stripslashes avant d'appeler mysql_escape string
Citation:
Note: Si magic_quotes_gpc est activée, appliquez d'abord la fonction stripslashes() à vos données. Utiliser cette fonction sur des données qui ont déjà été protégées, les protègera une deuxième fois.
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 23 déc. 2007 à 20:29
Salut malalam, il utilise déja mysql_escape_string avans l'insertion, moi je lui conseil le stripslash pour évtiter l'effet du magic quote sur les champs POST qu'il récupere,ce qui est le plus approprié puisque c'est PHP qui échappe les string, on doit donc rectifié avec la fonction php fait pour ça.Je ne disais pas de remplacé mysql_escape string par ça pour sécurisé l'insertion.
Parce que si un utilisateur poste Salut je m'appele bob.
Alors dans son code php a cause des magic_quote $message = Salut je m\'sappele bob.
Si tu y ajoute un mysql_escape string ça va donné Salut je m\\\'appele bob.
Ce qui donne un slash de trop
C'est pour quoi je lui ai dit d'utilisé stripslash si la fonction magic_quote est a ON.
Peut être ai-je mal compris ton message et ce n'est pas la que tu voulais en venir?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 déc. 2007 à 13:10
Hello,
quelques ajouts à faire : je ne dirai rien sur ce que je pense du code, il y en a des tas comme le tien, mais bon...c'est Noël...
En effet, tu as sécurisé un minimum ton code. Bien. Mais tu devrais privilégier mysql_real_escape_string() puisque ton code se destine à mysql. Et pas stripslashes() comme te le dit Yoman (ce qui n'est pas un mauvais conseil hein! C'est juste que ce n'est pas adpaté là) : mysql_real_escape_string() tient compte des spécificités de mysql, et évoluera avec cette API (si tant est qu'elle évolue...ce dont je doute fort! PDO est bien plus adaptée à la gestion des DB et à mon avis, elle se verra renforcé et mysql_* abandonnée tôt ou tard)., alors que stripslashes() ne tient compte que de PHP, qui échappe ses caractères dangereux avec un anti slash "".
J'aurais quand même bien vu la possibilité d'utiliser n'importe quelle DB avec ton livre d'or. Certes...un livre d'or, c'est un code pour débutant, et les débutants ont la plupart du temps un hébergement avec mysql (c'est le plus courant). Donc ça se tient. Mais bon, pour des évolutions futures, éventuellement...
Ton HTML n'est absolument pas XHTML strict, malgré ce que tu "annonces" dans les headers HTMl que tu balances. Un transitionnal serait plus approprié.
Voilà voilà...
Merci pour tes commentaires, j'ai pu amélioré ainsi mon code.
Pour le magic quote, il était bien à on sur mon seveur.
Pour le timestamp, je pense qu'il vaut mieux utiliser un type datetime dans la base. Ca me parait plus logique.
Il me reste plus qu'à supprimer ces "die()" pour améliorer le code.
Encore merci.
@+
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 22 déc. 2007 à 23:43
Salut,
J'ai survolé rapidement le code et j'ai quelques remarques:
Premièrement bravo , tu penses a échapper les variables avant de les inséré , c'est malheureusemnet une erreur très courrante ici, mais toi tu y a pensé ^^.
Ensuite, pour les \ Un stripslashes() suffirait, mais tu dois vérifié si magic quote est a On sur le serveur parce que sinon tu risque de stripper des slashs qui sont dans le message au départ.
if(get_magic_quotes_gpc()==1)
{
//alors on utilise stripslashes()
}
else
{
//la variable est bonne
}
Tu t'es pas foué pour la gestion des erreurs , des or die() partout c'est pas beau :(
Ton sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
Moi je crois que tu devrais simplement stocker la date en timestamp, ensuite tu en fait ce que tu veux a la sortie.
1 déc. 2010 à 02:38
bonjour, désolé pour l'absence [11 mois].
Je cites: Peut- tu préciser où tu mettrais le `?.
Comme je te le disais, dans la requête sql, je n'ai plus ton code sous les yeux, mais dans une requete sql de ton script, tu ne dois pas en avoir mis "50" " 'de' requete sql" ^^, et bien, il en manquait une ou un (une quote, un guillemet) [`]. Peut être est-ce moi qui l'aie effacé par erreur, dans tous les cas, ça marche par paire, ``.
De plus, je te donnais la ligne: reponse webmaster, alors, voilà où, j'ai ajouté cette quote penché.
Repeat please again: Ligne contenant: Réponse Webmaster.
22 nov. 2010 à 08:37
Je ne vais pas expliquer dans un commentaire, je te propose ce lien : http://www.siteduzero.com/tutoriel-3-14649-proteger-un-dossier-avec-un-htaccess.html
En espérant que cela te sera utile.
21 nov. 2010 à 14:37
htacces parce que pour l'instant n'importe qui peut aller dans la page d'administration :s
merci :)
12 janv. 2010 à 22:01
9 janv. 2010 à 21:42
Mais, il faut rajouter un guillemet penché ` dans la requete sql, à la ligne réponse webmaster, sinon erreur s'affiche.
24 déc. 2007 à 07:56
23 déc. 2007 à 23:26
MALALAM :
Le stripslashes() est utilisé que si le magic quote est on. Il supprime les \ puis je sécurise les données avec l'outil adapté à MySQL.
if (get_magic_quotes_gpc()==1) {
$message = mysql_real_escape_string(stripslashes( $_POST['message'])) ;
...
}
else{
$message = mysql_real_escape_string( $_POST['message']) ;
...
}
En ce qui concerne la posibilité d'utiliser d'autres base de données. Etant débutant, je préfère d'abord commencer avec une seule base que plusieurs mais j'amèliorer le code en ce sens.
Pour le XHTML, c'est un point que je vais amèliorer.
@+
23 déc. 2007 à 20:32
Doc: http://ca.php.net/manual/fr/function.mysql-real-escape-string.php
Citation:
Note: Si magic_quotes_gpc est activée, appliquez d'abord la fonction stripslashes() à vos données. Utiliser cette fonction sur des données qui ont déjà été protégées, les protègera une deuxième fois.
23 déc. 2007 à 20:29
Parce que si un utilisateur poste Salut je m'appele bob.
Alors dans son code php a cause des magic_quote $message = Salut je m\'sappele bob.
Si tu y ajoute un mysql_escape string ça va donné Salut je m\\\'appele bob.
Ce qui donne un slash de trop
C'est pour quoi je lui ai dit d'utilisé stripslash si la fonction magic_quote est a ON.
Peut être ai-je mal compris ton message et ce n'est pas la que tu voulais en venir?
23 déc. 2007 à 13:10
quelques ajouts à faire : je ne dirai rien sur ce que je pense du code, il y en a des tas comme le tien, mais bon...c'est Noël...
En effet, tu as sécurisé un minimum ton code. Bien. Mais tu devrais privilégier mysql_real_escape_string() puisque ton code se destine à mysql. Et pas stripslashes() comme te le dit Yoman (ce qui n'est pas un mauvais conseil hein! C'est juste que ce n'est pas adpaté là) : mysql_real_escape_string() tient compte des spécificités de mysql, et évoluera avec cette API (si tant est qu'elle évolue...ce dont je doute fort! PDO est bien plus adaptée à la gestion des DB et à mon avis, elle se verra renforcé et mysql_* abandonnée tôt ou tard)., alors que stripslashes() ne tient compte que de PHP, qui échappe ses caractères dangereux avec un anti slash "".
J'aurais quand même bien vu la possibilité d'utiliser n'importe quelle DB avec ton livre d'or. Certes...un livre d'or, c'est un code pour débutant, et les débutants ont la plupart du temps un hébergement avec mysql (c'est le plus courant). Donc ça se tient. Mais bon, pour des évolutions futures, éventuellement...
Ton HTML n'est absolument pas XHTML strict, malgré ce que tu "annonces" dans les headers HTMl que tu balances. Un transitionnal serait plus approprié.
Voilà voilà...
23 déc. 2007 à 10:42
Merci pour tes commentaires, j'ai pu amélioré ainsi mon code.
Pour le magic quote, il était bien à on sur mon seveur.
Pour le timestamp, je pense qu'il vaut mieux utiliser un type datetime dans la base. Ca me parait plus logique.
Il me reste plus qu'à supprimer ces "die()" pour améliorer le code.
Encore merci.
@+
22 déc. 2007 à 23:43
J'ai survolé rapidement le code et j'ai quelques remarques:
Premièrement bravo , tu penses a échapper les variables avant de les inséré , c'est malheureusemnet une erreur très courrante ici, mais toi tu y a pensé ^^.
Ensuite, pour les \ Un stripslashes() suffirait, mais tu dois vérifié si magic quote est a On sur le serveur parce que sinon tu risque de stripper des slashs qui sont dans le message au départ.
if(get_magic_quotes_gpc()==1)
{
//alors on utilise stripslashes()
}
else
{
//la variable est bonne
}
Tu t'es pas foué pour la gestion des erreurs , des or die() partout c'est pas beau :(
Ton sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
Moi je crois que tu devrais simplement stocker la date en timestamp, ensuite tu en fait ce que tu veux a la sortie.
@+