J'ai d'abord recherché ( depuis deux jours, mais il y a tellement de sujets ici ) si vous n'aviez pas répondu à une question ressemblant à la mienne, mais je n'ai pas trouvé.
Donc, je vous parle de mon problème.
Je veux établir un système de sessions pour un jeu de rôle en cours d'écriture.
Cette page login.PHP dirige le joueur vers son bureau personnel.( bureau.PHP )
Là, aucun problème, je peux récupérer par PHP, le login du connecté.
La session est donc ouverte.
Je récupère les infos concernant le perso ( avec l'aide du login ) dans une BDD, la même que celle où on a le pass et le login du perso au départ.
Tout va bien.
MAIS lorsque le joueur va cliquer sur les liens qui l'amènent soit vers le classement des joueurs, soit vers la gestion de location des terres, la session est perdue.
J'ai le message d'erreur suivant :
Notice: Undefined variable: login in c:\hochelagajpem\location.php on line 59
Donc, si je comprends bien, la variable concernant le login n'a pas suivi.
Est-ce que cela signifie que la session a été interrompue ?
Est-ce que cela signifie que la session existe toujours mais que je n'ai pas su faire suivre la variable du login ?
Ou la récupérer proprement ?
Y a-t-il une solution ?
Je vais vous copier ci-dessous les différents scripts que j'utilise, si cela peut aider à la résolution du problème.
SCRIPT de la page login.PHP :
<?
// ouverture de connexion vers mysql
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("colons"); // Sélection de la base colons
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
extract($_POST);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pass from informations where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['pass'] != $pass) {
echo '<br/><p>Iroquois ? Anglais ? Qui êtes-vous ? <br/>
Vous ne pouvez pas entrer dans Hochelaga !</p><br/>';
include('inscription.PHP'); // On met le formulaire d'identification
exit;
}
else {
session_start();
$_SESSION['login'] = 'login';
echo ' ';
include('bureau.PHP');
// ici j'ai affiché un lien pour renvoyer
// vers la page d'accueil de mon espace membres
}
}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('inscription.PHP'); // On met le formulaire d'identification
exit;
}
?>
En haut de la page classement.PHP, j'ai testé les deux solution ci-dessous :1-
<?
session_start();
?> 2-
<?
session_start();
/*
si la variable de session login n'existe pas cela siginifie que le visiteur
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
include('hochelaga.PHP');
exit;
}
?>
( PS : avec ce second session_start, qui inclue un retour à la page hochelaga.PHP, si ce n'est pas logué, if(!isset($_SESSION['login'], j'aurais normalement dû avoir un retour à la page d'accueil donc.Le fait que la page s'ouvre, mais que la variable 'login' ne soit pas reconnue, impliquerait-elle que la session est bien toujours en cours, mais que j'ai plutôt un problème de variable ?
Et alors, pourquoi lorsque je veux retourner sur le bureau, j'ai la page perdue, comme si la session est effectivement perdue alors ? )
Je précise que je n'ai AUCUNE mention de session_start sur la première page qui accueille le membre.
Car elle fonctionne apparemment sans.
ET si je mets un session_start dessus, voilà le message d'erreur que j'obtiens en haut de la page :
( comme si je tentais d'ouvrir une session alors qu'une est déjà ouverte ??? )Notice: A session had already been started - ignoring session_start() in c:\hochelagajpem\bureau.PHP on line 2
Bref, beaucoup de questions, je sais...
Mais je suis un vrai débutant en PHP, et je cherche, je cherche...