Page 1 sur 2
Sessions, encore elle...
Posté : 30 janv. 2006, 15:48
par newbee
Bonjour à tous,
Petit problème avec mes sessions...
J'ai une page avec log&pass qui fait appel à la page "_connexion".
Dans cette page (_connexion), j'ai mis ceci :
session_start();
// ... mysql_connect etc... => connexion à la base
$identifiant=""; if(!empty($_POST["identifiant"]))
$identifiant=addslashes($_POST["identifiant"]);
$motdepasse=""; if(!empty($_POST["motdepasse"]))
$motdepasse=$_POST["motdepasse"];
$_SESSION['identifiant']=$identifiant;
$_SESSION['motdepasse']=$motdepasse;
Deja y a t-il des soucis dans ce code?
Ensuite dans une autre page je voudrais rappeller ces variables. Donc j'ai mis :
session_start();
echo $_SESSION['identifiant'];
Et la, pas de message d'erreur, mais pas d'affichage de mon echo non plus!! ou peut etre variable vide, je ne sais pas...
J'ai bien etudié les posts précédents, chercher un peu partout mais la je seche
Une petite aide siouplait?
Re: Sessions, encore elle...
Posté : 30 janv. 2006, 15:55
par zeus
Déjà, vérifie que ton code passe bien dans le if
session_start();
// ... mysql_connect etc... => connexion à la base
$identifiant="vide";
if(!empty($_POST["identifiant"])) {
$identifiant=addslashes($_POST["identifiant"]);
echo "Identifiant mémorisé";
}
$motdepasse="";
if(!empty($_POST["motdepasse"])) {
$motdepasse=$_POST["motdepasse"];
echo "Mot de passe mémorisé";
}
$_SESSION['identifiant']=$identifiant;
$_SESSION['motdepasse']=$motdepasse;
Et utilise var_dump pour vérifier ce que contiennent les variables
session_start();
var_dump($_SESSION['identifiant']);
Posté : 30 janv. 2006, 16:00
par newbee
... oki ça c'est fait... mais toujours rien

Posté : 30 janv. 2006, 16:09
par zeus
C'est à dire ?
Pas un message affiché ?
Posté : 30 janv. 2006, 16:15
par newbee
Ouh la la, que je suis fatigué!
Je n'était pas sur la bonne page!
Donc on recommence tout (désolé tout le monde qui m'as lu

):
<?
session_start();
mysql_connect("localhost", "root", "") or die("Impossible de se connecter");
mysql_select_db("nom_de_ma_bdd") or die("Impossible de selectionner la base");
$identifiant = $_POST['pseudo'];
$motdepasse = $_POST['passe'];
$resultat = mysql_query("SELECT motdepasse,redirection FROM utilisateurs WHERE identifiant='$identifiant'");
$infos = mysql_fetch_array($resultat);
$BDD_motdepasse = $infos['motdepasse'];
if(isset($BDD_motdepasse) && $BDD_motdepasse == $motdepasse)
{
$redirection = $infos['redirection'];
header("Location: $redirection");exit();
}
else
{
header("Location: bandeau_g_erreur.php");exit();
}
$_SESSION['identifiant']=$identifiant;
$_SESSION['motdepasse']=$motdepasse;
?>
Ca c'est ma page de log.
Et ca c'est ma page c'est la page ou je veux retrouver mes variables :
session_start();
var_dump($_SESSION['identifiant']);
echo $_SESSION['identifiant'];
Posté : 30 janv. 2006, 16:16
par newbee
C'est à dire ?
Pas un message affiché ?
Si! Message d'erreur :
Undefined index: identifiant... sur ma pge de récup d'info
P.S : Encore désolé pour ma bévue du 1er post (re-

)
Posté : 30 janv. 2006, 16:21
par zeus
Et si tu affiche les valeurs identifiant et motdepasse dans le 1er scripts, elles sont remplies ?
Posté : 30 janv. 2006, 16:27
par newbee
Et si tu affiche les valeurs identifiant et motdepasse dans le 1er scripts, elles sont remplies ?
- Dans le 1er script, c'est à dire dans mon premier post?
c'est la que je n'ai même pas de message d'erreur, nada, peanuts.
- Si c'est dans le 1er script posté à 15h15, je ne sais pas car cette page est une include, donc pas affichée... (c'est le bordel maintenant dans ce sujet, sorry)
Posté : 30 janv. 2006, 16:54
par zeus
Dans le 2nd, celui de 15h15
Même si page est incluse, tu devrais pouvoir afficher des trucs
Posté : 30 janv. 2006, 17:15
par lecobra_20
SAlut tiens moi je te conseil cette methode et cette syntaxe
<?php
/* Traitement du formaulaire pour l'accès à l'espace membre */
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['membre_login']) && !empty($_POST['membre_login'])) && (isset($_POST['membre_pass']) && !empty($_POST['membre_pass']))) {
// On se connecte à la base de données
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('gestion', $base);
// requête pour la déclaration de la session id
$query='SELECT * FROM gestion_membre WHERE membre_login="'.addslashes($_POST['membre_login']).'" AND membre_pass_md5="'.md5(addslashes($_POST['membre_pass'])).'"';
$result=@mysql_query($query);
$row=@mysql_fetch_array($result);
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM gestion_membre WHERE membre_login="'.addslashes($_POST['membre_login']).'" AND membre_pass_md5="'.md5(addslashes($_POST['membre_pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
// On libère l'espace mémoire et on ferme la base de données
mysql_free_result($req);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1){
// On déclare des lors les variables de sessions pour la suite du programme
session_start(); // variable de session
$_SESSION['membre_login'] = $_POST['membre_login']; // Variable de session contenant le pseudo du membre
$_SESSION['membre_id'] = $row[0]; // Variable de session contenant l'id du membre
header('Location: membre.php'); // On redirige le membre sur la page membre
exit(); // On sort
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
//$erreur = 'Compte non reconnu.';
// On affiche une boîte de dialogue informant la personne que les coordonnées saisies dans le formulaire sont incorrecte
echo '<SCRIPT language="JavaScript" type="text/javascript">
window.alert("Compte non reconnu dans la base de données");
</script>';
}
// sinon, alors la, il y a un gros problème
else {
// Déclaration du message d'erreur
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
// Declaration du message d'erreur
$erreur = 'Au moins un des champs est vide.';
}
}
/* Fin traitement du formaulaire pour l'accees a l'espace membre */
?>
Posté : 30 janv. 2006, 17:18
par lecobra_20
J'ai oublié voici le formulaire
<form action="index.php" method="post" name="FormMemo">
Nom :
</td>
<td>
<input type="text" name="membre_login" value="<?php if (isset($_POST['membre_login'])) echo stripslashes(htmlentities(trim($_POST['membre_login']))); ?>">
</td>
</tr>
<tr>
<td>
Passe :
</td>
<td>
<input type="password" name="membre_pass" value="<?php if (isset($_POST['membre_pass'])) echo stripslashes(htmlentities(trim($_POST['membre_pass']))); ?>">
</td>
</tr>
<tr>
<td colspan="2">
<center><br>
<input type="submit" name="connexion" value="Connexion" onClick="javascript: return saisieOK(document.FormMemo);"></center>
</form>
Et si tu veux ensuite accéder aux varialbes de sessions il suffit de taper :
exemple
echo" le speudo et $_SESSION['membre_login'])
Posté : 30 janv. 2006, 17:22
par newbee
Désolé, je ne vois pas comment affiché des trucs dans cette page.
Elle est appelé par la validation de mon formulaire de log. Je fait un echo dans cette page est rien du tout...
En même temps j'essaie la réponse de
lecobra20, je vous tient au courant

Posté : 31 janv. 2006, 10:05
par newbee
Re-bonjour tout les gens
lecobra_20 stp peut tu me dire quelle est la table & les champs associés à ton exemple?
La page de traitement du formulaire s'appelle t-elle index.php, ou est-ce une autre page à mettre en include?
(Comme vous le voyez, je suis vraiment un Newbee...)
Posté : 31 janv. 2006, 10:51
par didgar
Bonjour,
Ca ne me parait pas trop logique les deux requêtes ci-dessous ! La seconde sert à vérifier le nbre de user qui ont le même couple login/mot de passe ?
// requête pour la déclaration de la session id
$query='SELECT * FROM gestion_membre WHERE membre_login="'.addslashes($_POST['membre_login']).'" AND membre_pass_md5="'.md5(addslashes($_POST['membre_pass'])).'"';
$result=@mysql_query($query);
$row=@mysql_fetch_array($result);
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM gestion_membre WHERE membre_login="'.addslashes($_POST['membre_login']).'" AND membre_pass_md5="'.md5(addslashes($_POST['membre_pass'])).'"';
Autant interdire dans phpmyadmin la possibilité d'avoir x enregistements qui ont le même couple login/mot_de_passe en mettant une clé unique
sur le couple login/mot_de_passe justement !!!
Ca évite bien des problèmes ...
A+
Didier
Posté : 31 janv. 2006, 11:01
par newbee
ok, bonne info.
...mais ça ne résoud pas mon problème
Quelqu'un pour m'aider?
la session marche bien si je ne mets pas de variable, mais pas si je veux en recuperer une à partir de mon formulaire