FAIRE UN LIVRE D'OR AVEC PHP LE PLUS FACILEMENT POSSIBLE
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015
-
10 avril 2007 à 12:05
kiki9741
Messages postés9Date d'inscriptionlundi 10 juillet 2006StatutMembreDernière intervention 4 juillet 2007
-
18 avril 2007 à 11:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
foreach($mots_bannis as $mot)
{
/* si on trouve un des mots bannis dans le message,
* on passe la variable $message_ok à FALSE
*/
if( strpos($_POST['message'], $mot) != FALSE )$message_ok = FALSE ;
}
// etc ...
Quand pensez-vous ?
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 10 avril 2007 à 12:05
Comme d'hab pour ce genre de source plusieurs erreurs basiques...
Le second couple mysql_connect()/mysql_select() est inutile
-------------------------------------------------
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
{
Le htmlentities doit se faire à l'affichage et non à l'insertion... les données ne sont pas échappées avant l'insertion permettant des sql injection...
mysql_query('INSERT INTO livreor VALUES(\'\', \''.mysql_real_escape_string($_POST['pseudo']).'\', \''.mysql_real_escape_string($_POST['message']).'\')');
le premier mysql_close() est à virer... .. .
----------------------------------------
le second couple connect/select est à virer... ta requête SELECT n'est pas optimisée... le * est inutile vu que tu sais de quels champs tu as besoin...
$result = mysql_query('SELECT pseudo,message FROM livreor ORDER BY ID DESC LIMIT 0,10');
mysql_close();
- aucune gestion des erreurs
- pas de possibilité d'éditer ou de supprimer un message (ça implique une authentification)
- manque éventuellement un champs mail pour les posteurs
- pas de possibilité de voir les messages précédant ceux affichés (ou alors faut intégrer un garbage collector)
18 avril 2007 à 11:34
Le livre d'or risque de recevoir un certain nombre de message à vocation publicitaire ...
Avant de valider l'insertion dans la bdd, pourquoi ne pas faire une petite série de contrôle :
$message_ok = TRUE ;
$mots_bannis = array("www, "http"", ".com", ".fr"); // etc ...
foreach($mots_bannis as $mot)
{
/* si on trouve un des mots bannis dans le message,
* on passe la variable $message_ok à FALSE
*/
if( strpos($_POST['message'], $mot) != FALSE )$message_ok = FALSE ;
}
// etc ...
Quand pensez-vous ?
10 avril 2007 à 12:05
Le second couple mysql_connect()/mysql_select() est inutile
-------------------------------------------------
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
{
===>
if(isset($_POST['pseudo']) && !empty($_POST['pseudo']) && isset($_POST['message']) && !empty($_POST['message']))
{
---------------------------------------
Le htmlentities doit se faire à l'affichage et non à l'insertion... les données ne sont pas échappées avant l'insertion permettant des sql injection...
mysql_query('INSERT INTO livreor VALUES(\'\', \''.mysql_real_escape_string($_POST['pseudo']).'\', \''.mysql_real_escape_string($_POST['message']).'\')');
le premier mysql_close() est à virer... .. .
----------------------------------------
le second couple connect/select est à virer... ta requête SELECT n'est pas optimisée... le * est inutile vu que tu sais de quels champs tu as besoin...
$result = mysql_query('SELECT pseudo,message FROM livreor ORDER BY ID DESC LIMIT 0,10');
mysql_close();
while(false !($msg mysql_fetch_array($result)))
echo '
'.htmlentities($msg['pseudo']).' : '.nl2br(htmlentities($msg['message'])).'
';
--------------------------------------------------
A regretter :
- aucune gestion des erreurs
- pas de possibilité d'éditer ou de supprimer un message (ça implique une authentification)
- manque éventuellement un champs mail pour les posteurs
- pas de possibilité de voir les messages précédant ceux affichés (ou alors faut intégrer un garbage collector)
4/10
@ tchaOo°