Problème de 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 : Problème de variables de session

Re: Problème de variables de session

par xTG » 08 oct. 2012, 15:10

Il est tout à fait envisageable et possible de définir des variables de session après l'envoi de HTML, les variables de sessions ne sont pas envoyées au navigateur. ;)

Si tu as toujours des messages d'erreur c'est que visiblement tu as toujours du HTML avant le session_start() incriminé.
Relis le message d'erreur pour mieux cibler l'instruction, tu as peut être tout simplement deux session_start() qui s'exécutent...
Attention aussi aux blancs avant le premier <?php qui comptent comme caractère HTML.

Re: Problème de variables de session

par Mazarini » 08 oct. 2012, 14:09

Je ne suis pas un pro des sessions, mais il y a plusieurs session_start dans fonction. Sont ils nécessaires ?
De plus je ne suis pas sur que l'affectation de variables de session soit possible après les premières sorties de html.

Pour aller vite, tu peux ajouter ob_start() en début de script pour ne pas déclencher les sorties et pouvoir continuer à faire des header.

Le plus propre est d'organiser son code pour faire contrôle, traitement et enfin affichage.

Re: Problème de variables de session

par mano2003 » 08 oct. 2012, 13:28

J'ai fais cela Mazarini en mettant même session_start() avant meme l'appel du fichier de fonctions et celui du haut de page mais j'ai toujours les 2 erreurs.

Re: Problème de variables de session

par Mazarini » 08 oct. 2012, 09:35

Il faut gérer les sessions avant d'envoyer du html au navigateur.

Il faut donc que tu fasses le traitement de la session avant d'envoyer le haut de page.

Problème de variables de session

par mano2003 » 08 oct. 2012, 02:13

Bonjour les amis,

J'ai un problème avec les variables de session quand je mets mon code dans un serveur web j'ai les erreurs suivantes:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\Academie\Front-Office\haut_de_page.html:10) in C:\wamp\www\Academie\Front-Office\fonctions.php on line 53

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\Academie\Front-Office\haut_de_page.html:10) in C:\wamp\www\Academie\Front-Office\fonctions.php on line 85

alors qu'en localhost ca marche très bien.

Voici mon fichier qui contient mes fonctions de validation d'une connexion et de démarrage d'une session que j'appelle dans la page menu_membre.php

Code : Tout sélectionner

<?php //Fonction de connexion a la base de données function connexionBD() { $nom_serveur = "localhost"; $utilisateur = "xxx"; $mot_de_passe = "xxx"; $base_de_donnees = "xxx"; //Connexion au serveur mysql_connect($nom_serveur, $utilisateur, $mot_de_passe) or die("ECHEC CONNEXION AU SERVEUR !!!"); //Sélection de la Base de données mysql_select_db($base_de_donnees) or die("ERREUR IMPOSSIBLE DE SE CONNECTER A LA BASE DE DONNEES !!!"); mysql_query('SET NAMES utf8'); } //Fonction de démarrage d'une session function demarrage() { session_start(); if(!isset($_SESSION["id"])) echo" <script language='javascript'> alert('Veuillez vous connecter SVP...'); document.location='../connexion.php'; </script> "; } //Fonction de fermeture d'une session function fermeture() { session_start(); session_destroy(); echo" <script language='javascript'> alert('Au revoir!!!') document.location='../connexion.php'; </script>"; } //Fonction de vérification du login et du mot de passe function valid_connexion() { session_start(); $login = $_POST['login']; $password = $_POST['password']; //Phase d'interrogation de la BD if(!(empty($login)) && !(empty($password))) { connexionBD(); $requete = "SELECT * FROM users NATURAL JOIN profils WHERE user_nom='$login' and user_password='$password'"; $resultat = mysql_query($requete) or die("Erreur execution requete:: $requete"); $nb = mysql_num_rows($resultat); // Nombre de lignes retournées par la requete if($nb>0)// Utilisateur Authentifié... { echo" <script type='text/javascript' language='javascript'> var temp='CONNEXION REUSSIE! Vous allez être redirigé selon votre profil...' alert(temp) </script>"; $user = mysql_fetch_array($resultat); $_SESSION["id"]=$user["user_code"]; $_SESSION["login"]=$user["user_nom"]; $_SESSION["mdp"]=$user["user_password"]; $_SESSION["profil"]=$user["profil"]; //Redirection selon le resultat if(($user['user_password']==$password) && ($user['user_nom']==$login) && ($user['profil']=="Administrateur")) { header("Location: ../Back-Office/admin.php"); } elseif (($user['user_password']==$password) && ($user['user_nom']==$login) && ($user['profil']=="Etudiant")) { header("Location: Membres/index.php"); } } else { include 'connexion.php'; echo" <script type='text/javascript' language='javascript'> var temp='Votre login ou votre mot de passe est invalide!' alert(temp) document.location='connexion.php'; </script>"; } } mysql_close(); } ?>
La page menu_membre:

Code : Tout sélectionner

<?php require '../fonctions.php'; demarrage(); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <meta name="robots" content="index, follow" /> <meta name="generator" content="Sublime Text 2" /> <title></title> <link rel="stylesheet" href="../Design/styles.css" type="text/css" media="screen" /> <link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon" /> <script type="text/javascript" src="../js/jquery.js"></script> <script type="text/javascript" src="../js/slider.js"></script> <script type="text/javascript" src="../js/superfish.js"></script> <script type="text/javascript" src="../js/custom.js"></script> </head> <body> <div id="container"> <div id="header"> <h1><strong><a href="index.php"><strong>Académie de Formation</strong></a></strong></h1> <div class="clear"></div> </div> <div id="nav"> <ul class="sf-menu dropdown"> <li class="selected"><a href="index.php">Accueil</a></li> <li><a href="academie.php">L'Académie</a></li> <li><a href="informations.php">Informations Générales</a></li> <li><a href="emplois_du_temps.php">Emplois du temps</a></li> <li><a href="resultats.php">Mon Bulletin</a></li> <li><a href="contact.php">Contact</a></li> <li><a href="deconnexion.php">Déconnexion</a></li> </ul> </div>
Et dans mon fichier index.php je fais comme 1ere instruction

Code : Tout sélectionner

<?php require 'menu_membre.php'; ?>
Merci de votre aide!