Pb avec la fonction session_start()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb avec la fonction session_start()

par Chérubin » 02 nov. 2006, 15:27

*Merci pour vos réponses. J'ai effectivement résolu mon problème en déplaçant le "session_start" vers la toute première ligne de ma page php.

par albat » 02 nov. 2006, 11:22

rien n'empêche donc d'avoir un code php de 100 lignes sans flux html
(ni echo, ni print, ni retour à la ligne en dehors des balises php, etc.)
qui se terminerait par le session_start() suivi de html ou d'un header()
Absolument !
Mais c'est tout de même jouer avec le feu... :wink:

par Ryle » 02 nov. 2006, 11:13

Le code d'ouverture d'une session, tout comme l'envoi d'un header, nécessite d'être placé au sommet de ta page.
Juste une petite précision, ce n'est pas une "nécessité" de le placer au sommet, mais c'est quand même plus simple. Il suffit simplement de l'avoir placé avant de faire appel à $_SESSION et/ou d'avoir commencé à envoyer du code au navigateur (sous quel que forme que ce soit : comme avec les header)

Le message d'erreur est clair à ce sujet : "headers already sent" > le flux html a déjà été envoyé.

Et pour en revenir à mon histoire, rien n'empêche donc d'avoir un code php de 100 lignes sans flux html (ni echo, ni print, ni retour à la ligne en dehors des balises php, etc.) qui se terminerait par le session_start() suivi de html ou d'un header() :
<?php

// ... 97 lignes de codes php

session_start();
$_SESSION['var'] = $resultatDuCode;
header("Location: page.php");
?>
C'était la minute culturelle (?) de Ryle ;)

par albat » 02 nov. 2006, 09:44

Le code d'ouverture d'une session, tout comme l'envoi d'un header,
nécessite d'être placé au sommet de ta page.

À en juger par la présence de la balise <body> avant l'appel de session_start()
et par la nature du message d'erreur qui t'est retourné, je devine que ce n'est pas le cas... ;)

Pb avec la fonction session_start()

par Chérubin » 02 nov. 2006, 09:37

J'ai créé 2 pages en php pour tester l'utilisation de variables de session. Ca ne marche pas (mon site est hébergé par free).

Page Essai.php contenant :
<body>
<?
session_start();
session_register("Titre");
$_SESSION['Titre']="Le cinéma de grand-père";
?>
<br>
<?
?>
<a href="Essai1.php">Cliquer ici</a>
<br>
</body>

Page Essai1.php contenant :
<body>
<?
session_start();
echo $_SESSION['Titre'];
?>
</body>

Voici les messages d'erreur qui s'affichent :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/109/free.fr/c/d/cherlab/Essai.php:9) in /mnt/109/free.fr/c/d/cherlab/Essai.php on line 10

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/109/free.fr/c/d/cherlab/Essai1.php:9) in /mnt/109/free.fr/c/d/cherlab/Essai1.php on line 10


Et bien sûr, le titre du film (Le cinéma de grand-père) ne s'affiche pas dans la page Essai1.php

Je n'arrive pas à trouver de solution obtenir l'affichage de la variable de session dans ma page Essai1.php, après de multiples essais inutiles.
Quelqu'un pourrait-il me suggérer une solution ?