Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2007, 13h59   #1
Invité de passage
 
Inscription : mai 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 15
Points : 2
Points : 2
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 :
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 :
 <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>
platonus2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 14h17   #2
Invité de passage
 
Inscription : mai 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 15
Points : 2
Points : 2
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']." ";
platonus2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 14h35   #3
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 424
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 424
Points : 2 811
Points : 2 811
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 :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 15h47   #4
Invité de passage
 
Inscription : mai 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 15
Points : 2
Points : 2
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']." ";
platonus2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 11h55   #5
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 424
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 424
Points : 2 811
Points : 2 811
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 14h00   #6
Invité de passage
 
Inscription : juin 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 4
Points : 4
Points : 4
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' "
orbitz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 14h40   #7
Invité de passage
 
Inscription : mai 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 15
Points : 2
Points : 2
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
platonus2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 15h26   #8
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 424
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 424
Points : 2 811
Points : 2 811
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 10h10   #9
Invité de passage
 
Inscription : mai 2007
Messages : 15
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 15
Points : 2
Points : 2
ok merci pour cette solution
platonus2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h12.


 
 
 
 
Partenaires

Hébergement Web