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 :

Simulation d'une requete POST et redirection


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de greg91
    Homme Profil pro
    Administrateur système
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Par défaut Simulation d'une requete POST et redirection
    Bonjour à tous,

    je développe un petit intranet possédant un forum phpBB3.
    Chaque utilisateur se connecte avec son login/password sur la page d'accueil du site (et pas du forum), et je contrôle sa validité via la gestion de session phpBB.
    Ainsi l'utilisateur est directement connecté quand il va sur le forum.

    Voici le formulaire d'authentification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form name="login" id="login" method="post" action="./phpbb/site_ucp.php?mode=login">
      <input name="username" type="text" id="username"  />
      <input name="password" type="password" id="password"  />
      <input type="hidden" name="redirect" value="../index.php" />
      <input name="login" type="submit" value="ok" />
    </form>
    Cela marche bien mais voilà le problème : J'ai un autre groupe d'utilisateur qui n'a pas le droit de se connecter au forum mais doit pouvoir se connecter à l'intranet et, je voudrait n'avoir qu'un seul formulaire pour se loger quelque soit le groupe d'utilisateur....

    Ces utilisateurs du 2eme groupe sont contenue dans une table à part dans la DB. Donc me dis que je vais passer par un scripts qui va s'intercaler entre le formulaire d'authentification et la page de login de phpbb. Je pourrais ainsi verifier l'existense de l'utilisateur
    Dans le principe cela donne cela:

    -on entre le login/password dans le formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form name="login" id="login" method="post" action="login.php">
      <input name="username" type="text" id="username"  />
      <input name="password" type="password" id="password"  />
      <input type="hidden" name="redirect" value="../index.php" />
      <input name="login" type="submit" value="ok" />
    </form>
    -la validation de ce formulaire va sur login.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
    37
    38
    39
    40
    41
    42
    43
    44
     
    $username=$_POST['username'];
    $password=$_POST['password'];
    $redirect="../index.php";
     
    /*test si l'utilisateur fais partie du 2eme groupe*/
    .
    .
    .
     
    /*si l'utilisateur ne fait pas partie de 2groupe, on va sur la page de connexion de phpbb à l'aide d'une requête POST*/
     
    $sock = fsockopen("ssl://192.168.100.253", 443, $errno, $errstr, 30);
    if (!$sock) die("$errstr ($errno)\n");
     
    $data = "username=" . urlencode($username) . "&password=" . urlencode($password) . "&redirect=" . $redirect;
     
    fputs($sock, "POST /phpbb/site_ucp.php?mode=login HTTP/1.0\r\n");
    fputs($sock, "Host: 192.168.100.253\r\n");
    fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($sock, "Content-length: " . strlen($data) . "\r\n");
    fputs($sock, "Accept: */*\r\n");
    fputs($sock, "\r\n");
    fputs($sock, "$data\r\n");
    fputs($sock, "\r\n");
     
     
    $headers = "";
    while ($str = trim(fgets($sock, 4096)))
    	{
      	$headers .= "$str\n";
    	}
     
    echo "\n";
     
     
     
    $body = "";
    while (!feof($sock))
    	{
      	$body .= fgets($sock, 4096);
    	}
     
    fclose($sock);
    Mon but est donc de simuler l'envoie du formulaire d'identification dans le script login.php mais cela ne marche pas.
    Je reste sur la page login.php qui n'affiche rien alors que je voudrai aller sur "phpbb/site_ucp.php?mode=login" en passant mes variables POST et ainsi être connecté au forum.

    Voilà j'espère avoir été suffisamment clair.
    Je m'arrache les cheveux depuis 3 jours sur ce problème sans trouver de solution.
    Je précise que je veux éviter l'utilisation de CURL.

    Quelqu'un aurait il une idée?

    Merci.

  2. #2
    Membre expérimenté Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Par défaut re
    Il existe la fonction .submit en javascript qui te permet d'envoyer ton formulaire.

    Tu auras donc juste a l'integrer au milieu de ton php de la maniere suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    code php
    ?>
    <script language="javascript">
    code js
    </script>
    <?
    code php

  3. #3
    Membre confirmé Avatar de greg91
    Homme Profil pro
    Administrateur système
    Inscrit en
    Novembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur système

    Informations forums :
    Inscription : Novembre 2007
    Messages : 121
    Par défaut
    Merci pour ta réponse Julien.

    J'aurai préféré me passer de Javascript, mais cela reste une bonne idée.
    Couplé à une petit vérification de l'activation de Javascripts sur le client avant de lancer l'authentification, ça peut le faire.
    Je ferai ça si je ne trouve pas de solution avec mes sockets.

  4. #4
    Membre expérimenté Avatar de juliens9
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 192
    Par défaut
    Enfin la le javascript se resume a une ligne. C'est pas non plus un gros code compliqué...

    Enfin après c'est toi qui voit

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/06/2011, 19h30
  2. Probleme avec une requete POST
    Par y0ug dans le forum Réseau
    Réponses: 3
    Dernier message: 19/08/2007, 16h57
  3. Traiter une requête POST avec attachement
    Par queto_putito dans le forum Langage
    Réponses: 3
    Dernier message: 30/07/2007, 13h40
  4. Recuperer les params d'une requete Post?
    Par Rits dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 18/10/2006, 10h49
  5. Poster une requete POST avec fsockopen
    Par ePoX dans le forum Langage
    Réponses: 8
    Dernier message: 27/11/2005, 14h20

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