kelkun789 Posté(e) le 25 mai 2005 Partager Posté(e) le 25 mai 2005 Bonjour, j'ai mis en ligne mon site depuis peu mais j'ai un plus que très gros problème : il y a une section membres, des news, et des commentaires de news. Seul certains membres peuvent ajouter des articles. Ceci est défini par une entrée dans la base de donnée (0 pour les membres, 1 pour les redacteurs, 2 pour les modérateurs et 3 pour les administrateurs). Donc j'ai des membres qui ajoutent des news et leur pseudo est ajouté automatiquement grace aux sessions. Mais quand les membres veulent ajouter des commentaires il y a un problème : le pseudo sont confondus. (par exemple x23 est confondu avec f65). Si quelqu'un peut m'aider ... mon code pour ajouter les commentaires : Merci <? $titre = htmlentities(addslashes($_POST['titre'])); $contenu = htmlentities(addslashes($_POST['contenu'])); $id = htmlentities(addslashes($_GET['id'])); $date = time(); if (isset($id)) { if (isset($_SESSION['rang'])) { if ($_SESSION['rang'] == 0 OR $_SESSION['rang'] == 1 OR $_SESSION['rang'] == 2 OR $_SESSION['rang'] == 3) { if (preg_match("!^[0-9]{1,}$!", $id)) { if (!empty($_POST['contenu'])) { include("admin/connection.php"); $pseudo = $_SESSION['pseudo']; $signature = $_SESSION['signature']; $avatar = $_SESSION['avatar']; $rang = $_SESSION['rang']; mysql_query("INSERT INTO news_commentaires VALUES('', '$id', '$titre', '$contenu', '$pseudo', '$signature', '$date', '$avatar', '$rang')"); echo 'Votre commentaire a bien été ajouté. <a href="aff_news.php?id='. $id. '">Retour</a>'; } else { echo '<div class="membres">Vous n\'avez pas rempli le champ "contenu".</div>'; } } } else { echo '<div class="membres">Vous devez vous logé pour ajouter un commentaire.</div>'; } } else { echo '<div class="membres">Vous devez vous logé ajouter un commentaire.</div>'; } } else { echo '<div class="membres">C\'est pas bien de fouiller dans les répertoires !!!</div>'; } ?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Magnus63 Posté(e) le 26 mai 2005 Partager Posté(e) le 26 mai 2005 peut etre en mettant tes variables dans la requete sous la forme ' ".$toto." ' Ca reste une supposition.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
afbilou Posté(e) le 26 mai 2005 Partager Posté(e) le 26 mai 2005 Je ne me suis pas penché sur ton probleme de confondationnementaisonnage de session mais j'ai relevé quelques trucs a revoir dans ton code. Pour déterminer si une chaine de caracteres est de type numerique il y a la fonction is_numeric qui sera bien plus rapide et moins gourmande que l'utilisation d'une expression reguliere. preg_match("!^[0-9]{1,}$!", $id) http://fr3.php.net/manual/fr/function.is-numeric.php Tu peux remplacer : $_SESSION['rang'] == 0 OR $_SESSION['rang'] == 1 OR $_SESSION['rang'] == 2 OR $_SESSION['rang'] == 3 par l'utilisation de in_array : http://fr3.php.net/manual/fr/function.in-array.php if (in_array($_SESSION['rang'] , array(0 , 1 , 2 , 3))) Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 26 mai 2005 Partager Posté(e) le 26 mai 2005 Une petite remarque sur le titre: je suis pas sur que "confondation", ce soit francais. J'aurais mis "confusion" à ta place Lien vers le commentaire Partager sur d’autres sites More sharing options...
kelkun789 Posté(e) le 26 mai 2005 Auteur Partager Posté(e) le 26 mai 2005 peut etre en mettant tes variables dans la requete sous la forme ' ".$toto." 'Ca reste une supposition.... Oui mais si elles sont dans une variables $toto par exemple cette variable ne se transmettra pas automatiquement à moins que tu veuille dire que sur chaque page où j'ai besoin de mes sessions je met la session dans une autre variable. afbilou >>>Je connaissai pas . NiTrOuS >>> Oui mais je savais pas comment on disait alors j'ai pris ce qui me passait par la tête Lien vers le commentaire Partager sur d’autres sites More sharing options...
wicked Posté(e) le 26 mai 2005 Partager Posté(e) le 26 mai 2005 fait un print_r des variables de session et tu devrais vite voir ce qui ne va pas... Lien vers le commentaire Partager sur d’autres sites More sharing options...
kelkun789 Posté(e) le 27 mai 2005 Auteur Partager Posté(e) le 27 mai 2005 bah quand je fais le print_r sur la variable $_SESSION['pseudo'] ça m'affiche le pseudo jusqu'a ce que ça se confonde. Je viens à peu près de voir d'où vient le problème sur mes pages : mon pseudo est x et quand je vais sur la page liste_previews.php il y a une preview ajoutée par y et c'est à partir de ce moment là que le pseudo change mais je vois vraiment pas d'où ça peut venir. Je met les codes de liste_previews.php : <? include("admin/connection.php"); $requete = mysql_query("SELECT * FROM previews ORDER BY id DESC"); echo '<h1>Previews :</h1>'; while ($affichage = mysql_fetch_array($requete)) { $id = $affichage['ID']; $support = $affichage['support']; $titre = $affichage['titre']; $pseudo = $affichage['pseudo']; echo '<img src="images/'. $support .'"> <a href="aff_previews.php?id='. $id .'">'. $titre .'</a> Par '. $pseudo .''; } ?> et de login.php (c'est un petit menu à droite où il y a écris son pseudo ...) <? if ($_SESSION['rang'] == 0 OR $_SESSION['rang'] == 1 OR $_SESSION['rang'] == 2 OR $_SESSION['rang'] == 3) { $pseudo = stripslashes($_SESSION['pseudo']); $avatar = $_SESSION['avatar']; echo 'Bienvenue '. $pseudo .'<br /><br /> <img src="images/avatar/'. $avatar .'.gif"><br /><br /> <a href="modif_membre_info.php">Modifier mon compte</a><br /> <a href="deconnection.php">Me déconnecter</a><br /><br />'; if ($_SESSION['rang'] == 1 OR $_SESSION['rang'] == 2 OR $_SESSION['rang'] == 3) { echo 'Mes droits :<br />'; if ($_SESSION['rang'] == 1) { echo '<a href="choix_article.php">Ajouter un article</a><br /><br />'; } elseif ($_SESSION['rang'] == 2) { echo '<a href="choix_article.php">Ajouter un article</a><br /><br />'; } elseif ($_SESSION['rang'] == 3) { echo '<a href="choix_article.php">Ajouter un article</a><br />'; echo '<a href="panneau_de_configuration.php">Panneau de configuration</a><br /><br />'; } } } else { echo 'Vous devez vous logé pour accéder à cette page'; } ?> si quelqu'un a une idée qu'il n'hésite pas Lien vers le commentaire Partager sur d’autres sites More sharing options...
wicked Posté(e) le 27 mai 2005 Partager Posté(e) le 27 mai 2005 hm... Register_globals on ou off ? sinon c'est simple, dans le doute change le nom de la variable $posteur sur liste_previews.php et $monpseudo sur login.php Lien vers le commentaire Partager sur d’autres sites More sharing options...
an0nyme Posté(e) le 28 mai 2005 Partager Posté(e) le 28 mai 2005 tu peux poster le code te ton formulaire de login stp? sinon ,essaye le changement de nom come dit plus haut Lien vers le commentaire Partager sur d’autres sites More sharing options...
kelkun789 Posté(e) le 28 mai 2005 Auteur Partager Posté(e) le 28 mai 2005 le code de valid_connection.php : <? if (isset($_POST['pseudo']) AND isset($_POST['pass'])) { if (!empty($_POST['pseudo']) AND !empty($_POST['pass'])) { include("admin/connection.php"); //Variables : pseudo et mot de passe $pseudo = addslashes($_POST['pseudo']); $pass = addslashes($_POST['pass']); //Authentification $requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'") or die(mysql_error()); $authentification = mysql_fetch_array($requete); //ID du membre $id_membre = $authentification['ID']; //CORRESPONDANCE RANG : //0 : membre //1 : redacteur //2 : modérateur //3 : administrateur if ($pseudo == $authentification['pseudo'] AND $pass == $authentification['mot_de_passe']) { //SESSION : Pseudo $_SESSION['rang'] = $authentification['rang']; $_SESSION['pseudo'] = $pseudo; $_SESSION['signature'] = $authentification['signature']; $_SESSION['rang'] = $authentification['rang']; $_SESSION['avatar'] = $authentification['avatar']; echo 'Bienvenue '. $pseudo .'. Votre ID est '. $id_membre .''; } else { echo 'Pseudo ou mot de passe incorrecte'; } } else { echo 'Vous n\'avez pas remplis tout les champs'; } } else { echo 'C\'est pas bien de se balader dans les répertoire comme ça !!!;-D'; } ?> et j'essai tout de suite de changer le nom des variables Lien vers le commentaire Partager sur d’autres sites More sharing options...
wicked Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 Et je te conseil vivement de vérifier que REGISTER_GLOBALS est OFF Lien vers le commentaire Partager sur d’autres sites More sharing options...
kelkun789 Posté(e) le 29 mai 2005 Auteur Partager Posté(e) le 29 mai 2005 c'est quoi REGISTER_GLOBALS ??? si c'est dans php.ini je peux pas y accéder (suis sur free). Sinon j'ai changer le nom de mes variables et c'est bon. Un grand merci à tous !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
wicked Posté(e) le 29 mai 2005 Partager Posté(e) le 29 mai 2005 register_globals = off çà t'oblige à utiliser la syntaxe $_POST["variable"] par exemple plutot que $variable. Et c'était çà le problème dans ton cas, car visiblement ils sont à on. Donc quand tu fais $_SESSION["pseudo"] ou $_POST["pseudo"] ou $pseudo c'est en fait une seule et même variable, d'où la "confondation" C'est en effet dans php.ini que çà se passe mais je pense que tu peux les desactiver via un script placé à la racine de ton site... demande à google moi je ne sais pas j'ai la chance de bosser sur des vrais serveurs en full access Lien vers le commentaire Partager sur d’autres sites More sharing options...
kelkun789 Posté(e) le 29 mai 2005 Auteur Partager Posté(e) le 29 mai 2005 ok merci beaucoup pour l'information. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.