Problème exit je pense

Eléphanteau du PHP | 30 Messages

09 août 2007, 14:22

Bonjour,
J'ai un code pour vérifié que mon utilisateur est bien connecté, mais celui-ci m'affiche une erreur, voici laquelle:
Parse error: parse error, unexpected T_EXIT in /homepages/4/d205857560/htdocs/mon-hotel-virtuel.com/site2/membres/index.php on line 20

et voici mon code:
<?
session_start();

/*
si la variable de session login n'existe pas cela siginifie que le visiteur
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
  echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
  header("location:http://www.mon-hotel-virtuel.com/login.php")
  exit();
}
?>
Quelle erreur y a t-il ?

Merci d'avance pour vos réponses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 août 2007, 14:24

Modération :
benjam89, il me semble que tu commences à te faire aux habitudes du forum. Pense bien à utiliser les balises [code] ou [php] (selon le langage utilisé).

Pour cette fois-ci, je l'ai fait pour toi mais essaye d'y penser ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 451 Messages

09 août 2007, 14:30

Bonjour,

Bizare : le code donné ne contient pas 20 lignes !
C'est bien le contenu du fichier :
/homepages/4/d205857560/htdocs/mon-hotel-virtuel.com/site2/membres/index.php
que tu as indiqué ?

Et autrement où en es tu de ton problème de message à afficher ?
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 août 2007, 14:33

Qu'est ce qu'on doit toujours mettre à la fin des lignes pour terminer une instruction et que tu aurais omis à la fin de ton header(), laissant php interpréter la ligne suivante comme suite de l'instruction et générant du coup une erreur ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

09 août 2007, 14:38

les ; ???

lol

EDIT: Merci, sa fonctionne, il y as juste un petit quelque chose, puisque je vais sur la page sans me connecter (pour test), j'ai le message qui s'affiche, normal, mais sa ne me redirige pas...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 août 2007, 14:43

C'est normal, tu ne peux pas afficher de texte avant un header : http://www.phpfrance.com/forums/voir_sujet-47.php
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

09 août 2007, 14:45

donc je peut mettre le message après alors ? ou je ne peut pas le mettre du tout ?

Mammouth du PHP | 536 Messages

09 août 2007, 14:49

le mieux est de faire ainsi :
<?
if(!isset($_SESSION['login'])) {
  header("location:http://www.mon-hotel-virtuel.com/login.php?err=nook")
  exit();
}
?>
et le code de la page login.php :
<?
if (  isset($_GET['err']) and ($_GET['err'] == 'nook')  ){
  echo "vous ne pouvez avoir accès à cette page";
}
?>
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 août 2007, 14:52

Pour que la redirection via header fonctionne, il ne faut absolument rien envoyé au navigateur avant (et après ca ne sert à rien, puisque tu sera redirigé entre temps :))

Le mieux serait donc de rediriger vers une page spécifique avec ton message, ou bien de passer un paramètre à la page que tu ouvres pour que ce soit elle qui affiche le message :
  header("location:/login.php?param=valeur");
exit();
if (isSet($_GET['param']) && $_GET['param'] == 'valeur') {
  echo '...';
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 30 Messages

09 août 2007, 14:55

merci, j'ai essayé, mais sa fait toujours rien, voici le code de vérif sur l'espace membre:
<?
if(!isset($_SESSION['login'])) {
  header("location:http://www.mon-hotel-virtuel.com/site2/login.php?err=nook");
  exit();
}
?>

Mammouth du PHP | 536 Messages

09 août 2007, 15:01

comment ça ça ne fait rien ?
Es-tu sûr que cette variable de session n'existe pas ?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Eléphanteau du PHP | 30 Messages

09 août 2007, 15:03

bien sûr, car j'ai fait exprès d'aller sur la page membre sans passer par le formulaire de connexion pour voir si ce code fonctionne :)

Mammouth du PHP | 536 Messages

09 août 2007, 15:05

et t'as quoi comme message ?
Tu arrive quand même sur la page ?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Eléphanteau du PHP | 30 Messages

09 août 2007, 15:05

non, sa affiche une page blanche

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 août 2007, 15:06

header("Location:...");
:?:


Edit :
non, sa affiche une page blanche
Donc ça fait bien quelque chose ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...