free sessions(le rep est bien cree!)

free sessions(le rep est bien cree!) - PHP - Programmation

Marsh Posté le 02-03-2005 à 09:42:46    

Bonjour,
j'ai un sacre probleme:
J'ai fait 2 sites:  
- un avec accès membre, qui fonctionne :) , l'an dernier qui est heberge chez free
- j'essaie d'en faire un autre dans le même genre mais j'ai des pbm avec les sessions :??: :
- marche tres bien en local
- j'ai cree le repertoire SESSIONS a la racine du site de FREE
- pour simplfier j'ai fait 2 scripts php:
 
start.php:
session_start();
$_SESSION['login']='jojo';
header("location:http://***.free.fr/mapage.php" );
exit();
 
et verif.php
session_start();
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
include('login.htm');
exit;
}
 
Dans mapage.php
je fais un include('verif.php'); au debut de la page....
 
J'ai bien acces a ma page mais voila ce qu'il affiche :cry: :
 
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/free.fr/7/***/mapage.php:2)
 
Si qqun peut m'aider...
 
Merci

Reply

Marsh Posté le 02-03-2005 à 09:42:46   

Reply

Marsh Posté le 02-03-2005 à 10:02:56    

je vois pas à quoi serve les exit...
 
bon le pb c'est que dans start.php du fait  
$_SESSION['login']='jojo';  
et après dans ton verif.php tu refait un session_start, et il te dis que t'a pas le droit paske t'a déjà écris dans les variables de session avant...
 
Il te faut un seul session_start au tout début de ton script, si tu inclu plusieurs page, tu le place avant tout ça, et avant toute sortie HTML également...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-03-2005 à 10:07:51    

Tu peux poster le code de mapage.php ?

Reply

Marsh Posté le 02-03-2005 à 10:11:09    

Xav_ a écrit :

je vois pas à quoi serve les exit...
 
bon le pb c'est que dans start.php du fait  
$_SESSION['login']='jojo';  
et après dans ton verif.php tu refait un session_start, et il te dis que t'a pas le droit paske t'a déjà écris dans les variables de session avant...
 
Il te faut un seul session_start au tout début de ton script, si tu inclu plusieurs page, tu le place avant tout ça, et avant toute sortie HTML également...


Les exit sont très bien placés. Par exemple quand tu fais un header('Location: ton_url');, si tu fais pas de exit après, le script continue ;)
 
Tu as le droit de faire plusieurs session_start() :

Citation :

Note:  As of PHP 4.3.3, calling session_start() while the session has already been started will result in an error of level E_NOTICE. Also, the second session start will simply be ignored.


 
Le problème c'est ça (et c'est pour ça que je voudrais bien voir le code de mapage.php) :

Citation :

Note:  If you are using cookie-based sessions, you must call session_start() before anything is outputted to the browser.

Reply

Marsh Posté le 02-03-2005 à 10:23:01    

Merci pour les reponses aussi rapides...
 
Mapage.php
<?
include('verif.php');
 
?>
 
Blabla... (Rien que du txt)
 
<form method="post" action="kill.php">
<input type="submit" value="Kill it">
</form>
 
Le form a la fin sert simplement à fermer la session

Reply

Marsh Posté le 02-03-2005 à 10:33:09    

J'ai essayé a tout hazard de supprimer le exit() ? et le session_start() : je n'ai plus de message d'erreur... mais je n'ai plus acces a mapage.php ...
 
Ca sent la connerie du même genre que le rep sessions...

Reply

Marsh Posté le 02-03-2005 à 10:33:54    

mdk_co a écrit :

J'ai essayé a tout hazard de supprimer le exit() ? et le session_start() : je n'ai plus de message d'erreur... mais je n'ai plus acces a mapage.php ...
 
Ca sent la connerie du même genre que le rep sessions...


 

Xav_ a écrit :

je vois pas à quoi serve les exit...
 
bon le pb c'est que dans start.php du fait  
$_SESSION['login']='jojo';  
et après dans ton verif.php tu refait un session_start, et il te dis que t'a pas le droit paske t'a déjà écris dans les variables de session avant...
 
Il te faut un seul session_start au tout début de ton script, si tu inclu plusieurs page, tu le place avant tout ça, et avant toute sortie HTML également...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-03-2005 à 10:50:30    

Je ne comprends pas trop la derniere phrase de Xav_a:
start.php
session_start();
$_SESSION['login']='jojo';
header("location:http://***.free.fr/mapage.php" );  
 
mapage.php
include('verif.php'); au debut de la page....  
 
verif.php
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
include('login.htm');
}  
 
J'ai testé avec ces modifs: je n'ai plus accès a mapage.php
De plus j'ai trouvé des tas de tuto avec des start_sessions sur ttes les pages!
Soluce?...
Merci

