Les changements de pages et sessions sous easyphp [Résolu]

Signaler
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006
-
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006
-
Salut, alors mon easyphp c'est le 1.8
lorsque je clique sur 'se connecter' (qui est dans index.php), je fais $_SESSION['user']=$pseudo et je renvoie sur index2.php?pseudo=$pseudo
dans index2.php, je fais $_SESSION['pseudo']=$_GET['pseudo']; et après je vérifie comme ceci:
if($_SESSION['user']==$_SESSION['pseudo']){
...blabla
}
mais la il ne rentre pas dans la boucle, et en faisant des echo, j'ai vu que $_SESSION['user'] n'existait pas dans index2.php

16 réponses

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Autre détail :
le session_write_close() juste avant la redirection, permet d'enregistrer les variables de sessions.
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Salut

Et comment tu le rediriges sur index2.php ? C'est peut être la que la transmission de la valeur ne se fait pas ou mal.
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

je fais comme ceci:
<script language="javascript">
window.top.location='index2.php?pseudo=<?php echo $pseudo; ?>&h='+screen.height;
</script>
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
ta variable user est enregistré comme variable de session. Il n'est pas nessecaire de la transmettre dans l'url. un simple SESSION['user'] la recuperera dans index2.php
.
Il faut commencer cependant ton fichier php par une instruction session_start(). Ce doit être la première ligne de code de ton fichier.
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Une autre solution :

$_SESSION['user'] = $pseudo;
session_write_close();
header('Location:index2.php');
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
attention cette solution ne fonctionne que sur un retour POST vers le fichier index.php si tu n'as pas commencer à écrire dans le head de ton fichier.
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

ça veut dire quoi ça fonctionne sur un retour POST? sinon j'ai fait juste avant un setcookie, mais je ne sait pas si le setcookie ecrit dans le header (je pense que si mais je suis pas sûr)
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Salut,

Un retour POST : la page s'appelle elle même par la méthode POST.

1) la page, index.php par exemple, s'affiche pour demander les identifiants. Elle contient un formulaire dont l'action est de rappeler la page elle même par la méthode POST :

<form method="post" action="<?=$_SERVER['PHP_SELF']?>">

2) L'utilisateur saisit ses données personnelles puis clique sur le bouton submit()
3) La page est envoyée au serveur, et sa partie serveur (php) verifie que les identifiants sont corrects.
4) la page revient vers l'utilisateur (retour POST), pour afficher confirmation ou redemander les identifiants en cas d'erreur. Si les identifiants sont bons alors la page qui vient de se rappeler redirige l'utilisateur vers index2.php dans ton exemple (partie sécurisée du site) :

header('Location:index2.php');
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

ça ne marche toujours pas. pourtant c'est bete, je fais dans mon index $_SESSION['user]=$pseudo. puis, avant que je fasse la redirection, je fais un echo de $_SESSION['user'], et la il m'affiche bien le pseudo. Par contre, une fois la redirection faite, il me dit undefined index:user lorsque je fais un echo de $_SESSION['user'].
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Damned ! Un exemple Viiiiite !!!

Fichier index.php :

<?php
if ( !session_start()) die ("Session non activ&eacute;e");

$Erreur = false;
if ( $Methode == 'POST' ) {

$loginOK = false;
$Nom = isset($_POST['login']) ? $_POST['login'] : "";
$Mdp = isset($_POST['password']) ? $_POST['password'] : "";

if ( $Nom && $Mdp ) { $Requete sprintf("SELECT Mdp FROM Membres WHERE Nom %s", ProtegerVariable($Nom));
$Reponse = mysql_query($Requete) or die('Erreur SQL :
'.mysql_error());
if (mysql_num_rows($Reponse) > 0) {
$Utilisateur = mysql_fetch_assoc($Reponse);
if (md5($Mdp) == $Utilisateur['Mdp'])
if ( isset($_SESSION['Nom']) ) {
$Erreur = true;
$MsgErr = "Quelqu'un est d&eacute;j&agrave; connect&eacute; sous le nom de : ".$_SESSION['Nom'];
} else
$loginOK = true;
}
}

if ( $loginOK ) {
$_SESSION['Nom'] = $Nom;
session_write_close();
header('Location:Bonjour.php');
} else
$Erreur = true;
}
?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
<table border="0" width="400" align="center">
----, Votre nom de login </td>
,

----

Votre mot de passe,
,

----

,

<?
if ( $Erreur )
echo '----
Une erreur est survenue, veuillez r&eacute;essayer !, ';
if (isset($MsgErr) )
echo \"----
$MsgErr, \";
?>

</form>
</td></tr></table>

</html>

fichier Bonoujr.php :

<?
if ( !session_start() || !isset($_SESSION['Nom']) ) header('Location:index.php');
?>
<html>

<head>
<meta http-equiv ="Content-Type" content="text/html; charset=utf-8" />
</head>

Bienvenue dans la partie privee du site

</html>
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

j'ai compris pour cela, mais le probleme c'est que dans le fichier bonjour.php (enfin son équivalent avec mon code), moi il me dit que $_SESSION['nom'] n'existe pas!!! Et je veux le récupérer...
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Il faut mettre session_start() au début de chaque fichier qui va utiliser des variables de session et verifier que cette instruction s'est bien déroulée.
Ton problème vient peut être de là.
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

effectivement, avec cela ça marche, mais tout à l'heure j'avais déjà essayer cette commande et rien ne fonctionnait! C'est assez étrange...
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Cette fonction est destinée à quitter subitement le traitement d'une page (header('location:blabla')) tout en conservant les variables de sessions.
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
Si tu oublies de le faire avant la redirection les variables sont perdues parce que le traitement du fichier ne va pas jusqu'au bout et l'instruction session_write_close() qui est executée normalement automatiquement à la fin du traitement n'est pas réalisée. Voili voilou.
Messages postés
214
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
23 juin 2006

ok je crois que j'ai compris.
merci de ton aide et bonne journée
David