probleme de session

Eléphanteau du PHP | 26 Messages

06 mars 2006, 18:26

bonjour j'ai un problème avec la mise en place d'une session
j'ai une page qui permet de rentrer un login et un mot de passe et j'envoi cela vers une page pour verifier que mon utilisateur existe. si oui je voudrais ouvrir une autre page et cé la que ca coince. voila mon code :

voila ma premiere page de log : index.php

Code : Tout sélectionner

<?php session_start(); ?> <html> <head> <title>Identification</title> </head> <center> <title>Connexion au site</title> <h1> Identification</h1> </head> <body> <form method="post" action="veriflogin.php"> <table border="0" width="400" align="center"> <tr> <td width="200"><b>Vôtre login</b></td> <td width="200"> <input name="user_name" type="text"> </td> </tr> <tr> <td width="200"><b>Vôtre mot de passe<b></td> <td width="200"> <input type="password" name="password"> </td> </tr> <tr> <td colspan="2"> <input type="submit" name="submit" value="login"> </td> </tr> </table> </form> </body> </html>


ensuite jarrive sur la page veriflogin.php

Code : Tout sélectionner

<?php session_start(); $user_name = $_POST['user_name']; $_SESSION['user_name'] = $user_name; $password = $_POST['password']; $_SESSION['password'] = $password; ?> <html> <body> <?php $user = "root"; $host = "localhost"; $password=""; $database="useraccount"; $connection = mysql_connect ($host,$user,$password) or die(mysql_error()); $db= mysql_select_db ($database,$connection ) or die("selection de la base de données impossible"); $req="select user_name, password from valid_user where user_name = '$user_name'"; $result = mysql_query ($req) or die ("execution de la requete impossible"); $ligne = mysql_fetch_array($result) ; if ($ligne == "") { echo "<FONT SIZE='8' color='#ff0000'><B> Cette utilisateur n'existe pas </font></b>"; include ('index.php'); } else { extract($ligne); if ($password == $password ) { include('pageprinc.php'); } else { echo " <FONT SIZE='8' color='#ff0000'><B> Echec identification </font></b>"; include ('index.php'); } } ?> </body> </html>

et j'obtiens le message d'erreur suivant :
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\local\pageprinc.php on line 4

Mammouth du PHP | 1967 Messages

06 mars 2006, 18:30

le problème viens sans doute de l'espace qu'il y a avant ta balise php dans ta page principale

Remplace
Code:

<?php
session_start();
?>
par
<?php 
session_start(); 
?> 
Pense à nous indiquer la ligne qui fait défaut, on ne peux pas la deviner
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

HD
Mammouth du PHP | 1181 Messages

06 mars 2006, 18:31

l'erreur se trouve dans pageprinc.php... dont on n a pas le code !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 26 Messages

06 mars 2006, 18:33

voila pageprinc.php
<?php
session_start();
?>
<html>
<head>
</head>
<frameset rows="20%,80%">
     <frame src="titre.html" name="haut">
          <frameset cols="20%,80%">
                    <frame src="menu.php" name="droite" >
                    <frame src="fiche.html"name="gauche">
          </frameset>
          <noframes>
              votre navigateur n\'affivche pas les cadres.<BR>
              < A href="menu.html">menu</A>
          </noframes>
</frameset>
</html>

Mammouth du PHP | 1967 Messages

06 mars 2006, 18:35

si la ligne 4 est bien la ligne qui contient la balise <html>

l'erreur n'est pas logique du tout est-ce bien la totalité du code ????

Pourquoi ouvrir la session si ce n'est pour rien y ajouter/lire ???
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 26 Messages

06 mars 2006, 18:39

maintenant ca me mais cette erreur :
Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\local\pageprinc.php on line 2

HD
Mammouth du PHP | 1181 Messages

06 mars 2006, 18:45

puisque pageprinc.php est inclue dans index.php, il ne faut ouvrir la session une deuxieme fois
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 26 Messages

06 mars 2006, 18:55

meme on ouvrant pas de session ca ne marche pas.

je viens de modifier ma page veriflogin.php
<?php 
$user_name = $_POST['user_name']; 
$password = $_POST['password']; 
    $user = "root"; 
    $host = "localhost"; 
    $password=""; 
    $database="useraccount"; 
    $connection = mysql_connect ($host,$user,$password) 
    or die(mysql_error()); 
    $db= mysql_select_db ($database,$connection ) 
    or die("selection de la base de données impossible"); 
    $req="select user_name, password from valid_user where user_name = '$user_name' and password = '$password'"; 
    $result = mysql_query ($req) 
                or die ("execution de la requete impossible"); 
    $ligne =  mysql_num_rows($result) ; 
    if($ligne>0) {          
        $_SESSION['user_name'] = $user_name; 
        $_SESSION['password'] = $password; 
        session_start(); 
        header("Location: pageprinc.php"); 
    } 
    else { 
           echo "  <FONT SIZE='8' color='#ff0000'><B> Echec identification </font></b>"; 
            header("Location: index.php");
    } 
?> 
et en enlevant l'ouverture de session dans pageprinc.php

j'obtiens ce message d'errreur :
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\local\veriflogin.php:24) in c:\program files\easyphp1-8\www\local\veriflogin.php on line 25

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 mars 2006, 19:04

Il ne faut rien envoyer dans le flux html avant un header... pas de echo, pas de tag html, pas d'espace ou de retour à la ligne au début du fichier...

du coup ça :
echo "  <FONT SIZE='8' color='#ff0000'><B> Echec identification </font></b>"; 
header("Location: index.php"); 
ben ça marche pas ;)

C'est sur ta page index qu'il faut indiquer qu'il y a eu une erreur... un truc du genre
header("Location: index.php&login=error"); // sans le echo avant :)

// et dans la page index :
if($_GET['login']=='error') {
  echo "  <FONT SIZE='8' color='#ff0000'><B> Echec identification </font></b>"; 
}