Mahcry |
Le 03/05/2006 à 15:22 |
|
|
Bonjour a tous, alors voila je vous expose mon problème, je suis en train de creer un forum pour les besoins de mon boulot. Bien entendu j'utilise donc un système de login avec mot de passe qui doit permettre de poster de nouveaux message sur le forum. Le développement se passe bien et lors de mes tests en local, je n'ai eu aucun problème.
j'ai pour cela utiliser des sessions pour conserver les données dont j'ai besoin afin d'enregistrer les messages. et voila ô grand mystère, lorsque j'ai voulu tester en ligne le forum, mes variables de session changent automatiquement.
je m'explique, si l'utilisateur n°1 poste un message, le message est enregistré comme ayant été posté par l'utilisateur n°5 (c'est un exemple hein, c'est pas toujours 1 et 5).
Bref, je me demande d'ou peut bien venir le problème, ou si quelqu'un à déja rencontré la meme chose.
Merci d'avance pour vos réponses. |
Glougloute |
Le 03/05/2006 à 19:23 |
|
 I love VIC |
Je ne suis pas vraiment un pro, mais je pense que si tu nous donnes pas beaucoup d'infos on pourra pas t'aider. Vérifie tes variables etc.. c'est tout ce que je peux te dire ! -- Je vous aiderai dans la mesure du possible ;) |
Mahcry |
Le 04/05/2006 à 09:45 |
|
|
bonjour, je vais vous mettre mon code, on verra si cela peut aider le code qui verifie si le login et le mdp sont correctes
<?php
// On démarre la session
session_start();
$loginOK = false;
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
extract($_POST);
include ('connexion.php');
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT * FROM utilisateurs WHERE login = '".addslashes($login)."'";
$req = mysql_query($sql) or die('Erreur SQL :
'.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($password == $data['mdp'])
{
$loginOK = true;
$_SESSION['login'] = $data['login'];
$_SESSION['id_user'] = $data['id_user'];
$_SESSION['droit'] = $data['droit'];
$_SESSION['nom_user'] = $data['nom_user'];
$_SESSION['prenom_user'] = $data['prenom_user'];
$_SESSION['statut'] = $data['statut'];
$urlprecedent = $_POST['urlprecedent'];
print ("<script>
window.location.href='".$urlprecedent."';
</script>");
}
else {
$urlprecedent = $_POST['urlprecedent'];
print ("<script>
alert ('Identification incorrecte, veuillez vérifier vos identifiants');
window.location.href='".$urlprecedent."';
</script>");
}
}
}
// Si le login a été validé on met les données en sessions
?>
le code pour poster un nouveau message <form name="NewMessage">
Poster un nouveau message<br/>
<textarea name="nouveauMessage" ROWS="4" COLS="50"></textarea>
<input type="hidden" name="urlprecedent" value="<?php echo $_SERVER['REQUEST_URI'];?>">
<input type="hidden" name="id_sujet" value="<?php echo $id_sujet;?>">
<input type="hidden" name="id_user" value="<? echo $_SESSION['id_user']; ?>">
<p><div align="center"><input type="button" value="Poster" onClick="FonctionMessage()"/></p>
</form> et enfin, le code qui enregistre le message
<?php
// On appelle la session
session_start();
$urlprecedent = $_POST['urlprecedent'];
//Test s'il estconnecté
if (isset($_SESSION['id_user']) )
{
php include('connexion.php')
if (isset($_POST['id_sujet']) AND isset($_POST['nouveauMessage']))
{
$message = htmlentities(addslashes($_POST['nouveauMessage']));
$id_user = $_SESSION['id_user'];
$id_sujet = $_POST['id_sujet'];
$insertionMessage = "INSERT INTO `messages` ( `message`,`date_message`,`heure_message`,`id_sujet`,`id_user` )
VALUES('$message' , NOW( ) ,CURTIME( ), '$id_sujet', '$id_user')";
mysql_query($insertionMessage) or die(mysql_error());
mysql_close(); // Déconnexion de MySQL
print ("<script>
alert ('Votre message à bien été enregistré ');
window.location.href='".$urlprecedent."';
</script>");
}
else
{
print ("<script>
alert ('Une erreur est survenue, veuillez recommencer');
window.location.href='".$urlprecedent."';
</script>");
}
}
else
{
print ("<script>
alert ('Vous devez au préalable vous identifier afin de pouvoir laisser un message sur le forum');
window.location.href='".$urlprecedent."';
</script>");
}
?>
Voila voila, merci pour l'aide que vous pourrez m'apporter  |
Salva |
Le 07/05/2006 à 19:55 |
|
|
Bonjour,
je ne suis pas spécialiste en Php mais as tu vérifié que le problème ne vient pas de ton hébergeur? Car je crois que suivant les hébergeurs, certains n'active pas toutes les possibilités pour des questions de sécurité entre autre.
Bon courage. |
Anthony |
Le 07/05/2006 à 22:46 |
|
 Admin |
Salut,
je ne vois pas d'où pourrait venir le problème, tes utilisateurs se connectent bien à partir d'ordinateurs différents ? pense à bien supprimer une éventuelle session avant d'en créer une autre dans ta page de connexion.
a + -- 
|
Mahcry |
Le 09/05/2006 à 14:43 |
|
|
Bonjour a tous, et bien voila, c'était une variable qui faisait la méchante, elle était utilisé ailleurs et donc cassé un peu le code
Bref en changeant son nom, le problème est résolu. merci a ceux qui ont pris le temps de me répondre et de m'aider bonne journée a tous |