LIVRE D'OR (PHP/MYSQL)

cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008 - 22 déc. 2007 à 23:43
cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 décembre 2012 - 1 déc. 2010 à 02:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45160-livre-d-or-php-mysql

cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 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.
Utilisateur anonyme
22 nov. 2010 à 08:37
Bonjour,

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.
darkynounet Messages postés 22 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 21 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 :)
Utilisateur anonyme
12 janv. 2010 à 22:01
Je suis content que mes sources te servent. Peux-tu préciser où tu mettrais le ` ? Merci d'avance.
cirkooo Messages postés 35 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 26 décembre 2012
9 janv. 2010 à 21:42
Cool, ça marche.
Mais, il faut rajouter un guillemet penché ` dans la requete sql, à la ligne réponse webmaster, sinon erreur s'affiche.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 déc. 2007 à 07:56
Oui oui j pensais addslashes() lol désolé.
Utilisateur anonyme
23 déc. 2007 à 23:26
Bonjour,

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.

@+
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Derniè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

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.
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Derniè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és 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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à...
Utilisateur anonyme
23 déc. 2007 à 10:42
Salut,

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és 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Derniè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.

@+
Rejoignez-nous