Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2620 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  toujours un souci de session

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

toujours un souci de session

n°824035
sebounet62
Posté le 16-08-2004 à 11:19:18  profilanswer
 

Bonjour à tous,
 
J'ai déjà demandé une aide à ce sujet mais toutes les modifs qui m'ont été conseillées ont été faites mais sans succès.
L'identification se déroule correctement a priori, c'est à partir de l'affichage de la page accueil que cela se complique, a priori elle ne détecte pas la session ouverte et n'affiche pas les variables de session. J'ai donc "Bonjour" au lieu de "Bonjour Seb".  
Je vous colle mes scripts et j'attends vos remarques.
Pour ma part je n'ai pas l'impression que ce soit un souci PHP mais plutot un souci de config soit dans php.ini ou ailleurs, Qu'en pensez-vous ?
 
page index.php
 
<Html>
<Head>
<title>Bienvenue sur Planvac v1.0</title>
<link rel="stylesheet" href="pages/vac.css" type="text/css">
 
<script language="javascript">
function popup01(){
window.open("/pages/lostmdp.html","new","width=280,height=112,resize=no,scrollbars=no" )
}
</script>
</Head>
<body vlink="#FFFFFF">
<p align="left"><img src="Images/logo.jpg" width="140"></p><p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center"><table width="70%" border="2" bordercolor="#FFFF00"><tr><td>&nbsp;<p align='center'><b><font size='5'>Bienvenue sur Planvac <font size="3">v</font>1.0</font></b></p>&nbsp;</td></tr></table>
<p>&nbsp;</p>
<p align="center"><table width="70%" border="2" bordercolor="#FFFF00">
<tr><td>
&nbsp;
<form action="login.php" method="post" name="form">
<div align="center"><table width="40%" border="0" cellspacing="1" cellpadding="3">
  <tr>  
    <td><div align="right"><b>Login :</b></div></td>
    <td><div align="left"><input type="text" name="login" value="" size="15" maxlength="15"></div></td>
  </tr>
<tr>  
    <td>
</td>
  </tr>
  <tr>  
    <td><div align="right"><b>Mot de passe :</b></div></td>
    <td><div align="left"><input type="password" name="pass" value="" size="15" maxlength="15"></div></td>
  </tr>
<tr>  
<td colspan="2">
</td>
</tr>
  <tr>  
<td colspan="2"><p align="center"><input type="submit" value="Connexion" name="send"></p></td>
</tr>
<tr>  
    <td>
</td>
  </tr>
<tr>
<td colspan="2"><p>&nbsp;</p>
    <p align="center"><font size="2"><u><a href="javascript:popup01()">Oubli de mot de passe, cliquez ici</a></u></font></p>
</td>
  </tr>
</table></div>
</form>
</td></tr></table>
</body>
</Html>
 
page login.php
 
<?
$login=$_POST['login'];  
$pass=$_POST['pass'];  
 
$db = mysql_connect ('host', 'user', 'pass');  
mysql_select_db ('vac_db',$db);  
 
if($login=='' || $pass=='')  
    {  
  include('index.php'); // On inclus le formulaire d'identification
  echo '<p align="center"><font size="4" color="red"><b>Vous avez oublié de remplir un champ.</b></font></p>';  
    exit;  
    }  
 
// on recupère le password de la table qui correspond au login du visiteur  
$sql = 'SELECT id,pass,prénom FROM profils WHERE login=\''.$login.'\'';  
$req = mysql_query($sql,$db) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
 
$data = mysql_fetch_array($req);  
if($data['pass'] != $pass)  
    {  
    include('index.php'); // On inclus le formulaire d'identification
  echo '<p align="center"><font size="4" color="red"><b>Mauvais login / password. Merci de recommencer</b></font></p>';  
    exit;  
    }  
else  
    {
  session_start();  
    session_register('login');
 
  header("Location: pages/accueil.php" );  
    }  
?>
 
page accueil.php
 
<?
session_start();
$_SESSION['login'] = $_POST['login'];
if(!isset($_SESSION['login']))
{
header('Location: /.../index.php');
exit();
}
?>
<Html>
<Head>
<title>Accueil Planvac v1.0</title>
<link rel="stylesheet" href="vac.css" type="text/css">
</head>
<body>
<?
echo "Bonjour {$_SESSION['login']}";
?>
</body>
</html>
 
 
Donc pour vous aider, index.php est le formulaire d'authentification qui inclut login.php afin d'analyser la saisie. Puis si l'utilisateur est connu de la base alors la page accueil devrait s'afficher.
 
Merci d'avance

mood
Publicité
Posté le 16-08-2004 à 11:19:18  profilanswer
 

n°824166
BenJ9002
Posté le 16-08-2004 à 13:33:51  profilanswer
 

Le problème est dans accueil.php :
 

Code :
  1. session_start();
  2. $_SESSION['login'] = $_POST['login'];

 
 
Tu redefinis ta variable de session login en lui atribuant la valeur de $_POST['login'] qui dans ton cas est une chaine vide (ou NULL). Vires la ligne pour voir ...


