IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

transmission variables avec header


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 48
    Points : 32
    Points
    32
    Par défaut transmission variables avec header
    Bonjour à tous !

    voilà mon problème :
    je suis en train de faire un stage, et là je dois débuguer du code php.

    La page index.php propose un formulaire de connexion tout bete avec method="POST" et action="index.php"
    Ensuite un test est effectué d'apres une fonction présente dans une page.
    Pour l'instant tout va bien.

    Mais là le probleme arrive : si le test est ok, une redirection est effectuée. Mais dans la page de destination, la variable de session n'est plus reconnue.

    Pour plus de clarté, voici les bouts de code :

    dans index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php
    session_start();
     
    include_once("include/database.php");
    if (array_key_exists('login', $_POST))
    { 
    	if (dbAuthUser($_POST['user'], $_POST['pwd']))
    	{ 
    		header("Location:search.php");
    	}
    	else header("Location:index.php");
    }
    else
    {
    print "<html>";
    print "<header>";
    print "<title> Heudiabib </title>";
    print "</header>";
    print "<body>";
    print "<center>";
    print "<FORM NAME=\"usersAdd\" ACTION=\"index.php\" METHOD=\"POST\">";
    print '      <fieldset>';
    print '       <legend>Login</legend>';
     print '        <input type="hidden" name="id" value="welcome" />';
     print '       <input type="hidden" name="do" value="login" />';
     print '      <label>';
     print '          <span>Username</span>';
     print '          <input type="text" name="user" value="" class="edit" />';
     print '        </label><br />';
     print '        <label>';
     print '          <span>Password</span>';
     print '          <input type="password" name="pwd" class="edit" />';
     print '        </label><br />';
      print '        <input type="submit" name="login" value="Login" class="button" />';
    print '      </fieldset>';
    print "</form>";
    print "</center>";
    print "</body>";
    print "</html>";
    }
    ?>
    Le problème se situe au niveau de : header("Location:search.php");

    search.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
     
    session_start();
     
    if (!isset($_SESSION['user'])) header("Location:session_expired.php");
     
    include_once ("include/database.php");
     
    include_once ("include/bibtex.php");
     
    ob_start(); // begin to fill the buffer
     
    if (!isset($_SESSION['pg'])||$_SESSION['pg']=="") $_SESSION['pg']="pg=1";
     
    ?>
    ...
    A partir de cette page $_SESSION['user'] n'est plus connu.
    Donc perso, je pense que ca vient du fait qu'il n'y a aucune methode de transmission mise dans index.php


    Donc ma quesrtion : comment faire pour récupérer la variable $_SESSION['user'] (qui est initialisée dans database.php et connue dans index.php) sans utiliser GET ? Parce header("Location:search.php?user="$_SESSION['user']); fonctionne mais je ne veux pas passer la variable de session en paramètre.

    Est-ce assez clair ?
    Pouvez-vous m'aider ?

    Merci bien !!!

  2. #2
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    A quel moment renseignes-tu tes variables de sessions, et plus particulièrement $_SESSION['user'] ?


    Tu peux regarder de ce coté http://fr.php.net/session_start

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Dans mon index.php dans le premier if, j'utilise la fonction dbAuthUser. Cette fonction est présente dans database.php
    Voici l'allure de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    function dbAuthUser($user, $pwd) {
      global $dbconn, $dbhost, $dbuser, $dbpwd, $dbase, $ldap;
     
    global $hdl_log;
    fwrite($hdl_log, "dbAuthUser");
     
     
      $auth = FALSE;
      $dbconn = mysql_connect($dbhost, $dbuser, $dbpwd);
      $result = mysql_select_db($dbase, $dbconn);
      $sql = "SELECT * FROM users_tbl WHERE id=\"".$user."\" AND pwd=password(\"".$pwd."\")";
      $result = mysql_query($sql, $dbconn) or die(mysql_error());
      #if (!$result) mysql_error();
      if (mysql_num_rows($result) == 1) {
        $auth = mysql_fetch_array($result);
        unset($auth['pwd']);
        session_set_cookie_params(0);
    #    session_start();
        $_SESSION['user'] = $auth;
        $_SESSION['user']['lastquery']="";
        session_register();
       }
      mysql_close($dbconn);
      // if classical users fail to log,  try LDAP users
      if ((!$auth)&&($ldap)){
        $auth=auth_login($user,$pwd);
     
        if ($auth) {
        session_set_cookie_params(0);
    #    session_start();
        $_SESSION['user']['id'] = $user;
        $_SESSION['user']['firstname'] = $user."from LDAP";
        $_SESSION['user']['lastname'] = $user."from LDAP";
        $_SESSION['user']['rights'] ='w';
        $_SESSION['user']['lastquery']="";
        session_register();
        }
      }
     
      return $auth;
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    tous les settings de ta variable de session sont fait dans des "if".

    Es-tu sur de rentrer dans au moins un if ?

    Peut etre devrais tu mettres une valeur d'init au debut de ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       $_SESSION['user'] = false;
    Quelque chose du genre et afficher le contenu de $_SESSION['user'] dans le script qui va bien.
    Comme ca, si ca t'affiche false, c'est que tu n'es pas rentrer dans les if, et tu pourras debugger en fonction de ton resultat.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Tout d'abord de prendre en considération ma demande.

    Le problème vient d'etre résolu. En fait, on vient de s'apercevoir qu'il y avait un conflit dans le nom de l'utilisateur qui fait tourner le serveur. Sur l'ancienne configuration, il s'agissait de httpd. Et apres la migration sur le nouveau serveur, ce n'était plus httpd mais apache. Et du coup, ca ne fonctionnait pas comme ca devrait.
    Apres changement du nom apache en httpd, tout fonctionne correctement. =)


    Merci quand même pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2009, 21h27
  2. Passer plusieurs variables sensibles avec header
    Par pasc06 dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2008, 23h51
  3. [PHP-JS] Transmission variable par URL avec champ caché
    Par Interface dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2007, 19h09
  4. Transmission de variable avec GET et header
    Par spirou dans le forum Langage
    Réponses: 10
    Dernier message: 03/01/2006, 19h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo