Lien HTML Href > perte de la valeur des var PHP - PHP - Programmation
Marsh Posté le 05-04-2004 à 17:07:49
Rien compris ! explique !
Marsh Posté le 05-04-2004 à 17:14:30
Tout d'abord merci
En fait j'ai une page login.php avec controle acces qui m'envoie vers index.php si c'est ok
...
$statut="admin";
session_register("statut" );
header("Location:index.php?statut=$statut" );
...
En entete de index.php j'ai mis ça pour controler l'acces, no problemo ça marche:
<?php if ($_GET['statut'] !="admin" )
{ header("Location:login.php" );
}?>
Dans cette page index.php j'ai mis des liens vers d'autres pages test.php qui ont la meme entete pour vérifier l'autorisation d'acces... Or là quand je sélectionne un lien il me renvoie à la page login.php...
Bizarre non ??
Marsh Posté le 06-04-2004 à 03:39:12
Si t'as fait
echo 'href="page.php?statut=$statut';
c'est normal que ca marche pas vu que la bonne variable c'est $_GET['statut']
Si tu nous montrait également un des liens dont tu parles et le test dans la nouvelle page, ca sera surement plus facile de répondre sans faire des supositions initiales.
Marsh Posté le 06-04-2004 à 09:09:25
bryanack a écrit : Tout d'abord merci |
on utilise plus session_register.
On utilise $_SESSION['variable'] = "ce que tu veux";
Marsh Posté le 06-04-2004 à 09:36:37
Hello
Et bien dans mes liens j'utilise la meme en tete
<?php if ($_GET['statut'] !="admin" )
{ header("Location:login.php" );
}?>
Mais l'accés à ces pages test.php ne se fait pas par un HEADER location: mais un href en html.
Marsh Posté le 06-04-2004 à 09:40:01
Exemple:
apres la page login.php j'accède à index.php avec l'entete qui va bien pour vérifier l'acces.
<?php if ($_GET['statut'] !="admin" )
{ header("Location:login.php" );
}?>
Dans cette page j'ai des liens <a href="../recherche/test.php">
avec la meme entete pour controler l'acces, or là il me sort et
me renvoie vers la page login.php
Voilà, j'espère que j'arrive à me faire comprendre
merci à vous en tout cas
Marsh Posté le 06-04-2004 à 09:46:16
Ben oui, c'et même logique, tu utilises $_GET plutôt que $_SESSION dans tes "tests d'en-tête"
tu dis que, dans ta page index.php, tu as des liens vers test.php (par exemple).
Or dans test.php , tu nous dis que tu as ton "entête" de vérification de statut basée sur un test de $_GET['statut'].
Il paraîtrait plus logique de faire un test sur $_SESSION['statut'] .
Sinon dans tous tes liens (par exemple sur ta page index), tu devrais faire <a href="../recherche/test.php?statut=<?=$statut?>">.
$_GET= variables passées par l'url
$_SESSION=variables de session.
Je suis pas sûr d'avoir été clair, mais je me comprends
Marsh Posté le 06-04-2004 à 09:50:51
PAs très clair mais je vais chercher dans cette voie et tester ça
Je vous tiens au courant
merci
Marsh Posté le 06-04-2004 à 09:53:35
Le plus simple, tu te fais une fonction à 2 sous
Code :
|
Et au début de toutes tes pages nécessitant une protection tu fais
Code :
|
et pis oilà.
Marsh Posté le 06-04-2004 à 09:59:06
Je te conseillerais juste de revoir un petit tutorial sur les superglobales ($_SESSION, $_GET, $_POST et compagnie) pour savoir ce qu'elles contiennent (sans rire, d'après ton code ça n'a pas l'air encore clair).
Plus un petit tuto sur les sessions.
M'enfin tu fais ce que tu veux, hein...
Marsh Posté le 06-04-2004 à 10:04:11
Ca roule je vais faire tout ça !
J'ai toute la matinée devant moi
Merci en tout cas !!
Marsh Posté le 06-04-2004 à 10:20:55
bin flute !
sur login.php j'ai bien ma variable statut qui s'initialise avec la valeur admin
$_SESSION['statut'];
$statut="admin";
header("Location:index.php?statut=$statut" )
et ma page test pour le moment j'ai mis ça en tete mais elle ne récupère pas la valeur de statut
session_start();
if (!($_SESSION['statut']) || ($_SESSION['statut']!='admin'))
{
Header("Location:login.php" );
exit();
}
??
Marsh Posté le 06-04-2004 à 10:23:22
hrmmmpff... Donne le code complet de login.php, on gagnera du temps !
Parce que bon
Code :
|
Marsh Posté le 06-04-2004 à 10:26:44
Hop: login.php
<?php
$erreurlog="";
$statut="";
$id="";
$pass=""; // pour éviter les erreurs d'exécution UNDEFINED VARIABLE
if($HTTP_POST_VARS['valider']=="ok" )
{
session_start();
$id=$HTTP_POST_VARS["id"];
$pass=$HTTP_POST_VARS["pass"];
if(($id=="aa" )AND($pass=="aa" ))
{
$_SESSION['statut'];
$statut="admin";
header("Location:index.php?statut=$statut" );
}
else
{
$erreurlog=1;
}
}
?>
Marsh Posté le 06-04-2004 à 10:37:46
Bon.
- au lieu de $HTTP_POST_VARS[''], utilise $_POST[''].
- ensuite, on retrouve le problème soulevé dans les messages plus haut.
Tu écris
$_SESSION['statut'];
ce qui ne correspond à rien, puisque tu ne lui affectes aucune valeur.
Tu affectes une valeur "admin" à la variable $statut, mais ça n'a rien à voir !
Pour affecter une valeur à $_SESSION['statut'], il faut faire comme pour une autre variable, mettre un = (eh oui)
->pour cette partie, ton code devient
Code :
|
Ensuite, sur tu utilises la fonction que je t'ai donnée pour lancer le test sur tes pages à protéger.
Marsh Posté le 06-04-2004 à 10:45:06
Superbe !
J'ai lu un autre tutorial en même temps !
Je comprends mieux maintenant !
Merci à toi en tout cas !
Marsh Posté le 05-04-2004 à 17:00:49
Hello
Après avoir réussi l'accés log et le controle de la page suivante (redirigée) avec un en tete de ce type:
<?php
session_start();
if ($_GET['statut'] !="admin" )
{ header("Location:../login.php" );
}
?>
Dans cette page j'ai des liens HREF dont le contenu est controlé par la même en tête, or il me redirige vers la page login...
Qué passa ?
Merci