Page 1 sur 1

Undefined index

Posté : 04 août 2006, 05:44
par bruninho
Bonjour,

j'ai un script qui teste l'existence d'un login/password dans une table. Il fonctionne parfaitement, j'affecte alors mon $_SESSION avec le login. J'en vérifie le contenu, c'est OK.

A l'issue, je veux donner l'accès complet au site, et j'utilise la commande header pour afficher la 1ère "vraie" page du site. Mais dès que j'arrive sur cette page appelée par header, et bien que faisant immédiatement "session_start()" je constate que j'ai perdu le contenu de mon $_SESSION, pourtant bel et bien affecté dans le script qui a contrôlé le login. J'ai alors le message "Undefined index login ...".

Auriez vous une idée ? Merci de vos réponses.

Posté : 04 août 2006, 08:59
par leakcim51
Salut.

Pourrais tu mettre un petit bout de code (celui où tu rentre ta variable session login et le header, etc)

Merci

Posté : 04 août 2006, 12:51
par bruninho
Le problème rencontré n'est plus le même qu'à l'origine. J'ai maitenant le message suivant lorsque s'affiche la page issue du header :

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\bm_new.php:5) in c:\program files\easyphp1-8\www\bm_club.php on line 3

la ligne 3 correspond au session_start()

Le message suivant donne le script php qui appelle la page où se trouve le warning.

Posté : 04 août 2006, 12:58
par bruninho
Voici donc le php qui vérifie login et password et lance une autre page par le header :
<?php

// Verifiation du login et password

// On démarre la session
session_start();
$_SESSION['bmlogin'] = 0;
$loginOK = false;

// On effectue les traitements que si les infos ont été bien postées
if ( isset($_POST) && (!empty($_POST['bmlogin'])) && (!empty($_POST['bmpass'])) )
  {
     extract($_POST);

// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');

// on sélectionne la base
mysql_select_db('mabase',$db); 

  // On va chercher le mot de passe afférent à ce login
  $sql = "SELECT * FROM membre WHERE membre_login = '".$_POST['bmlogin']."';";

  $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
 
  // On vérifie que l'utilisateur existe bien
  if (mysql_num_rows($req) > 0) {
     $data = mysql_fetch_assoc($req);
   
    // On vérifie que son mot de passe est correct
    if ($bmpass == $data['membre_passwd']) {
      $loginOK = true;
    }
  }
}

// Si le login a été validé on met les données en sessions
if ($loginOK) {
  
  $_SESSION['bmlogin'] = $data['membre_login'];
 
  // a ce stade, la variable $_SESSION est bien chargée

  header("Location: accueil.php");
  
}
else {
  
  echo '<div align="center"><b><font face="verdana" size="1" color="red">Login incorrect ...</font></b></div>';

}
?>
Jusque là, ça va ! $_SESSION est bien chargée juste avant le "header", si je fais un echo, elle contient bien le login que j'ai saisi.

Posté : 04 août 2006, 13:35
par bruninho
La page accueil.php ne donne pas le warning (et donc tout va bien) si c'est une page "simple".

Par contre, si accueil.php est une page avec des pseudo frames, là, j'ai le "warning". J'entends par pseudo frames la volonté de ne faire bouger que le centre de la page, les colonnes de gauche et de droite n'évoluant pas (menus)

Que faire pour enlever ce warning ?

Posté : 04 août 2006, 13:57
par mere-teresa
Pour enlever Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\bm_new.php:5) in c:\program files\easyphp1-8\www\bm_club.php on line 3 il va falloir mettre le header avant toute sortie (espace, caractère, echo, balise HTML) et donc peut-être repenser ton if.else

Posté : 04 août 2006, 13:58
par bruninho
Merci bien de cette réponse, je pense que je vais pouvoir résoudre ;)