Perte partielle de mes variables 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 : Perte partielle de mes variables de session

Re: Perte partielle de mes variables de session

par Cyrano » 19 déc. 2010, 13:21

Il manque un exit(); après ton header.
Creasitenet, tu peux nous expliquer l'idée générale de ton intervention totalement inutile ? Le sujet date de 2005.
Avec ton pseudo, j'ai idée que tu tentes de monter ton nombre de post pour te permettre d'avoir un lien vers ton site histoire de te faire la publicité. Ce genre de méthode n'est pas spécialement apprécié ici. :evil:
Et c'est sans compter que comme tu as posté en invité, ça ne sert strictement à rien.

Re: Perte partielle de mes variables de session

par Creasitenet » 19 déc. 2010, 13:14

Il manque un exit(); après ton header.

par mister-yokyok » 05 oct. 2005, 11:26

J'ai trouvé la solution!!!

Ce matin, je me suis lance à tester mes id de session (par echo) et j'ai de suite compris... :D

En fait, une utilisation maladroite des "include" (notemment pour apeller la page d'insertion) provoquait la création d'une nouvelle session php dans laquelle etaient stockées mes données à inserer en base. Je me retrouvait donc avec deux sessions et seulement une (celle contenant adresse IP et droits) "mobilisée" dans mon script.

J'ai remplacé mes "includes" par des "header" et la seconde session n'a pas ete créee...

Je poste donc la solution pour d'autres personnes ds ma situation..

merci pr vos réponses :D

par Cyrano » 05 oct. 2005, 10:24

Sur la ligne suivante, il y a un test qui devrait également être corrigé comme ceci:
if (!isset($_SESSION['ip']) or ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'])) // Vérification des données de session

par mister-yokyok » 05 oct. 2005, 10:01

Rien ne change.... Tjrs affichage d'une page blanche...
La boucle n'est pas executée :cry:

par Cyrano » 05 oct. 2005, 09:32

Et si tu démarrais la session avant d'en regénérer l'id ?
<?php
session_start();
session_regenerate_id();

//...
:?:

par mister-yokyok » 05 oct. 2005, 09:28

Est-ce que tu as bien un session_start() en premier à chaque chargement de nouvelle page et pour toutes les pages ?
Oui... j'ai bien cette commande sur toutes mes pages...

VOICI MON CODE DE L'ETAPE 5
En fait celui-ci repose sur une serie de tests "if" sur mes variables de sessions. La reconnaissance d'un certain nb d'entres elles (les champs obligatoires de mes formulaires) permet la réalisation du type d'insertion.Par le bias de la méthode "echo je suis ici", j'ai pu comprendre qu'aucun test "if" ne s'exécutait car mes variables de session avaient disparues (info egalement vérifiée par echo)

Je ne vous en poste qu'un extrait - l'enssemble de la page ayant la meme mécanique en ce qui concrene les autres insertions.

Code : Tout sélectionner

<?php session_regenerate_id(); session_start(); if (!session_is_registered("ip") or !($_SESSION['ip'] == $_SERVER['REMOTE_ADDR'])) // Vérification des données de session { include("./erreur_identification.php"); // Redirection vers la page erreur_identification.php affichant un message exit; // Arrêt de l'exécution du script -> tout le reste ne sera pas affiché } // Navigation dans les différents menus en fonction des droits if ($_SESSION['niveau'] == 1) { $chemin = './espace_webmaster1.php'; } else { if ($_SESSION['niveau'] == 2) { $chemin = './espace_webmaster2.php'; } else { if ($_SESSION['niveau'] == 3) { $chemin = './espace_webmaster3.php'; } } } // tests (les deux premieres variables existent mais pas les autres) //echo $_SESSION['ip']; //echo $_SESSION['niveau']; //echo $_SESSION['titre_actu']; //echo $_SESSION['date_actu']; //echo $_SESSION['emeteur_actu']; //echo $_SESSION['contenu_actu']; //echo $_SESSION['lien_actu']; // Connexion à MySql et à la base de données mysql_connect("localhost", "root", "") or die ("impossible de se connecter à MySQL"); mysql_select_db("tecnosud") or die ("impossible de se connecter à la base de données"); // -------------------------------------- DONNEES RELATIVES AUX ACTUALITES GENERALES ------------------------------------------- if(isset($_SESSION['titre_actu']) and isset($_SESSION['date_actu']) and isset($_SESSION['emeteur_actu']) and isset($_SESSION['contenu_actu']) and isset($_SESSION['lien_actu'])) { // Recupération des variables de session // Des anti-slashes sont insérés pour déspécialiser les caractères spéciaux qui pourraient être insérés dans les champs $titre_actu=addslashes($_SESSION['titre_actu']); $date_actu=addslashes($_SESSION['date_actu']); $emeteur_actu=addslashes($_SESSION['emeteur_actu']); $contenu_actu=addslashes($_SESSION['contenu_actu']); $lien_actu=addslashes($_SESSION['lien_actu']); // Requête d'insertion $requete = mysql_query("insert into actualites (idActualites, titreActualites, dateActualites, emeteurActualites, contenuActualites, lienActualites) values ('','$titre_actu','$date_actu','$emeteur_actu','$contenu_actu','$lien_actu')") or die ("requête d'ajout incorrecte"); // Destruction des variables de session (pour éviter les doubles affichages par la suite) unset($_SESSION['titre_actu']); unset($_SESSION['date_actu']); unset($_SESSION['emeteur_actu']); unset($_SESSION['contenu_actu']); unset($_SESSION['lien_actu']); // réorientation vers la page d'acueil du webmaster header("Location: ./$chemin?message=1"); }
Voila.... Je suis bien sur dispo pour toute autre demande d'info

Merci d'avance

par Cyrano » 04 oct. 2005, 19:29

Est-ce que tu as bien un session_start() en premier à chaque chargement de nouvelle page et pour toutes les pages ?

par seayoung » 04 oct. 2005, 17:53

mmm :roll:
peut on voir le code de la page 5 ?
ca nous mettrai peu etre sur la piste

Perte partielle de mes variables de session

par mister-yokyok » 04 oct. 2005, 17:40

Bonjour à tous!!!

Je viens faire appel à la sagesse du forum phpFrance pour un probleme des plus étranges. Actuellement stagiaire dans une association, je suis chargé de créer un site internet avec une plateforme de mise à jour (un accès "administration du site").

Pour ce second espace, j'utilise les mécanismes de session php.

Alors que tout marchait bien en local, je ne peut plus réaliser d'opération de maintenance sur mon site depuis qu'il a été mis en circulation sur un serveur. En effet, mes variables de session disparaissent en partie - leur valeur devient "" (nulle) apres un changement de page -.

Avant de mettre du code, voici comment mon espace webmaster fonctionne:

1) Arrivée sur une page d'authentification
- Saisie login/password
- capture et mise en sesion de l'adresse IP du client
- Capture et mise en session de son niveau de droits d'administrateur
2) Choix d'une opération/modification par le client
3) Remplissage du formulaire correspondant
- Capture des données saisies en session
4) Affichage d'une page récapitulative des saisies ou l'ont peut confirmer l'insertion de données
5) Déclanchement de l'insertion apres validation

En fait, entre le moment où l'on peut observer le récapitulatif des saisies (étape 4) et le moment où celles-ci sont inserées en bases (étape 5), il y a perte de mes variables de session relatives à l'enregistrement ET NON CELLE RELATIVES A L'ADRESSE IP ET AUX DROITS :?: ce qui m'empeche donc toute insertion...

C'est à en perdre mon latin...

Ma question est : comment cela est-ce possible :shock: ?

PS: Les variables de session disparaissent uniquement entre l'etape 4 et 5 (testé)
PS2: J'aurais pu réaliser ce travail avec des parametres URL mais la confidentialité de certaines données m'empechent de le faire...
PS3: Il y a bien un session_start() a tout début de page