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 :

session perdue après rafraichissement ou suivant


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 8
    Points
    8
    Par défaut session perdue après rafraichissement ou suivant
    bonjour,
    je lance au début ma session
    j'affiche 5 enregistrements par page , mais lorsque je fait un rafraichissement de la page ou si je vais sur la page suivante pour afficher mes autres enregistrements , la variable de session est vide.

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php session_start();
     require('connexion.php'); 
     
     
    if ( isset( $_SESSION['region'] ) ) {
     
      echo 'langage existe dans la session et sa valeur est ' ;
      // lecture de la variable de session 'langage'
     echo $_SESSION['region']; 
    } else {
     
      echo 'langage n\'existe pas dans la session' ;
    } 
     
    $currentPage = $_SERVER["PHP_SELF"];
     
     
     $maxRows_Recordset1 = 4;
    $pageNum_Recordset1 = 0;
    if (isset($_GET['pageNum_Recordset1'])) {
      $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
    }
    $startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
     
     
    $query_Recordset1 = "SELECT hotel_fr.nom, hotel_fr.url_star, hotel_fr.url_photo, hotel_fr.description, hotel_fr.region FROM hotel_fr WHERE hotel_fr.region=$region";
    $query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
    $Recordset1 = mysql_query($query_limit_Recordset1, $cnx) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
     
    if (isset($_GET['totalRows_Recordset1'])) {
      $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
    } else {
      $all_Recordset1 = mysql_query($query_Recordset1);
      $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
    }
    $totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
     
    $queryString_Recordset1 = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_Recordset1") == false && 
            stristr($param, "totalRows_Recordset1") == false) {
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
        $queryString_Recordset1 = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_Recordset1 = sprintf("&totalRows_Recordset1=%d%s", $totalRows_Recordset1, $queryString_Recordset1);
     
    ?>

    pour naviguer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage,min($totalPages_Recordset1, $pageNum_Recordset1 + 1), $queryString_Recordset1); ?>">Suivant</a> <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, max(0, $pageNum_Recordset1 - 1), $queryString_Recordset1); ?>">Premier</a></TD>

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 8
    Points
    8
    Par défaut correction
    Petite modif dans la requte mais ca ne change rien au message d'erreur

    $query_Recordset1 = "SELECT hotel_fr.nom, hotel_fr.url_star, hotel_fr.url_photo, hotel_fr.description, hotel_fr.region FROM hotel_fr WHERE hotel_fr.region=".$_SESSION['region']." ";

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    pourrais-tu indenter ton code et le mettre dans une balise code car c'est pas très lisible.

    fais un phpinfo() et regarde si les resgister globals ne sont pas à "on"
    ensuite cherche si tu ne n'affecte pas une variable qui porte le même nom qu'une variable de session.

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $_SESSION['region'] = 'test';
    ...
    $region = 45;
    ...
    echo $_SESSION['region'];
    cela donne 45 car $region est une variable de session.
    A+JYT

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    le probleme est resolu, il fallait le savoir mais j'ai supprimer les espace dans le code,

    par contre j'ai ce message sur le serveur mais pas en local 9en local tout est ok)
    langage existe dans la session et sa valeur est \'rhodes\'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'rhodes\' LIMIT 0, 4' at line 1

    pour cette requette

    $query_Recordset1 = "SELECT hotel_fr.nom, hotel_fr.url_star, hotel_fr.url_photo, hotel_fr.description, hotel_fr.region FROM hotel_fr WHERE hotel_fr.region=".$_SESSION['region']." ";

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    fais attention
    de \ ne son pas toujours présent dans les chaînes mise en session ou dans les paramètres de la requête http
    cela dépends de la conf voir magic_quote_gpc

    je te conseille vivement d'utiliser la fonction mysql_escape_string sur les variables php que tu passe à des requête SQL cela te garantira que tu n'a pas de caractères indésirable dans ta requête

    donc si les magic_quote sont à on tu utilise stripcslashes pour les retirer
    puis mysql_escape_string pour echaper à la mode mysql les caractère spéciaux.

    tous le moteur n'utilisent pas la même méthode d'échappement

    en php l'échappement de ' est \' en SQL l'échappement de ' est ''

    A+JYT

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par platonus2002
    lYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'rhodes\' LIMIT 0, 4' at line 1

    pour cette requette

    $query_Recordset1 = "SELECT hotel_fr.nom, hotel_fr.url_star, hotel_fr.url_photo, hotel_fr.description, hotel_fr.region FROM hotel_fr WHERE hotel_fr.region=".$_SESSION['region']." ";
    Si tu compares sur une chaine \'rhodes\' il faut que celle-ci soit en guillemets simple. D'apres le message d'erreur tu n'as qu'un guillemet a gauche ('\'rhodes\'), il faut donc le fermer. Ta requete devrait ressembler a "...WHERE hotel_fr.region='$region' "

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 8
    Points
    8
    Par défaut resolu
    merci a tous,

    j'ai resolu le probleme avec WHERE hotel_fr.region = ".stripslashes($region)." "

    car certaines solution fonctionne parfaitement en local mais pas sur le serveur
    merci

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par platonus2002
    merci a tous,

    j'ai resolu le probleme avec WHERE hotel_fr.region = ".stripslashes($region)." "

    car certaines solution fonctionne parfaitement en local mais pas sur le serveur
    merci
    pour plus de garantie ajoute :
    WHERE hotel_fr.region = ".mysql_escape_string(stripslashes($region))." "

    ainsi tu es sur que si $region contient un caractère spécial il passera correctement

    mais attention car si magic_quote_gpc sur un autre serveur ou tu mets ton code
    tu risque de retirer des \ là ou il y en avait
    ex:
    $myString = ' "test\truc" '
    avec mis en session avec magic_quote_gpc te donne dans la session
    ' \"test\\truc\" ' lorsque tu fais ton stripslashes tu retrouve ' "test\truc" '

    mais si magic_quote_gpc est à off dans ta session tu as
    ' "test\truc" ' et le stripslashes te donne ' "testtruc" ' tu as donc perdu ton \

    A+JYT

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    ok merci pour cette solution

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

Discussions similaires

  1. session perdu aprés passage de paypal
    Par jules_diedhiou dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2009, 14h35
  2. Session perdue après validation formulaire
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 12/12/2008, 11h31
  3. $dispo[0] et session pour afficher sur page suivante?
    Par oceane751 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 04h10
  4. [vb.net] probleme de datasource perdu apres le postback
    Par graphicsxp dans le forum ASP.NET
    Réponses: 12
    Dernier message: 03/03/2006, 16h29
  5. concerver items d'un select apres rafraichissment
    Par menoce dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/08/2005, 15h41

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