Sessions
parousky
Messages postés
325
Date d'inscription
Statut
Membre
Dernière intervention
-
enqueteactualite Messages postés 76 Statut Membre -
enqueteactualite Messages postés 76 Statut Membre -
Bonjour, j'aimerai utiliser le système des sessions pour qu'un visiteur soit toujours connecté en passant de la page 1 à la page 2 s'il s'est connecté sur la page 1. En gros, dans la page 2, si le visiteur est connecté, je fais disparaître les zones de texte où il indique son identifiant et son mot de passe, et s'il n'est pas encore connecté, ces zones de textes restent en place.
Alors pour ce qui est de la connexion sur la page 1, voilà la code :
Et en gros, dans la page 2, voilà ce que j'ai marqué :
Mais lorsque je lance la page 2, ça me dit que 'pseudo' n'est pas définie. Alors comment faire ?
Alors pour ce qui est de la connexion sur la page 1, voilà la code :
<?php
if ( !empty($_GET["pseudo"]) && !empty($_GET["passe"]) ) {
$pseudo = $_GET["pseudo"];
$passe = $_GET["passe"];
$req = $bdd->prepare('SELECT * FROM utilisateur WHERE pseudo = :pseudo AND passe = :passe');
$req->execute(array(
'pseudo' => $pseudo,
'passe' => $passe));
$reponse = $req->fetch();
if(!$reponse)
{
?>
<p class="mdpouid" id="mdpouidjs">
Le mot de passe et/ou l identifiant est incorrect
</p>
<?php
}
else
{
session_start();
$_SESSION['pseudo'] = $pseudo;
$_SESSION['passe'] = $passe;
?>
<p class="connectreussie">
Bienvenue <?php echo $_SESSION['pseudo'];
?>
</p>
<SCRIPT language="Javascript">
EffaceC();
</SCRIPT>
<?php
}
}
?>
Et en gros, dans la page 2, voilà ce que j'ai marqué :
<?php>
session_start();
?>
<?php
if($_SESSION['pseudo'] AND $_SESSION['passe'])
{
echo "Vous êtes connecté";
}
else
{
echo "Vous devez être connecté pour accéder à vos informations personnelles. </br>
Pour cela, rentrez votre pseudo et votre mot de passe en haut à droite de la page.</br>
Si vous n'avez pas encore de compte, vous devez vous inscrire.";
}
?>
Mais lorsque je lance la page 2, ça me dit que 'pseudo' n'est pas définie. Alors comment faire ?
A voir également:
- Sessions
- Vous ne pouvez pas creer plusieurs sessions instagram - Guide
- Problèmes avec les sessions (phpsessid)... - Forum PHP
- Un history.go(-1) avec sessions - Forum Programmation
- Variables de sessions chez 1and1 - Forum Hébergement
- Problème ouverture de sessions d'un serveur ✓ - Forum Windows serveur
8 réponses
Bonjour,
Commence par mettre
Merci de mettre "Résolu" quand le problème est réglé!
La connaissance c'est comme la confiture: moins on en a et plus on l'étale.
Commence par mettre
session_start();en première ligne de tous tes scripts.
Merci de mettre "Résolu" quand le problème est réglé!
La connaissance c'est comme la confiture: moins on en a et plus on l'étale.
Mais en ce qui concerne ces deux pages, j'ai bien mis session_start();. Mais dans la page 1, je dois aussi mettre session_start(); en première ligne ? Parce que je devrais démarrer la session uniquement si le pseudo et le mot de passe entré sont corrects, non ?
Salut,
Ta condition pour vérifier si l'utilisateur est connecté provoque une erreur si la session n'est pas créée :
-> Lire si la valeur de $_SESSION['pseudo'] est vrai et si la valeur $_SESSION['passe'] est vrai alors...
En effet si l'utilisateur ne s'est pas connecté, la variable $_SESSION['pseudo'] n'existe pas et toute utilisation de cette variable provoque une erreur indiquant que la variable n'existe pas : CQFD
Si tu veux tester l'existence de la variable $_SESSION['pseudo'], utilise l'instruction isset() ou empty() :
-> Lire si $_SESSION['pseudo'] existe et $_SESSION['passe'] existe alors...
Bonne journée
Ta condition pour vérifier si l'utilisateur est connecté provoque une erreur si la session n'est pas créée :
if($_SESSION['pseudo'] AND $_SESSION['passe'])
-> Lire si la valeur de $_SESSION['pseudo'] est vrai et si la valeur $_SESSION['passe'] est vrai alors...
En effet si l'utilisateur ne s'est pas connecté, la variable $_SESSION['pseudo'] n'existe pas et toute utilisation de cette variable provoque une erreur indiquant que la variable n'existe pas : CQFD
Si tu veux tester l'existence de la variable $_SESSION['pseudo'], utilise l'instruction isset() ou empty() :
if(isset($_SESSION['pseudo']) && isset($_SESSION['passe']))
-> Lire si $_SESSION['pseudo'] existe et $_SESSION['passe'] existe alors...
Bonne journée
Déjà en début de script à la première ligne tu dois vérifi si une session existe pas pour faire ton contrôle sur le formulaire :
et en page 2 tu dois vérifié aussi que la session existe :
si en page 2 ça fonctionne pas alors que ta session existé en page 1 alors essai d'enlever session_start en page 2
if ( !isset($_SESSION['pseudo']) && !isset($_SESSION['passe']) && !empty($_GET["pseudo"]) && !empty($_GET["passe"]) ) {
et en page 2 tu dois vérifié aussi que la session existe :
if(isset($_SESSION['pseudo']) AND isset($_SESSION['passe']))
si en page 2 ça fonctionne pas alors que ta session existé en page 1 alors essai d'enlever session_start en page 2
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je ne sais pas, je n'y arrive pas. J'ai tenté un code très simple, et ça ne marche pas :
<?php
session_start();
?>
<?php
if(isset($_SESSION['pseudo']) AND isset($_SESSION['passe']))
{
echo "Connecté";
}
else
{
echo "Pas connecté";
}
?>
Ceci est le code de la page 2. Et ça me met constamment "Pas connecté", alors que je me suis connecté sur la page 1...
<?php
session_start();
?>
<?php
if(isset($_SESSION['pseudo']) AND isset($_SESSION['passe']))
{
echo "Connecté";
}
else
{
echo "Pas connecté";
}
?>
Ceci est le code de la page 2. Et ça me met constamment "Pas connecté", alors que je me suis connecté sur la page 1...
Le problème vient peut être de la connexion du coup.
Commence par vérifier le bon fonctionnement de tes sessions avec un code encore plus simple :
pagetest1.php
pagetest2.php
Commence par vérifier le bon fonctionnement de tes sessions avec un code encore plus simple :
pagetest1.php
<?php session_start(); $_SESSION['pseudo'] = 'toto'; $_SESSION['passe'] = 'secret'; ?> <p>Session créée : </p> <pre> <?php var_dump($_SESSION); ?> </pre>
pagetest2.php
<?php session_start(); ?> <p>Session actuelle : </p> <pre> <?php var_dump($_SESSION); ?> </pre>
Hello,
j'ai vérifié ton code et je vois aucune erreur donc à mon sens tu as plutôt un problème de droit d'écriture en local dans le dossier tmp.
ferme ton programme, EasyPHP ? Wamp ? et ouvre le
en cliquant droit dessus puis en faisant : Exécuter en tant qu'Administrateur
Si ça marche toujours pas alors tu dois regarder dans php.ini la ligne "session.save_path" elle doit contenir le chemin du dossier tmp, si y'a rien tu peux mettre quelque chose comme : session.save_path = "c:/wamp/tmp" en aillant créer le dossier bien sur.
j'ai vérifié ton code et je vois aucune erreur donc à mon sens tu as plutôt un problème de droit d'écriture en local dans le dossier tmp.
ferme ton programme, EasyPHP ? Wamp ? et ouvre le
en cliquant droit dessus puis en faisant : Exécuter en tant qu'Administrateur
Si ça marche toujours pas alors tu dois regarder dans php.ini la ligne "session.save_path" elle doit contenir le chemin du dossier tmp, si y'a rien tu peux mettre quelque chose comme : session.save_path = "c:/wamp/tmp" en aillant créer le dossier bien sur.
Désolé, mais que veux-tu dire par tmp ? Est-ce qu'il doit avoir ce nom là ? Et je dois seulement créer un dossier vide qui s'appelle tmp dans WAMP ?
Et dans php.ini, il y a :
session.save_path = "N;/path"
et aussi :
session.save_path = "N;MODE;/path"
Alors lequel modifier, et est-ce que je dois le modifier ?
Et dans php.ini, il y a :
session.save_path = "N;/path"
et aussi :
session.save_path = "N;MODE;/path"
Alors lequel modifier, et est-ce que je dois le modifier ?