Reply

Marsh Posté le 02-03-2005 à 10:53:33    

mdk_co a écrit :

Je ne comprends pas trop la derniere phrase de Xav_a:
start.php
session_start();
$_SESSION['login']='jojo';
header("location:http://***.free.fr/mapage.php" );  
 
mapage.php
include('verif.php'); au debut de la page....  
 
verif.php
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
include('login.htm');
}  
 
J'ai testé avec ces modifs: je n'ai plus accès a mapage.php
De plus j'ai trouvé des tas de tuto avec des start_sessions sur ttes les pages!
Soluce?...
Merci


 
Quand tu fais un include(), c'est comme si tu insérais à cet endroit le code de la page incluse...tu as donc là 2 session_start() dans la même.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-03-2005 à 11:08:16    

Marche toujours pas:
2 autres questions:
1/ header: n'est-ca pas une redirection?
2/ avec les scripts ci-dessous ie
a)start.php
<?
session_start();
$_SESSION['login']='jojo';
header("location:http://***.free.fr/mapage.php" );  
?>  
b)mapage.php
<?include('verif.php');  
?>
blabla...  
 
c)verif.php
C)
<?
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autorise à acceder à cette zone';
include('erreur.htm');
}  
?>
si j'ai bien compris ca devrait marcher, mais pbm:  
reagi comme si  $_SESSION['login'] n'existait pas
ie affiche la page erreur...
 
A force de faire des modif ca va finir par marcher ...
 
Encore merci...

Reply

Marsh Posté le 02-03-2005 à 11:08:16   

Reply

Marsh Posté le 02-03-2005 à 11:32:41    

Je pense que tu dois avoir un caractère parasite qui traine dans tes fichiers (d'où le message : output started at /var/www/free.fr/7/***/mapage.php:2).
 
Il ne faut aucun caractère en dehors des balises PHP avant l'appel à session_start().

Reply

Marsh Posté le 02-03-2005 à 11:33:00    

Citation :

Les exit sont très bien placés. Par exemple quand tu fais un header('Location: ton_url');, si tu fais pas de exit après, le script continue


 
ben pas sur du tour, si tu fous un header "ton_URL", ça va à "ton_URL" et le reste de ce qu'il y avait dans ta page ne va pas pouvoir se dérouler...
 
j'avais un form à une période, le visiteur choisissait 1,2 ou 3 dans une liste, puis submitait...
à la récup du form (dans la meme page, je faisait un header vers page1 ou page2 ou page3 selon la sélection...
ben ça a très bien marché et le reste du script (donc affichage du form) ne s'est jamais foutu en dessous de ma page1, page2 ou page3...
 
--> Tu le rédirige vers une autre page, ben il se barre et ne va pas exécuter ce qui reste dans celle-là...
 
pour ce qui est des "multiples" sessions_start... meme si la doc dit que ça va ne provoquer qu'un notice, ça reste quand meme à éviter... pour moi un notice reste tout de meme une erreur, sinon à quoi bon déclarer ses variables alors, suffit de masquer les notices... et vive la propreté du code...
 
En gros mdk_co, je suppose que tu utilise des pseudo-frames, ce que jefait, c'est que mon session_start et au début de ma page index.php, ensuite j'inclu mes pages, mais aucune de celle-ci n'a de session_start, car peu importe dans laquelle je suis, je sais qu'il a été annoncé avant l'inclusion... ;)
 
EDIT: et relis ce que j'avais dis aussi

Citation :

et avant toute sortie HTML également...


Message édité par Xav_ le 02-03-2005 à 11:35:21

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-03-2005 à 11:33:12    

skeye a écrit :

Quand tu fais un include(), c'est comme si tu insérais à cet endroit le code de la page incluse...tu as donc là 2 session_start() dans la même.

Encore une fois ça ne pose pas de problème :)

Reply

Marsh Posté le 02-03-2005 à 11:36:22    

ratibus a écrit :

Encore une fois ça ne pose pas de problème :)


 
Tu as au moins droit à un warning.:o
Et ça n'a pas d'intérêt à priori.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-03-2005 à 11:53:26    

Bien, si j'ai bien compris ce qu'ecrit xav, avec le code du post precedent ca devrait fonctionner mais ca bloque: direct sur la page d'erreur , ne tient pas compte de la var de session! Le pire c'est que le code original tourne en local!
Ca marche pas mais j'en sais un peu plus sur le header et le include, vais bosser tout ca... Merci

Reply

Marsh Posté le 02-03-2005 à 11:58:57    

Citation :

si j'ai bien compris ce qu'ecrit xav, avec le code du post precedent ca devrait fonctionner


 
j'ai pas dis ça non plus...
 