Message édité par BenJ9002 le 16-08-2004 à 13:34:24
n°824216
sebounet62
Posté le 16-08-2004 à 14:16:18  profilanswer
 

<?
session_start();
if(!isset($_SESSION['login']))
{
header('Location: /.../index.php');
exit();
}
?>
<Html>
<Head>
<title>Accueil Planvac v1.0</title>
<link rel="stylesheet" href="vac.css" type="text/css">
</head>
<body>
<?
echo "Bonjour {$_SESSION['login']}";
?>
</body>
</html>
 
voilà le nouveau code de ma page accueil.php
 
En fait a priori elle execute le code en tout début de page càd qu'elle me recharge la page index.php.
J'ai vraiment l'impression de ne pas avoir de session ouverte.
 
Mais merci qd même pour ton aide

n°824231
BenJ9002
Posté le 16-08-2004 à 14:33:22  profilanswer
 

J'avais pas lu le code de la page login.php ...  
 
Vérifies que tu travailles pas avec register_globals à off, et d'autre part la fonction session_register est plus trop appropriée ... http://fr2.php.net/session_register  
Des fois, c'est interessant la doc php ...

Citation :

Si vous utilisez $_SESSION (ou $HTTP_SESSION_VARS), n'utilisez pas session_register()


 
Remplace

Code :
  1. session_register('login');


par

Code :
  1. $_SESSION['login']=$login;


Message édité par BenJ9002 le 16-08-2004 à 14:34:24
n°824248
sebounet62
Posté le 16-08-2004 à 14:44:07  profilanswer
 

MERCCIIIIIIIIII !!!
Ca y est tu me sauves de la dépression nerveuse.
 
De quel doc Php tu parles ? je suis allé sur PhpDébutant mais a priori le site est pas très à jour.
J'ai acheté un bouquin Php avec Dreamweaver malheureusement dans la boite ou je suis ce n'est pas Dreamweaver MX alors je programme en code direct.
Donc si au passage tu as quelques liens à me passer, ca serait encore + sympa même si avec ce que tu as déjà fait pour moi c plus que suffisant.
 
Encore merci
:jap:

n°824262
RiderCrazy
Posté le 16-08-2004 à 14:58:20  profilanswer
 

sebounet62 a écrit :

MERCCIIIIIIIIII !!!
Ca y est tu me sauves de la dépression nerveuse.
 
De quel doc Php tu parles ? je suis allé sur PhpDébutant mais a priori le site est pas très à jour.
J'ai acheté un bouquin Php avec Dreamweaver malheureusement dans la boite ou je suis ce n'est pas Dreamweaver MX alors je programme en code direct.
Donc si au passage tu as quelques liens à me passer, ca serait encore + sympa même si avec ce que tu as déjà fait pour moi c plus que suffisant.
 
Encore merci
:jap:

Pour les docs:
http://www.nexen.net/docs/php/annotee/manuel_tocd.php
http://www.php.net/manual/fr/
 
En cherchant un peu, tu dervrais même trouver des versions offline (html, pdf, ps, chm)

n°824315
sebounet62
Posté le 16-08-2004 à 16:22:41  profilanswer
 

Ok merci.
 
J'ai maintenant un autre souci. Si je suis chiant dites le. LOL
J'ai consulté les 2 sites que vous m'avez fourni mais sans grand succès dans mes recherches.
J'ai lu qu'une session est ouverte jusqu'à fermeture de l'explorateur. Est ce que les variables le sont elles aussi?
Je m'explique, dans ma page login.php j'effectue ma requete et demande la récupération des infos suivantes: id,nom,prénom,type.
J'ai réussi à afficher le prénom sur la page Accueil.
J'ai maintenant une page qui est un lien se situant sur cette page accueil et qui est réservé au type "Admin".
J'ai donc insérer ce code en tête de page:
 
<?
session_start();
if($_SESSION['type']!='admin')
{
echo('Vous n'avez pas les autorisations pour accéder à cette page.')
header('Location: accueil.php');
exit();
}
?>
 
Mais cela ne fonctionne pas.
Je pense que je dois déclarer cette variable dans ma page accueil à cause du register_global_off mais comment SVP ?
 
Merci encore.


Message édité par sebounet62 le 16-08-2004 à 16:23:39
n°824328
BenJ9002
Posté le 16-08-2004 à 16:33:32  profilanswer
 

Ben avec un test par exemple sur le pseudo lors de ton login :

Code :
  1. if ($login=='admin') { $_SESSION['type']='admin'; }


 
Les variables de session, c'est comme les variables normales, faut les initialiser avec quelque chose dedans pour que y ait quelque chose dedans justement ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  toujours un souci de session

 

Sujets relatifs
PHP, Dreamweaver, et session -debutant-Problème de session
Forcer la creation d'une sessionsouci pour un petit *.reg
Session et domainefaire un "su" dans une session SSH
léger souci avec mon forumproblème récupération infos dans une session
Probleme de session sous JspSession et php (5)
Plus de sujets relatifs à : toujours un souci de session


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR