Charger URL avec PHP

Marilyne -  
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je veux empêcher l'utilisateur d'accéder directement à certaines pages de mon site... s'il n'est pas "loguer".

Alors, je fais le test suivant :

if(!isset($_SESSION['login'])) // Session pas ouverte
header("location:index.php"); // Rediriger vers page connexion

Cependant, j'ai certaine pages qui ne sont utilisées avec la fonction include()...

Je ne peux donc pas utiliser la fonction header puisqu'il y a déjà du code HTML d'inscrit dans le fichier qui appelle le include...

Existe-t-il une autre fonction php qui permet d'ouvrir un URL...

Que me suggérez-vous ? Enlever les include() ???

Merci de vos conseils,

Marilyne

7 réponses

Cooki3s
 
La solution avec la balise META est mauvaise.
Car si on a une page "suppression.php" qui s'occupe de supprimer toute la base de données, par exemple, et que n'importe qui s'y connecte, il sera redirigé instantanément mais le code php s'executera quand même: la base de donnée sera supprimée.
C'est le problème d'un redirection qui se passe du côté du client.

De plus, si quelqu'un fait view-source:http://monsite.com/suppression.php
Il verra tout le code de la page html produite.

La solution de kij_82 est la bonne car elle empêche l'exécution de code PHP et la lecture du code source.
2
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Très bonne reflexion sur les balises META !
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Salut,

Tu as bien la redirection Javascript, mais il suffit de desactiver le javascript pour l'éviter....

Sinon tu as aussi le meta refresh en html...(mais là encore, je me demande si ça marche en dehors du <head>....)

En solution de secours, tu peux toujours terminer la page avec die() et faire une redirection javascript tout en inscrivant un lien vers la page que tu veux rediriger. Comme ça même si la personne a desactivé le Javascript, elle pourra cliquer sur le lien....
2
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Moi je pense que c'est une question d'organisation du site, je parle point de vus arborescance de ton répertoire de travail. De toute façon, même avec des include tu peux toujours rediriger l'utilisateur : il te suffit de programmer d'une certaine facon : Par exemple, si tu veux afficher qqchose en fonction d'une action d'un utilisateur, ta page ressemblera à cela :
// Ici ;
if(! isset($_SESSION['valid_user']))
   header("location: bidule.php");

if(action == truc )
{
    include "monFormulaire1.php";
}
else
{
   include "présentationDeLaPage.php";
}

Mais tu peux laiser ton test au début de fichier, de cette facon, tu paeux afficher plusieur chose sans changer de fichier et que ton test soit effectif.

++
2
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
De même, si tu veux faire des traitements et des formulaires :

code de "page.php" :
if(! isset($_SESSION['valid_user']))
   header("location: bidule.php");

if( $_POST['val'] == 1 )
{
   include "traitement.php";
}
else if( $_POST['val'] == 2)
{
   echo "Vous avez répondu coorectement au formulaire !";
}
else
{
   include "formulaire.php";
}

Et dans ton formualaire la redirection sera la suivante :
<FORM action=page.php?val=1" ....
</ccode>
Dans le fichier traitement.php :
if( tout les traitement sur le formulaire sont bon)
   header("location: page.php?val=2");



Voilà, ca répond ou probleme ?

++
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
enry
 
J'ai eu une solution par un internaute, et elle fonctionne bien.

J'ai eu le même problème qui m'a cassé la tête pendant plusieurs jours.

Remplace le

header('Location: mapage.php');

par

die('<META HTTP-equiv="refresh" content=0;URL=mapage.php>');

GrosLolo.

Je dirais donc merci GrosLolo
Enrique.
0
gaerebut
 
C'est simple, en effet la balise meta refresh marche bien en dehors de <head></head> ;)
donc sa donne sa :

f(!isset($_SESSION['login']))
echo"<META http-equiv=\"refresh\" content=\"0; URL=index.php\">";

Voila ^^

Heu je crois que ça marche pas avec des simple quote pour le echo ! A tester mais je promet rien !
-1
gaerebut Messages postés 1017 Date d'inscription   Statut Membre Dernière intervention   171
 
C'est simple, en effet la balise meta refresh marche bien en dehors de <head></head> ;)
donc sa donne sa :

f(!isset($_SESSION['login']))
echo"<META http-equiv=\"refresh\" content=\"0; URL=index.php\">";

Voila ^^

Heu je crois que ça marche pas avec des simple quote pour le echo ! A tester mais je promet rien !

Salut ;)
-1