PHP perte de session avec header
Résolu
mike0379
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
mike0379 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
mike0379 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voilà je fais le truc classique d'authentification.
j'ai donc une page index.php où il faut saisir login et pwd et une autre loginForm.php où il y a le traitement.
Une fois authentifié, j'enregsitre mes variables de sessions avec session_register.
Pour finir, j'appelle la commande header pour revenir à ma page index.php.
Pb: une fois revenu à ma page index.php, les variables de sessions sont vides.
j'ai fait tout un tas de recherches mais sans succès.
Est ce une faute de programmation? Un paramètrage non fait dans le php.ini de wamp?
A noter que si dans loginForm.php, j'utilise la commande include($_SERVER['DOCUMENT_ROOT']."index.php"); au lieu de header("Location: http://" . $_SERVER['HTTP_HOST']. "/" . "index.php"); je retrouve mes variables de session!
merci de votre aide.
voici mon code:
//index.php
<?php
session_name();
session_start();
echo "login:'".$login."'";
<form method="POST" action="/phpform/loginForm.php">
<table border="0" cellpadding="1" cellspacing="0">
<tr>
<td>Identifiant : </td>
<td>
<input name="loginForm" tabindex="1" type="text"/>
</td>
</tr>
<tr>
<td>Mot de passe</td>
<td>
<input name="passwordForm" tabindex="2" type="password"/>
</td>
</tr>
<tr>
<td colspan="2" align="right">
<input name="Identification" type="submit" tabindex="3" value="Connexion"/>
</td>
</tr>
</table>
</form>
...?>
//loginForm.php
<?php
session_name();
session_start();
//fonction login() de vérification du login et du mot de passe
if (!login())
{
session_destroy();
header("Location: http://" . $_SERVER['HTTP_HOST']. "/" . "index.php");
}
else
{
$login=$_POST['loginForm'];
$password=$_POST['passwordForm'];
$id_session=session_id();
session_register("login");
session_register("password");
session_register("id_session");
header("Location: http://" . $_SERVER['HTTP_HOST']. "/" . "index.php");
}
?>
voilà je fais le truc classique d'authentification.
j'ai donc une page index.php où il faut saisir login et pwd et une autre loginForm.php où il y a le traitement.
Une fois authentifié, j'enregsitre mes variables de sessions avec session_register.
Pour finir, j'appelle la commande header pour revenir à ma page index.php.
Pb: une fois revenu à ma page index.php, les variables de sessions sont vides.
j'ai fait tout un tas de recherches mais sans succès.
Est ce une faute de programmation? Un paramètrage non fait dans le php.ini de wamp?
A noter que si dans loginForm.php, j'utilise la commande include($_SERVER['DOCUMENT_ROOT']."index.php"); au lieu de header("Location: http://" . $_SERVER['HTTP_HOST']. "/" . "index.php"); je retrouve mes variables de session!
merci de votre aide.
voici mon code:
//index.php
<?php
session_name();
session_start();
echo "login:'".$login."'";
<form method="POST" action="/phpform/loginForm.php">
<table border="0" cellpadding="1" cellspacing="0">
<tr>
<td>Identifiant : </td>
<td>
<input name="loginForm" tabindex="1" type="text"/>
</td>
</tr>
<tr>
<td>Mot de passe</td>
<td>
<input name="passwordForm" tabindex="2" type="password"/>
</td>
</tr>
<tr>
<td colspan="2" align="right">
<input name="Identification" type="submit" tabindex="3" value="Connexion"/>
</td>
</tr>
</table>
</form>
...?>
//loginForm.php
<?php
session_name();
session_start();
//fonction login() de vérification du login et du mot de passe
if (!login())
{
session_destroy();
header("Location: http://" . $_SERVER['HTTP_HOST']. "/" . "index.php");
}
else
{
$login=$_POST['loginForm'];
$password=$_POST['passwordForm'];
$id_session=session_id();
session_register("login");
session_register("password");
session_register("id_session");
header("Location: http://" . $_SERVER['HTTP_HOST']. "/" . "index.php");
}
?>
A voir également:
- PHP perte de session avec header
- Easy php - Télécharger - Divers Web & Internet
- Reinstaller windows sans perte de données - Guide
- Session invalide ou obsolète - Forum Consommation & Internet
- Www.yahoomail.com ouverture de session - Forum Yahoo mail
- Gpt header corruption ✓ - Forum Windows 10
6 réponses
Bonjour
Pour enregistrer tes variables de session, n'utilise pas session_register('variable') mais plutôt $_SESSION['variable']=valeur. session_register ne marche pas si register_globals est désactivé et justement, depuis PHP 4.2, cette directve est désactivée par défaut.
Pour enregistrer tes variables de session, n'utilise pas session_register('variable') mais plutôt $_SESSION['variable']=valeur. session_register ne marche pas si register_globals est désactivé et justement, depuis PHP 4.2, cette directve est désactivée par défaut.
Sur un site, j'ai mit session_start() en haut (parce que sinon ça ne marche pas). Et dans le script d'authentification, si le login est bon $_SESSION['pseudo'] sera égal au pseudo (login...) et si le gars veut se déconnecter la valeur de $_SESSION['pseudo'] sera nulle (donc a préciser dans le script de ne pas afficher la page si $_SESSION['pseudo'] est nulle). Et les redirections avec du javascript (location.href='ma_page.truc'). J'espère que ça a put t'aider parce que chez moi cette méthode marche super.
merci mais j'ai mis session_start() et session_register est équivalent à $_SESSION.
ensuite pour le javascript, je veux éviter d'écrire du code qui sera coté client, c'est pourquoi je préfère le gérer directement en php.
ce que je ne comprends pas c'est que sur des posts présentant du code avec header cela semble fonctionner. alors pourquoi pas moi?
je me dis que j'ai peut être oublié de modifier un paramètre dans mon php.ini ou un truc comme ca, mais je ne sais pas.
Quelqu'un a t il une idée?
ensuite pour le javascript, je veux éviter d'écrire du code qui sera coté client, c'est pourquoi je préfère le gérer directement en php.
ce que je ne comprends pas c'est que sur des posts présentant du code avec header cela semble fonctionner. alors pourquoi pas moi?
je me dis que j'ai peut être oublié de modifier un paramètre dans mon php.ini ou un truc comme ca, mais je ne sais pas.
Quelqu'un a t il une idée?
ah merci! ca fonctionne.
Utiliser session_register ou $SESSION fonctionne très bien lorsque register_globals est désactivé et lorsuq'on utilise les include.
Mais effectivement, cela ne fonctionne plus avec les headers.
J'ai donc activé register_globals et maintenant tout marche.
Merci!
Utiliser session_register ou $SESSION fonctionne très bien lorsque register_globals est désactivé et lorsuq'on utilise les include.
Mais effectivement, cela ne fonctionne plus avec les headers.
J'ai donc activé register_globals et maintenant tout marche.
Merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
J'ai donc activé register_globals
Ce qu'il ne fallait pas faire . Tu ouvres la porte à de nombreuses attaques contre ton serveur, mais bon, c'est toi qui vois...
https://www.php.net/manual/fr/security.globals.php
J'ai donc activé register_globals
Ce qu'il ne fallait pas faire . Tu ouvres la porte à de nombreuses attaques contre ton serveur, mais bon, c'est toi qui vois...
https://www.php.net/manual/fr/security.globals.php