Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/03/2011, 22h40   #1
Invité régulier
 
Inscription : avril 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 41
Points : 6
Points : 6
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 :
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 :
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.
freeman43 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 23h00   #2
Membre régulier
 
Homme Benjamin Dubois
Chef de projet NTIC
Inscription : février 2008
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Dubois
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : février 2008
Messages : 65
Points : 99
Points : 99
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 :
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
monsieurben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 23h17   #3
Invité régulier
 
Inscription : avril 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 41
Points : 6
Points : 6
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 :
header('location:'.$Page.'');
Merci.
freeman43 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 23h22   #4
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
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)
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 00h36   #5
Membre régulier
 
Homme Benjamin Dubois
Chef de projet NTIC
Inscription : février 2008
Messages : 65
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Dubois
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : février 2008
Messages : 65
Points : 99
Points : 99
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 :
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 :
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 :
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...
monsieurben est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h38.


 
 
 
 
Partenaires

Hébergement Web