Les changements de pages et sessions sous easyphp

Résolu
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 - 5 mai 2006 à 16:51
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 - 9 mai 2006 à 14:37
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

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
9 mai 2006 à 11:30
Autre détail :
le session_write_close() juste avant la redirection, permet d'enregistrer les variables de sessions.
3
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
5 mai 2006 à 16:55
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.
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
5 mai 2006 à 17:02
je fais comme ceci:
<script language="javascript">
window.top.location='index2.php?pseudo=<?php echo $pseudo; ?>&h='+screen.height;
</script>
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
5 mai 2006 à 17:09
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
5 mai 2006 à 17:11
Une autre solution :

$_SESSION['user'] = $pseudo;
session_write_close();
header('Location:index2.php');
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
5 mai 2006 à 17:13
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.
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
5 mai 2006 à 17:17
ç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)
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
6 mai 2006 à 12:35
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');
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
9 mai 2006 à 10:03
ç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'].
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
9 mai 2006 à 11:06
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>
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
9 mai 2006 à 11:15
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...
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
9 mai 2006 à 11:28
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à.
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
9 mai 2006 à 11:37
effectivement, avec cela ça marche, mais tout à l'heure j'avais déjà essayer cette commande et rien ne fonctionnait! C'est assez étrange...
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
9 mai 2006 à 11:54
Cette fonction est destinée à quitter subitement le traitement d'une page (header('location:blabla')) tout en conservant les variables de sessions.
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
9 mai 2006 à 11:59
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.
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
9 mai 2006 à 14:37
ok je crois que j'ai compris.
merci de ton aide et bonne journée
David
0
Rejoignez-nous