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 :

[Sécurité] La méthode POST ne fonctionne plus en présence d'une session


Sujet :

Langage PHP

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut [Sécurité] La méthode POST ne fonctionne plus en présence d'une session
    Bonjour

    J'ai un problème assez précis qui bloque le déroulement de mon site (HTML + PHP, pas de javascript ou autre).

    En voici la description :
    Dans certains cas, les formulaires utilisés avec la méthode POST ne transmettent plus les variables.
    Si j'exécute ce code à partir d'une nouvelle instance d'internet explorer, ca fonctionne comme prévu.
    Par contre, si je l'ouvre comme lien depuis le reste de mon site (il s'agit de permettre à un utilisateur de changer de login), ca ne fonctionne plus.
    Précision : j'utilise les sessions php.
    La version de PHP est 5.1, avec les variables a OFF.

    Le code de la fenêtre parente est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(isset($_GET['autre_login']) and  $_GET['autre_login']=='oui')
    	{
    		session_unset();
    		session_destroy();
    		$_SESSION['autre_login']='oui';
    		include('./scripts/user_login.php');
    		exit();
    	}
    Voici le code associé :
    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
     
    <html>
     
    	<head><title>Connexion</title></head>	
     
    	<body>
     
    	<h3 style="margin-bottom: 0px;">Merci de vous identifier</h3>
    	<br /><br />
     
    	<form action="./fichier.php" method=POST>
    	  <input type="hidden" name="action" value="verif">
     
    	  <label>Identifiant : <input type="text" name="pseudo"></label><br>
    	  <label>Mot de passe : <input type="password" name="password"></label><br><br>
     
    	  <input type="submit" value="Connexion">
     
    	  <br><br>
     
    	</form>
     
    	</center>
     
    	</body>
     
    	</html>
    Lorsque je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $_POST['action'] ou echo $_POST['pseudo']
    le serveur indique que l'index est inconnu. Idem quand j'utilise : le tableau $_POST est vide.


    Voila, merci de m'avoir lu jusqu'au bout.
    Si vous avez une idée, merci d'avance.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 335
    Points : 196
    Points
    196
    Par défaut
    j'ai pas tout compris tu dit que a un moment sa marche??

    question surement de bas niveau mais

    Si j'exécute ce code à partir d'une nouvelle instance d'internet explorer, ca fonctionne comme prévu.
    c'est quoi ?une nouvelle instance???
    c'est des choses qui arrivent, c'est la vie...(>_<)!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 45
    Points : 54
    Points
    54
    Par défaut
    Moi non plus j'ai pas tout compris
    Sur quelle page fait tu tes echo
    Et quel est ton problème ??

  4. #4
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Une nouvelle instance, c'est quand je lance IE avec une page de démarrage "normale" (exemple, google) puis que je vais directement sur la page du formulaire (disons formulaire.php).

    Les echo sont en haut de la page formulaire.php, pour afficher les variables au fur et a mesure.

    Le problème, c'est que quand je vais sur cette page formulaire.php depuis la page principale de mon site, le formulaire s'affiche normalement n'envoie plus (ou ne recoit plus) les arguments en POST. Alors que si j'y vais depuis google, il envoie correctement les arguments et les affiche quand je lui demande.

  5. #5
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Quelques précisions pour les personnes qui m'en ont demandé : Architecture du site

    page_principale.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     - include ("autorisation.php")
     - reste de la page

    autorisation.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();
    	include("fonctions.php");
     
    	if(isset($_GET['autre_login']) and  $_GET['autre_login']=='oui')
    	{
    		session_unset();
    		session_destroy();
    		$_SESSION['autre_login']='oui';
    		include('./scripts/user_login.php');
    		exit();
    	}
                    else include('./scripts/user_verif.php;
    user_login.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    include("user_verif.php")
    <le formulaire posté dans la question et qui contient action="user_login.php">
    <une redirection si OK, avec un header(URL)>
    user_verif.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Verification que l'utilisateur est bien identifié>

    Voila, j'espère que ces précisions vous aideront à m'aider

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Si tu détruis ta session, tu dois la recréer ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_destroy();
    session_start();

  7. #7
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    La session est recrée un peu plus loin (dans les include). J'avais oublié de le préciser.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Oui, mais tu utilises dans l'intervale le tableau superglobal $_SESSION. Ca doit notamment bugger ici.

  9. #9
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Ca donne la même chose quand je retire la ligne en question.

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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