Problème programmation forum PHP

Résolu/Fermé
pascal208 Messages postés 105 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 mars 2022 - 25 août 2005 à 20:31
 kmoulzim - 23 oct. 2006 à 18:25
Bonjour
J'ai programmé un petit forum pour mon site web où les gens à qui j'ai donné un mot de passe peuvent laisser un message. Le problème c'est que quand il y a une apostrophe dans le message, l'insertion dans la base de données SQL ne marche pas en ligne. Et quand je teste le script sur mon PC ça marche. J'envoie une partie de mon script. Merci pour vos idées.
Cordialement
Pascal
/***************************************/
session_start(); //Démarrage de session

...

//Acquisition des variables de session
$id=$_SESSION['id'];
$mdp=$_SESSION['mdp'];

if(isset($_REQUEST['note']))
{
$_SESSION['note'] = $_REQUEST['note'];
}
$note=$_SESSION['note'];

//Si on reconnaît les identifiant et mot de passe
if($id == "..." and $mdp == "...")

{
echo '
<div align="right"><a href="forum.php">Retour</a></div>
<h1>Ecrire un message</h1>

<form method="post" action="post.php">
<p><b>Message :</b></p>
<textarea name="note" cols="50" rows="5" wrap="soft"></textarea>
<br />
<input type="submit" value="Envoi du message">
</form>
';

mysql_connect(SERVEUR, NOM, PASSE); //Connexion au serveur
mysql_select_db(BASE) //Ouverture de la base de données
or die("Ouverture base impossible");

//Si le champ note a bien été rempli
if($note <> "")
{
$note = str_replace("'", "\\'", $note); //Permet de gérer l'affichage des apostrophes
mysql_query("INSERT INTO forum(nom, date, note) VALUES('$id', SYSDATE(), '$note') ")
or die("Envoi impossible");
$_SESSION['note'] = ""; //Remise à zéro de la variable de la session
echo "Message envoyé !<br />";
}

//Si le champ note n'a pas été rempli
else
{
echo "Remplis la rubrique!";
}

}

//Si on ne reconnaît pas les identifiant et mot de passe
else
{
echo "Désolé tu n'as pas l'autorisation de voir le contenu de cette page<br /><br />";
}
A voir également:

3 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
25 août 2005 à 20:56
Salut,
Cela vient certainement de la valeur du magic_quotes_runtime.
Vérifie avec phpinfo() sur tes 2 serveurs.
Regarde du coté des fonctions PHP :
- addslashes() : ajoute des \ devant les '
- stripslashes() : supprimer les \
- get_magic_quotes_runtime() : est-ce que php ajoute des \ devant les ' ?
Un petit lien qui traite du sujet.
http://ccazajus.free.fr/2WEB/a1_apostrophe.php

A+, Crabs
0
pascal208 Messages postés 105 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 mars 2022 3
25 août 2005 à 21:50
En effet j'ai remarqué que la valeur de magic_quotes_gpc() est à OFF sur mon PC (easyphp) et à ON sur mon serveur (free)
Donc j'ai remplacé
$note = str_replace("'", "\\'", $note);
par:
if ( get_magic_quotes_gpc() )
$note = stripslashes($note);

mais cette fois ça ne marche ni sur mon PC ni sur mon serveur!
(ça continue à marcher quand il n'y a pas d'apostrophe)
merci pour vos idées
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
25 août 2005 à 21:53
Ne pas oublier de faire le addslashes() avant d'utiliser la chaine dans une
requête sql...

A+, crabs
0
pascal208 Messages postés 105 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 mars 2022 3
25 août 2005 à 22:05
ça marche nickel en ajoutant le addslashes();
merci Crabs !
0
bonjour
j'ai fait il ya un an un site pour mon association www.association-taourirt.com ,,,,, comme je recois trop d'emails sur ma boite j'ai voulu fair eun forum de discution sur ce site mais pour la deuxieme fois je vois qu'il ya un intrus de publicité qui s'affiche sur la premiere page de ce forum soit sous forme page html la premiere fois soit comme image jpg cette fois, j'ai essayé de refaire encore pour la troisieme fois ce forum qui m'a demandé trop de temps encore le temps que j'ai pas et top aujourd'hui meme chose encore, j'en ai marre l'image s'appelle cyber raider un truc turk qui insulte des pays et que ça n'a rien avoir avec mon site qui est pour un but humanitaire.
aidez moi svp pour resoudre ce probleme qui m'epuise trop.
merci infiniment
kamal
0