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 :

Passage de session PHP


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut Passage de session PHP
    Passage de session PHP par une redirection javaScript

    Je crée un accès sécurisé : login, mdp.
    Donc j’ais un formulaire qui renvoi par le méthode post les deux paramètres : login et mdp au script charger de l’identification des client.
    Une requête SQL qui retourne $row[0]=0 si l’identification est mauvaise et plein de truc si c’est bon.
    Une foie le client authentifier je le redirige directement vers la page espace_client.php
    Cette page comme toute les autres pages du site ne peuvent être atteinte que si le client et identifier : C'est-à-dire qu’une session lui à été attribué.
    Donc au début de chaque une de mes pages j’inclue secu.php : < ? include(‘secu.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
    < ?
    echo "vous êtes dans authen.php <br/>";
     
    //je récupère les données de mon formulaire de login
    $login = $_POST["login"];
    $mdp = $_POST["mdp"];
     
    $user[] = sql_user_connection($login, $mdp); // ça c’est du SQL..
     
    if ($user[0] != 0)
    {	 
    	//oki
    	$role = "client";
    	$nom_session = session_name();  // <= A quoi sert cette ligne ?
    	session_start();
    	$_SESSION["role"] = $role;
    	$_SESSION["id"] = 1 ;
     
    	echo "vous étes dans authen.php => oki <br/>";
    	echo "role = ".$role."<br/>";					//ça c’est bon
    	echo "session_role = ".$_SESSION["role"]."<br/>";	//
     
    	// Maintenant que tout est bon et que ma session est créer 
            // Je passe dans la page suivante : espace_client.php 
            // Et je voudrais que ma session suive => méthode GET utilisation de SID
    	echo "<script language='javascript'>";
    	echo "document.location.href='espace_client.php?".SID."'";  // celon moi le pb vient de là
    	echo "</script>";
    }
    else
    {
    	echo "<script language='javascript'>";
    	echo "document.location.href='login.php?erreur=1'";
    	echo "</script>";
    }
    ?>
    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
    <? 
    echo " vous êtes dans secu.php "."<br/>";
     
    session_start();
    $nom_session = session_name();
     
    echo "role = ".$_SESSION["role"]."<br/>";		//Et là ça n’affiche rien :-(
     
    if ($_SESSION["role"] != "client")
    {
    	echo "<script language='javascript'>";
    	echo "document.location.href='login.php?erreur=42'";
    	echo "<//script>"; // le // est fait expré
    }
    ?>
    Je pence que le problème vient de ma façon de rediriger le client vers sa page d’accueil.
    Ou bien du fait que je n’ais rien comprit aux sessions, notamment session_name();

    Voilou si quelqu’un a de meilleurs idées que moi ………

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 91
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "document.location.href='espace_client.php?".SID."'";
    SID c'est quoi ? il est defini ou ?

    Il faut absolument que tu utilises du Javascript ?
    Tu peux pas te contenter de simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: tapage.php");

  3. #3
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Pour le JavaScript je suis pas obliger
    Mais c'est la seul méthode que je connaissais.

    Maintenant que j'ais header() je vais voir ce que ça donne.

    En relisant pas mal de truc je me suis rendu compte que c'été peut étre tout l'affichage de controle qui empéche mes scripte de fonctionner.

    Enfin, SID, est à ce que j'en ais lu sur les forum une constante qui représente la session.
    Je sais c'est obscure alors imaginer ce que ça donne dans ma pauvre téte.

    En tout cas merci de ta contribution mathieu77186.

    Question : en utilisent header, Est ce que ma session sera rensférer explicitement?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 91
    Points : 71
    Points
    71
    Par défaut
    Tiens voila un exemple de mise en forme avec header et les sessions
    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
    <? session_start(); 
    include("_connexion.php");
     
    //recup des infos
    $login=$_POST["login"];
    $passwd=$_POST["passwd"];
     
    //requete 
    $requete="select * from inscrits where login=\"$login\" and pass=\"$passwd\"";
    $result=mysql_query($requete);
    $val=mysql_fetch_array($result);
     
    if(mysql_num_rows($result)==0)
    {
      	header("Location: error.htm"); 
    }
    else
    {
    	if (!isset($_SESSION['auth'])) 
    	{    
    		$_SESSION['auth'] = $val["id"]; //La session est rempli par l'ID de l'inscrit
    	}
    	header("Location: main.php"); //Si le nombre d'enregistrement trouvé est != 0 alors tu rediriges...
    }
     
    mysql_close();
     
    ?>
    Ensuite tu peux reutilisé la valeur de ta session en demarrant chacune de tes pages par : Tu peux aussi faire un test voir si l'internaute a bien été enregistré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!isset($_SESSION['auth'])) 
    {    
    	header("Location: ../index.html");//si la session n'existe pas tu le rediriges vers la page que tu veux...
    }
    Voila j'éspère que ça pourra t'aider ..

  5. #5
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Merci beaucoup Math

    Une ptite question : Tu n'utilise jamais le nom de la session ?


    Bon mon problème initial est sûrement réglé mais c’est pour mieux en faire resurgir d’autres :-) :-(


    J’ais réussit à réparer 4 erreurs comme celle là mais là c’est un peut différent car Client.php est une classe. !! :-|
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\temp\Objets\Client.php:22) in c:\program files\easyphp1-8\www\temp\authen.php on line 47
    Le code de authen.php.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
    require("Objets/Client.php"); 
    session_start();
    
    header("Location: espace_client.php"); // ligne 47.
    ?>
    Et le code de Client.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
    <?
    class Client {
     
    	var $id_USER;
    	var $nom;
     
    	//	constructeur 
    	function Client($row)
    	{
    		$this->id_USER = $row[0];
    		$this->nom = $row[1];		//ligne 22
    	}
     
    	//Methodes d'accés
    	function get_id_USER(){return $this->id_USER;}
    	function get_nom(){return $this->nom;}
    }
    ?>
    Et là je comprend vraiment pas comment Client.php peut commencer la sortie des header à la ligne 22 !!!

    Une idée :

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    tu n'aurais pas un espace ou une ligne vide apres ton ?>
    :

  7. #7
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    se serais mesquin comme erreur !!!!

    Mais en réorganisant mes dossiers j'ais provoqué des ruptures de liens ( encore des erreurs que je comprend pas !!! ( mais ça fait que 20 min que je suis dessut donc je vous en reparle dans 1h si j'ais toujours trouvé.. ) )

    en tout cas j'ais déjà retirer les quelque ligne de fin de fichiers mais les fichiers qui posaient problème étaient bien fait donc je crois pas que ça vienne de là.

    Merci quand même.

  8. #8
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    J'ais corriger mes erreurs de lien, j'ais vériffié tout mes fichiers pour voir s'il n'y avais de méchant saut de ligne ou des espace aprés et avant mes balises

    Et rien toujours le même pb .

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 91
    Points : 71
    Points
    71
    Par défaut
    Colle ton code

  10. #10
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    authen.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
    <?php 
    require("../Objets/Client.php"); 
    session_start();
    include(".././fcts/connect.php"); 
    include(".././fcts/send_sql.php"); 
     
    $dblk = connect();
     
    $login = $_GET["login"];
    $mdp = $_GET["mdp"];
     
    $login = addslashes($login);
    $mdp = addslashes($mdp);
     
    $user[] = sql_user_connection($login, $mdp);
     
    if ($user[0] != 0)
    {	 
    	//oki
    	$client = new Client($user);
    	$role = "client";
    	$id_Client = $client->get_id_USER();
     
    	$_SESSION["client"] = $client;
    	$_SESSION["role"] = $role;
    	$_SESSION["id_Client"] = $id_Client;
    	header("Location: espace_client.php"); //ligne27
    }
    else
    {
    	echo "<script language='javascript'>";
    	echo "document.location.href='login.php?erreur=1'";
    	echo "<//script>";
    	exit();
    }
    ?>
    secu.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <? 
    session_start();
    if (!isset($_SESSION['auth']))
    {
    	echo "secu.php "."<br/>";
    	echo "client = ".$_SESSION["client"]."<br/>";
    	echo "role = ".$_SESSION["role"]."<br/>";	
     
    	echo "<script language='javascript'>";
    	echo "document.location.href='login.php?erreur=42'";
    	echo "<//script>";
    }
    ?>
    Client.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
     
    <?
    class Client {
     
    	var $id_USER;
    	var $nom;
    	var $prenom;
    	var $login;
    	var $mdp;
     
    	//	constructeur 
    	function Client($row)
    	{
    		$this->id_USER = $row[0];
    		$this->nom = $row[1];                  //ligne22
    		$this->prenom = $row[2];
    	}
     
    	//Methodes d'accés
    	function get_id_USER(){return $this->id_USER;}
    	function get_nom(){return $this->nom;}
    	function get_prenom(){return $this->prenom;}
    }
    ?>
    erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\temp\Objets\Client.php:22) in c:\program files\easyphp1-8\www\temp\fcts\authen.php on line 27

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    et si tu met un constructeur vide dans client ?

  12. #12
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par SoF_AzraeL
    Pour le JavaScript je suis pas obliger
    Mais c'est la seul méthode que je connaissais.
    Il faut garder à l'esprit que le javascript n'est pas toujours activé sur les navigateur et par la même est désactivable... avec ton premier code si je désactivais javascript sur mon navigateur je passais toutes tes protections... .. .


    Concernant le session_start() pourquoi ne pas le mettre avant ton require("../Objets/Client.php");... .. ?

    @ tchaOo°

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    car il faut inclure les classes avant le depart de session

  14. #14
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par siddh
    car il faut inclure les classes avant le depart de session
    Merde j'avais pas vu qu'il fouttais un object Client en session... j'ais rien dit... .. .

    * sort discretement *

    Je suis loin... loin... mais loin... .. .

    @ tchaOo°

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est vraiment etrange que ca se passe sur la ligne 22, tu devrais la commenter, essayer sans code dans le constructeur...

    et regarde le source de ta page, des fois ca peut donner une indication sur ce qui a fais foirer

  16. #16
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Ho .. tous ces messages !!
    Merci de votre aide !!

    Pour le javaScript qui peut étre désactivé je vais ajouter un header() et un exit() ça devrais faire l'affaire.

    Et pour le reste je suis rentrer chez mes parents cette semaine donc je peut pas tester vos proposition ....

    Quoi qu'il en soit encore merci de votre aide et Bonne année

  17. #17
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Miracle de l'informatique aléatoire ? : ça marche !!!

    mais je sais pas pour quoi.

    En tout cas merci à tous

    Une autre petite question ?
    voila j'ais un formulaire d'enregistrement de client en deux temps
    1 infos perso : inscription.php
    2 log et mdp : inscription2.php

    Dans le form de inscrition.php l'action appel "inscription.php" avec la méthode "post".
    au début du scripte je fait les test pour voir si les données sont valides et si elle le sont j'aimerais pouvoir les passer à inscription2.php avec la méthode post.
    Comment faire ?

    Il me manque juste le nom de la fonction qui permet de poster automatiquement d'une page à l'autre.

    Merci .. et bon dev.

  18. #18
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Salut,

    Des champs "hidden"
    ou
    des variables session

  19. #19
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Pour les champs hidden c'est que j'avais pencé au début mais pourquoi ne pas réutiliser les champs normaux tand qu'a faire ?
    Mais ce qu'il me manque c'est le poste.

    Et j'ais pas envie de ma faire "tulipe" avec des sessions ici.

  20. #20
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Perso je préfère les sessions

    Car, tu vérifies des données puis tu dois repartir sur une autre page ou réclamer des données supplémentaires le tout sans action de ton client.

    Donc passage par GET et donc tes données dans l'URL alors que par les sessions une redirection et le tour est joué.

Discussions similaires

  1. Le passage de ma variable de session (PHP) ne fonctionne pas
    Par beegees dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/03/2009, 14h10
  2. Probleme de passage de session php/jsp
    Par onimougwo dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 05/04/2007, 17h34
  3. [Sécurité] Session PHP
    Par lemagicien dans le forum Langage
    Réponses: 8
    Dernier message: 06/10/2005, 16h09
  4. les sessions PHP
    Par smh_master dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2005, 14h13
  5. [PHP-JS] passage de variable php a javascript
    Par limpins dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/07/2005, 11h54

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