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 :

Post d'une variable avant redirection


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut Post d'une variable avant redirection
    Bonjour à tous,

    J'ai fait un formulaire d'authentification. Ce form redirige vers authent.php qui vérifie dans la BDD que le user existe.
    En revanche, s'il n'existe pas, je voudrais le rediriger vers la page précédente avec un message d'erreur dans cette page précédente.

    Je voudrais éviter de passer par les sessions et par un paramètre dans l'url. Y a-t-il moyen de faire quelque chose comme ça :

    Post(variable)
    Redirige()

    et dans la page redirigée, je récupère variable.

    J'ai tenté ceci mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    header( "Status: 403 Forbidden");
    header ("Location: index.php");
    exit();
    page index.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
     
    $query = $_SERVER['QUERY_STRING'];
    $texte="";
    switch($query){
    	case 401:
    		$texte = "La syntaxe de la requête est mal formulée ou est impossible à satisfaire";
    		break;
    	case 403:
    		$texte = "L'accès à la ressource est interdit";
    		break;
    	case 404:
    		$texte = "Page introuvable ou modifiée";
    		break;
    	case 500:
    		$texte = "Erreur interne du serveur";
    		break;
    	}
    Merci pour votre aide.

  2. #2
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Bonsoir,

    Je ne sais pas si j'ai compris mais lorsque tu valides le user tu fais comment?

    Avec 1 submit ou équivalent ?

    Donc tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (!empty($_POST))
    {
    tu contrôles...
    Si c'est bon tu continu
    sinon
    Au revoir
    }

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par bart64
    Je voudrais éviter de passer par les sessions et par un paramètre dans l'url. Y
    Là j'ai envie de dire, pourquoi faire simple quand on peut faire compliqué

    Citation Envoyé par bart64

    a-t-il moyen de faire quelque chose comme ça :

    Post(variable)
    Redirige()
    Non. La seule manière de poster une variable et de soumettre le formulaire correspondant. Alors, il est possible d'utiliser le javascript mais

    1. Ce n'est pas très élégant pour ton problème
    2. Si le client désactive le javascript, la redirection ne se fera pas.

    Moi je serais simplement passé par une Session ou un paramètre dans l'url avec la fonction header()

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

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut
    Déjà, merci pour vos réponses !


    Je ne sais pas si j'ai compris mais lorsque tu valides le user tu fais comment?
    Formulaire de validation -> valider -> envoi des infos du formulaire vers authent.php

    Le formulaire de validation fait déjà les contrôles avant envoi.
    onSubmit="return controlForm();"

    controlForm() est une fonction javascript qui vérifie que les champs sont correctement saisis. Il renvoie faux sinon.

    authent.php fait ses contrôles et détermine si les id/mdp existent. Et là, s'ils n'existent pas, j'aurais voulu revenir en arrière pour réafficher le formulaire avec un message d'erreur.

    Moi je serais simplement passé par une Session ou un paramètre dans l'url avec la fonction header()
    Il n'y a donc pas moyen de faire mieux. Je vais donc passer par un paramètre dans l'url avec la fonction header.
    Je préfère réserver la session pour l'ouvrir dès que le user est identifié.

    Merci à vous , problème résolu.

    A bientôt.

  5. #5
    Jeh
    Jeh est déconnecté
    Membre actif Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Points : 250
    Points
    250
    Par défaut
    sinon, y'avait peut être moyen de faire plus propre en php avec 'http_request' mais j'ai jamais essayé...

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par Jeh
    sinon, y'avait peut être moyen de faire plus propre en php avec 'http_request' mais j'ai jamais essayé...

    Passer une variable en GET ou en session n'a rien de "sale", donc y a pas matière à faire plus propre . Par contre tu as raison sur une chose et je n'avais pas pensé à cette solution mais il est effectivement possible d'envoyer une requête HTTP de type POST, lui envoyer le paramètre voulu et lire la réponse du serveur, ensuite, il "suffit" d'afficher cette réponse dans la page en cours, de cette manière, ça simulerait une redirection.

    http_request est un des packages de PEAR. Selon le type d'application développée, il peut-être/ne pas être intéressant de travailler avec Pear (droits de distribution, installation etc...). En tous cas, avec la méthode Pear et après avoir installé celui-ci plus les packages HTTP_REQUEST, NET_SOCKET et NET_URL, ceci fonctionne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    include('HTTP/Request.php');
    req = &new HTTP_Request('url_destination_pour_poster_la_var');
    $req->setMethod(HTTP_REQUEST_METHOD_POST);
    $req->addPostData('Ta variable', 'Sa valeur');
    $req->sendRequest();
    $response = $req->getResponseBody();
    echo $response; //affiche le contenu de ta page.
    Mais le HTTP_REQUEST de pear ne fait rien d'autre que d'envoyer une requête HTTP à un serveur. Tu peux reproduire la même chose en utilisant simplement fsockopen, comme par exemple:

    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
    $POST_DATA='Lavariable=Lavaleur';
    $HTTP_REQUEST="POST ton_url HTTP/1.1\n";
    $HTTP_REQUEST.="Host: nom_du_serveur\n";
    $HTTP_REQUEST.='Connection: close Accept-Encoding: gzip Content-Type: application/x-www-form-urlencoded Content-Length: '.strlen($POST_DATA)."\n\n";
    $HTTP_REQUEST.=$POST_DATA;
    
    $fp=fsockopen('ton serveur',le port,$errno,$errstr);
    if($fp)
    {
        fwrite($fp,$HTTP_REQUEST);
        $response='';
        while(!feof($fp))
        {
             $response.=fread($fp,4056);
        }
        fclose($fp);
        echo $response;//Output à traiter un minimum.
    }
    else
    {
        echo $errno.':'.$errstr;
    }
    Et tu traites la variable postée dans ton script cible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre une url avant redirection
    Par anaon dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2011, 14h54
  2. Passer une variable avant téléchargement d'un logiciel
    Par fatfreddy dans le forum Langage
    Réponses: 4
    Dernier message: 19/08/2011, 16h56
  3. [PHP 5.2] Récupérer une variable POST avec une variable comme nom
    Par bailamos dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2008, 14h59
  4. Réponses: 9
    Dernier message: 16/07/2008, 16h20
  5. récupération de la valeur d'une variable avant la soumission du formulaire
    Par Dodielapatate dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/07/2007, 15h19

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