dans mapage.php tu fait un include verif.php, qui vérifi, mais quand fait tu le "include star.php qui va déclarer la variable login ???
 
File nous un peu plus de code, qui appelle quoi et quand ??? (à moins que tu l'ai tout bien expliqué et que ce soit moi qui comprenne pas...)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-03-2005 à 12:08:33    

J'ai un form tout simple dans index.html:
<form method="post" action="start.php">
<input type="submit" value="Start it">
 
start.php
<? session_start();
$_SESSION['login']='jojo';  
header("location:http://***.free.fr/mapage.php" );  
// exit(); [1]sert plus a rien;)
?>
   
mapage.php
<?include('verif.php');  ?>
blabla...  
 
verif.php
<?  
// start_session();  [2]sert aussi à rien?  
if(!isset($_SESSION['login'])) {
echo 'Vous n\'êtes pas autorise à acceder à cette zone';
include('erreur.htm');}  
?>
 
C'est le code complet!
J'ai fait des scripts de plusieurs pages qui fonctionnaient impec, celui-la il fait 10 lignes et ca m***e...
 
Merci de passer un peu de tps sur mon script à 2ct€(surtout que c'est la cle de voute de mon site!)...

Reply

Marsh Posté le 02-03-2005 à 13:52:24    

Je viens de tester comme ça :
 
start.php :

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['login']='jojo';
  4. header("Location: mapage.php" );
  5. exit();
  6. ?>


 
mapage.php :

Code :
  1. <?php
  2. include('verif.php');
  3. ?>
  4. OK


 
verif.php :

Code :
  1. <?php
  2. session_start();
  3. if(!isset($_SESSION['login'])) {
  4. echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
  5. include('login.htm');
  6. exit;
  7. }
  8. ?>


 
 
Ca marche très bien, je vois bien le OK sur mapage.php

Reply

Marsh Posté le 02-03-2005 à 13:53:46    

skeye a écrit :

Tu as au moins droit à un warning.:o
Et ça n'a pas d'intérêt à priori.:o


C'est un notice ;)
 
Et puis de toute façon dans le code qu'il a posté, à aucun moment session_start() est appelé 2 fois  :na:

Reply

Marsh Posté le 02-03-2005 à 13:59:33    

Citation :

Et puis de toute façon dans le code qu'il a posté, à aucun moment session_start() est appelé 2 fois  :na:


on est d'accord, mais je n'en était pas sur avant qu'il me mette son cheminement complte ;)
et je mantiens ce que j'ai dis sur les notices :na: aussi (humour inside)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-03-2005 à 14:02:31    

Citation :

Ca marche très bien, je vois bien le OK sur mapage.php


c'est cool
 
et juste par curiosité, tu peux tester ça en virant le exit que est dans start.php ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-03-2005 à 14:07:37    

Celui qui est dans le start ne sert à rien vu que je n'ai rien qui suit mon header() ;)

Reply

Marsh Posté le 02-03-2005 à 14:28:52    

Je ne sais pas si c'est free mais j'ai tjs ce WARNING alors qu'en local ca marche impec!
Ce ne serait pas une histoire de version php 3,4,5 ou que sais-je encore?
 Une question qui n'a presque plus rien à voir avec mon script: speciale ratibus, comment fais-tu pour ecrire le code dans un encadré (dans les posts) ?
C'est bien plus lisible...

Reply

Marsh Posté le 02-03-2005 à 14:44:00    

Ca marche mais je ne sais pas pourquoi...
Il y avait peut être un fichier buggé : j'ai tout effacé, tout reuploadé et c'est OK...
On va passer aux pseudo-Frames maintenant...
Merci A RATIBUS, XAV et SKEYE, à bientôt.

Reply

Marsh Posté le 02-03-2005 à 14:48:02    

mdk_co a écrit :

Je ne sais pas si c'est free mais j'ai tjs ce WARNING alors qu'en local ca marche impec!
Ce ne serait pas une histoire de version php 3,4,5 ou que sais-je encore?
 Une question qui n'a presque plus rien à voir avec mon script: speciale ratibus, comment fais-tu pour ecrire le code dans un encadré (dans les posts) ?
C'est bien plus lisible...


Tu encadres ton code avec des balises cpp (essaie d'éditer mon message tu verras comment il est fait ;)).

Reply

Marsh Posté le 02-03-2005 à 14:48:38    

PS: j'ai fait une moidf c'etait peut-être ca?
location:http://***.free.fr/mapage.php => location:mapage.php
 
Ciao et merci

Reply

Marsh Posté le 02-03-2005 à 14:52:51    

Drolement bien fait ce forum...
Tout est OK...  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed