[résolu] Session : problème de passage d'une page à l'autre

bonsoir !

J’expose mon problème ! Sur mon site, j’ai espace réservé pour les membres mais lorsque j’essaie de connecter un membre, il se connecte mais si celui-ci se ballade sur le site, mon formulaire de connexion se réaffiche à la place du nom du membres qui est connecté !

Voici mon script :
[fixed]

<?php //connexion au serveur include("CBase.php");
// on initialise une session
session_start();

if(!isset($_POST["send"]))
{   //si le formulaire n'est pas envoyé, on l'affiche :

?>

Login :

		Mot de passe :
		<input type="submit" name="send" value="Log In" style="margin-bottom:5%;"/><br/>
		<a href="index.php?page=formulaire.php" class="lien">S'inscrire[/url]
	</form>
<?php } else { $membre=addslashes($_POST["mlogin"]); $passw= $_POST["mpass"]; $sql="select mdp from inscription where mail='$membre'"; $req=mysql_query($sql) or die('Erreur SQL'); $res=mysql_fetch_array($req); if($passw!=NULL && $res['mdp']==$passw) { $_SESSION['membre']=$membre; if(isset($_SESSION["membre"])) { $sql="select mdp from inscription where mail='".$_SESSION["membre"]."'"; $req=mysql_query($sql) or die('Erreur SQL'); $res=mysql_fetch_array($req); echo"Bienvenue ".$_SESSION["membre"]."
"; echo ' Déconnexion[/url]'; } else { echo"Vous devez être logué pour accèder à l'espace membres ![/url]"; } } else { echo"Mauvais mot de passe ou login[/url]"; } } ?>[/fixed]

Que faut-il que je fasse ?

Par contre, si je réactualise la page le formulaire ne réactualise pas car le formulaire a déjà été envoyé !
Mon problème c’est juste kan je change de page !

J’ajouterais même que cette page est appelé par lien par l’intermédiaire de cette page :

[cpp]INDEX.PHP

Accueil phototh&egrave;que de Jean Robert
[b]ScreenShot'Agence : Ventes de photos [/b]
Votre panier[/url] Suivi de commande[/url] Votre compte[/url]
<?php include("MenuG.php");?>
<?php if($_GET['page'] != NULL) include($_GET['page']); else include("accueil.htm"); ?>
  <div class="footer">Mise à jour le 16/03/2005</div>

[/cpp]

Personne ne comprend mon probleme ?

il faut starter ta session avant toute autre sortie !

<?php session_start(); ?> ....

c’est à dire je comprends ce que tu me dis ?

quand tu fait un “session_start()”, il faut le faire tout en haut de ta page. à la première ligne en somme.

ici

<?php //connexion au serveur include("CBase.php");
// on initialise une session
session_start(); 

ici tu a déjà

etc..

qui empèchent de créer la session. Il ne faut rien écrire avant de faire ton session_start() !

http://ch.php.net/session_start

çà ne me résoud pas le problème car dès que j’appuie sur un bouton, mon formulaire réapparait alors que logiquement le membre est connecté !

ben il réapparait parce que la session n’a pas pu se créer !
puisque tu la défini mal.

Donc il n’est logiquement PAS connecté.

Ou alors mon code est mauvais ?
Donc, il me réaffiche le formulaire !
C’est peut-être une condition sur un if qui merde !!!

Si c’est un if qui merde je vois po !
Par contre, j’ai fait un phpinfo() pour voir la variable mlogin qui me sert pour ouvrir une session, dès que je tente de me connecter la variable est là, dès que je change de page, elle disparaît !

Je sèche là !

j’ai même pas encore regardé le reste du code.

t’arrive pas à admettre qu’il faut starter la session au début ?

si j’ai lu, et je suis vaincu ! J’ai changé mon code dès que tu me l’as dit et que j’ai lu le manuel !

tu affiche le formulaire si il n’a pas été envoyé.

une fois que tu est logué, et que tu retourne sur la page, même si tu est logué, le formulaire n’a pas été envoyé, donc il va forcement l’afficher.

change plutôt pour

if(!isset($_SESSION[‘membre’])) {
// form
} else {
// user
}

il vérifie si la variable mebre de la session n’est pas encore défini.

tu comprend =

J’ai compris et essayé mais 2 variables, qui se situe dans le else (mlogin et mlogin), lui sont inconnues.
De plus, maintenant il n’affiche plus du tout le formulaire car les 2 erreurs apparaissent des les début !

Voici le code modifié :

[cpp]

<?php // on initialise une session session_start(); //connexion au serveur include("CBase.php"); ?>
<?php //if(!isset($_POST["send"])) if(!isset($_SESSION['membre'])) { //si le formulaire n'est pas envoyé, on l'affiche : ?> Login :
Mot de passe :
<input type="submit" name="send" value="Log In" style="margin-bottom:5%;"/><br/>
<a href="index.php?page=formulaire.php" class="lien">S'inscrire[/url]
</form>
<?php } else { $membre=addslashes($_POST["mlogin"]); $passw= $_POST["mpass"]; $sql="select mdp from inscription where mail='$membre'"; $req=mysql_query($sql) or die('Erreur SQL'); $res=mysql_fetch_array($req); if($passw!=NULL && $res['mdp']==$passw) { $_SESSION['membre']=$membre; if(isset($_SESSION["membre"])) { $sql="select mdp from inscription where mail='".$_SESSION["membre"]."'"; $req=mysql_query($sql) or die('Erreur SQL'); $res=mysql_fetch_array($req); echo"Bienvenue ".$_SESSION["membre"]."
"; echo ' Déconnexion[/url]'; } else { echo"Vous devez être logué pour accèder à l'espace membres ![/url]"; } } else { echo"Mauvais mot de passe ou login[/url]"; } } ?>
[/cpp]

c’est très foulli… :confused:

tu a 3 états dans ta page

  • formulaire
  • vérification du form
  • utilisateur logué

il te suffit de 1 “if”, 1 “elseif” et de “else”

SI le form est envoyé
// vérification
SINON SI l’utilisateur est logué
// espace membre
SINON
// Formulaire de log
FIN SI

Merci il me semble que çà marche maintenant !
Je m’étais compliqué la vie !
J’ai plus qu’à gérér les cas d’erreurs et c’est bon !
Grand merci à toi NeqO

:oui: :jap: