Problème php - Fonction die, arret de script

  • Auteur de la discussion Auteur de la discussion guicara
  • Date de début Date de début
WRInaute passionné
Bonjour,

Je viens d'installer un espace membre.
Si l'utilisateur n'est pas connecté sur une page qui require une authentification, le script s'arrère et un message s'arrète.

Code:
<?php
session_start(); //On ouvre la session pour pouvoir verifier si le membre est connecté
require("conf.php3"); //Commme d'ab

if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
	die('Vous devez être identifier pour pouvoir utiliser cette fonctionnalité. Si vous ne possédez pas de compte, rendez vous au formulaire d\'inscription.');
}

....
?>

Le problème:

Ce message ne s'affiche pas dans le design de mon site, mais sur une page blanche, si j'esseille de faire sa >

Code:
<?php
session_start(); //On ouvre la session pour pouvoir verifier si le membre est connecté
require("conf.php3"); //Commme d'ab

...
?>

Mon code html

<? 
if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
	die('Vous devez être identifier pour pouvoir utiliser cette fonctionnalité. Si vous ne possédez pas de compte, rendez vous au formulaire d\'inscription.');
}
?>      (juste avant mon texte que je ne veux pas afficher)

Fin code html

La moitié de mon design s'affiche, car quand j'affiche le design, ce qui suit est stoppé (est ce n'est pas que le php ! c'est tout le design... ce qui fait que je ne vois pas la bas de mon design...

Comment faire ?
Y a t'il un autre moyen pour dire au visiteur qu'il ne peux pas voir cette page ?

Merci d'avance !
 
WRInaute discret
Au lieu d'arrêter l'exécution du script si l'utilisateur n'est pas connecté, fais plutôt un include du texte à afficher si l'utilisateur est connecté. Sinon, tu affiches le message d'erreur.

if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
print('Vous devez être identifier pour pouvoir utiliser cette fonctionnalité. Si vous ne possédez pas de compte, rendez vous au formulaire d\'inscription.');
}

else
{
print(' ton texte à afficher');
};
 
WRInaute passionné
Si j'ai bien compris si l'utilisateur n'est pas connecté sela s'affiche:

print('Vous devez être identifier pour pouvoir utiliser cette fonctionnalité. Si vous ne possédez pas de compte, rendez vous au formulaire d\'inscription.');

Si il est connecté le texte "ton texte à afficher" s'affiche.
ok c'est très bien, mais ce n'est pas supert,

car si à la place de "ton texte à afficher" je veux mettre par exemple un script, un tableau html, c'est compliqué, il faudrais que je mette des "\"

Comprend tu ?

Enfaite je voudrais cacher un formulaire php d'ajout de kis graphique, de commentaires...
 
WRInaute accro
Eh bien, il suffit que tu sorte des balises php, et que tu mette ton code.
Code:
<?php
if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
print('Vous devez être identifier pour pouvoir utiliser cette fonctionnalité. Si vous ne possédez pas de compte, rendez vous au formulaire d\'inscription.');
}
else
{ ?>
<table><tr><td>test</td></tr></table>
<?php }; ?>

Même chose pour le if au dessus.
Il est logique que le bas de ton design soit coupé lors d'un die.
die arrete l'execution d'un script. Donc, ton script est arreté en plein milieu, tu n'a pas le reste.
 
WRInaute passionné
Merci pour tous vos informations, je vais essailer de faire ce que ma dit kazhar, lancé sur l'idée de ninive.

Je vous tiens au courant dans les prochaines heures !
Cordialement

Guicara

Edit ----

Cette méthode reste t'elle sécurisé ?
 
WRInaute passionné
Excusez moi pour le double post,
tout marche très bien.

J'ai rajouter un block dans mon menu, qui s'affiche (que si on est connecté). Il contient des infos pour l'identifier....

La tout parche
apart quand je met le code pour afficher le menu (que si identifier) sur la page ou je possèfe mon livre d'or (script php) qui n'utilise pas les sessions.

A la place du menu du membre (connecté ou pas) je vois ceci:

Code:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /homepages/18/d144479851/htdocs/livre/index.php:11) in /homepages/18/d144479851/htdocs/livre/index.php on line 571

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /homepages/18/d144479851/htdocs/livre/index.php:11) in /homepages/18/d144479851/htdocs/livre/index.php on line 571

Vous pouvez voir par vous même:
http://www.graphiques-kits.com/livre/index.php

D'ou sa vient ?
J'ai ensuite enlever le code pour afficher ce fameux menu, et sa apparait toujours !

Merci de votre aide
(ps: je n'ais pas voulu ouvrir un nouveau post pour sa)
 
WRInaute impliqué
tu peux auss utiliser du code html dans le die

Code:
die("<html><body>pas bien</body></html>");

pour info
 
WRInaute accro
Mais c'est horriblement crade de mettre toute la fin de ta page dans le die ...
Pour ton erreur, cela vient du fait que tu a envoyé des caractères, via un echo ou avant d'entrer dans la balise php, donc les headers ont déjà été transmis et il ne peut le refaire.
 
Discussions similaires
Haut