probleme de session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de session

par Ryle » 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>"; 
}


par aude_1603 » 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

par HD » 06 mars 2006, 18:45

puisque pageprinc.php est inclue dans index.php, il ne faut ouvrir la session une deuxieme fois

par aude_1603 » 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

par Spols » 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 ???

par aude_1603 » 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>

par HD » 06 mars 2006, 18:31

l'erreur se trouve dans pageprinc.php... dont on n a pas le code !

par Spols » 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

probleme de session

par aude_1603 » 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