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 :

PHP redirection avec header.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Par défaut PHP redirection avec header.
    Bonjour, voici mon problème:

    Dans une première page, j'ai un script de connexion qui passe en paramètre la redirection vers la page en cours.
    Or lors de la redirection, j'ai une page planche, mais pas la page sur laquelle j' étais avant.

    Voici mon code de ma page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo '<form action="index.php" method="post">';
    ...
    echo '<td><input type="hidden" name="Page" value="index.php"></td>';
    echo '<td align="right"><input type="submit" name="connexion" value="connexion" /></td>';
    Voici un morceau de code de la fonctions de redirection si l'utilisateur existe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $Page = $_POST['$Page'];
    header('location:'.$Page.'');
    Lors de la redirection, je tombe sur une page blanche.

    Je specifie que si je remplace la variable $_POST['$Page'] par index, je suis bien diriger.
    Or je veux passer le paramètre.
    Ou cela bloque.
    Merci de bien vouloir m'aider.

  2. #2
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2008
    Messages : 71
    Par défaut
    Salut,

    Mets des double-quotes dans ton $_POST['$page'];

    en effet, lorsque tu mets des simples quotes, le contenu de la chaîne est traité tel quel, tandis que lorsque tu mets des double quotes, les variables PHP sont transformées.

    tu peux donc faire $page = $_POST["$page"];

    ou éventuellement

    $page = $_POST[$page];

    Attention, n'utilise pas la variable $page ainsi ! en effet, si je change le code du formulaire pour un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td><input type="hidden" name="Page" value="http://monsitepirate.pir/index.php"></td>
    je peux récupérer directement les identifiants et mots de passe du formulaire sur le sitepirate.com

    Comme tu ne maîtrises pas le code html que tu vas recevoir (l'internaute peut le changer une fois la page chargée sur son navigateur), un code tel quel représente une faille énorme de sécurité...

    @+
    - Benjamin

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 63
    Par défaut
    qu'entend tu par me pas utiliser la variable comme cela.

    Maintenant que j'ai mis les double quotes, j' ai un problemes dans cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('location:'.$Page.'');
    Merci.

  4. #4
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2008
    Messages : 71
    Par défaut
    Citation Envoyé par freeman43 Voir le message
    qu'entend tu par me pas utiliser la variable comme cela.

    Maintenant que j'ai mis les double quotes, j' ai un problemes dans cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('location:'.$Page.'');
    Merci.
    Désolé, Helfima avait raison, j'ai relu ton code un peu vite, sa solution était évidemment la bonne.

    Pour l'histoire des double quotes (je ne sais pas si tu connais), voici la règle :

    - si tu mets le nom d'une variable (contenant, bien-sûr le $) dans une chaine de caractères entre doubles quotes, PHP va reconnaitre la variable et la remplacer par son contenu. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $age = 26;
     
    //Affiche : je suis agé de 26 ans
    echo "je suis agé de $age ans";
    C'est pratique dans certains cas pour la lisibilité, pour éviter des concaténations multiples, mais un peu plus lent qu'avec des simples quotes, car PHP analyse le contenu de la chaine à la recherche de variables à remplacer. Cela peut aussi représenter un risque de sécurité si la variable est mal protégée, car elle pourrait contenir autre chose que du texte (un code javascript malicieux par exemple).

    - A contrario, lorsque tu places une chaine de caractères entre simples quotes, PHP ne l'analyse pas. Donc si tu y place un nom de variable, c'est le nom et non la valeur qui sera affiché.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $age = 26;
     
    //Affiche : je suis agé de $age ans
    echo 'je suis agé de $age ans';
    Voilà pour mes histoires de doubles quotes

    Encore désolé d'avoir mal lu ton code la première fois, et de t'avoir induit en erreur...

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Par défaut
    tu a mis un $ sur le nom de la variable post enleve le et ca marchera
    sinon je vois pas l'intérêt de mettre la redirection dans le code html c'est pas très sécure.

    autant mettre la valeur dans une variable php (en dure)

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

Discussions similaires

  1. [MySQL] souci de redirection avec header
    Par mioke dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 21/05/2008, 15h39
  2. Probleme de redirection avec Header
    Par ehmppowa dans le forum Langage
    Réponses: 7
    Dernier message: 28/12/2006, 18h26
  3. Style Switcher CSS/PHP > redirection avec 2 includes
    Par swaag dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 11/12/2006, 15h50
  4. [PHP-JS] Problème de redirection avec header
    Par pierrot10 dans le forum Langage
    Réponses: 6
    Dernier message: 02/09/2006, 18h01
  5. Réponses: 16
    Dernier message: 01/02/2006, 19h09

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