Problème php - Fonction die, arret de script

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


guicara
WRInaute accro
WRInaute accro
 
Messages: 2297
Inscription: Jeu Fév 02, 2006 20:40

Problème php - Fonction die, arret de script

Message le Dim Juin 18, 2006 22:58

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: Tout sélectionner
<?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: Tout sélectionner
<?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 !

ninive
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 147
Inscription: Mer Mar 03, 2004 11:58

Message le Lun Juin 19, 2006 0:20

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');
};


guicara
WRInaute accro
WRInaute accro
 
Messages: 2297
Inscription: Jeu Fév 02, 2006 20:40

Message le Lun Juin 19, 2006 11:57

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...


dmathieu
Modérateur
Modérateur
 
Messages: 6920
Inscription: Ven Jan 09, 2004 16:21

Message le Lun Juin 19, 2006 13:18

Eh bien, il suffit que tu sorte des balises php, et que tu mette ton code.
Code: Tout sélectionner
<?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.


mowmow
WRInaute passionné
WRInaute passionné
 
Messages: 975
Inscription: Mer Nov 03, 2004 9:40

Message le Lun Juin 19, 2006 14:31

Ou encore mieux, utiliser des templates... :)


guicara
WRInaute accro
WRInaute accro
 
Messages: 2297
Inscription: Jeu Fév 02, 2006 20:40

Message le Lun Juin 19, 2006 16:10

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é ?


guicara
WRInaute accro
WRInaute accro
 
Messages: 2297
Inscription: Jeu Fév 02, 2006 20:40

Message le Lun Juin 19, 2006 17:36

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: Tout sélectionner
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)

sebnutt
WRInaute accro
WRInaute accro
 
Messages: 1308
Inscription: Mer Déc 10, 2003 17:25

Message le Lun Juin 19, 2006 19:43

tu peux auss utiliser du code html dans le die

Code: Tout sélectionner
die("<html><body>pas bien</body></html>");


pour info


guicara
WRInaute accro
WRInaute accro
 
Messages: 2297
Inscription: Jeu Fév 02, 2006 20:40

Message le Lun Juin 19, 2006 19:55

ok merci
je saurais la prochaine fois ;)


dmathieu
Modérateur
Modérateur
 
Messages: 6920
Inscription: Ven Jan 09, 2004 16:21

Message le Mar Juin 20, 2006 7:22

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.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité