Page 1 sur 2
une erreur dans le script de session
Posté : 16 oct. 2005, 16:19
par pascal den
Bonjour,
lorsque j'execute ce script j'ai deux erreurs:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home.2/xxxx/www/xxxx/index.php:7) in /home.2/xxxx/www/xxxxxxx/index.php on line 18
Warning: Cannot modify header information - headers already sent by (output started at /home.2/xxxxx/www/xxxxxx/index.php:7) in /home.2/xxxxx/www/xxxxxx/index.php on line 24
je rame depuis deux jours dessus. merci pour votre aide.
<?php
// On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
$a=" ";
$login_valide = "test";
$passe_valide = "123456";
echo $_POST['login'];
echo $a;
echo $_POST['passe'];
// on teste si nos variables sont définies
if (isset($_POST['login']) && isset($_POST['passe'])) {
// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
if ($login_valide == $_POST['login'] && $passe_valide == $_POST['passe']) {
// dans ce cas, tout est ok, on peut démarrer notre session
// on la démarre :)
session_start ();
// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
$_SESSION['login'] = $_POST['login'];
$_SESSION['passe'] = $_POST['passe'];
// on redirige notre visiteur vers une page de notre section membre
header ('location: membre.php');
}
else {
// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
echo '<body onLoad="alert(\'Membre non reconnu...\')">';
// puis on le redirige vers la page d'accueil
echo '<meta http-equiv="refresh" content="0;URL=htpp://www.xxxxx.com/">';
}
}
else {
echo 'Les variables du formulaire ne sont pas déclarées.';
}
?>
Posté : 16 oct. 2005, 16:23
par jeff
salut
tout est dans ton message d'erreur
il faut mettre session_start avant toute autre sortie, c'est a dire avant du html ou des echo, print....
Posté : 16 oct. 2005, 16:45
par Truc
salut
tout est dans ton message d'erreur
il faut mettre session_start avant toute autre sortie, c'est a dire avant du html ou des echo, print....
... et aussi tout espace
reponse
Posté : 16 oct. 2005, 16:45
par pascal denn
merci pour ta reponse
mais comment faire la verif du login et du passe apres l'ouverture de la session
merci
reponse
Posté : 16 oct. 2005, 16:59
par pascal denn
merci
kel espace ?
Posté : 16 oct. 2005, 17:02
par Cyrano
La session n'est qu'un contenant et n'a rien à voir avec le login ni le mot de passe: éventuellement tu peux enregistrer le login dans une variable de session puorl le suivi de l'internaute, mais c'est indépendant: tu peux parfaitement lancer la session en début de script, ça ne donnera ni n'enlèvera aucune permission à qui que ce soit: il faudra toujours passer par l'indentification.
Donc mets le session_start() en début de script, en première instruction avant tout le reste et sourtout avant d'envoyer la moindre information vers le navigateur. Ensuite dans ton script d'identification, tu peux ajouter des variables de session ou les modifier à la session en cours.
reponse
Posté : 16 oct. 2005, 17:08
par pascal denn
merci
voila le scipt nouveau :
<?php
session_start ();
// On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
$a=" ";
$login_valide = "test";
$passe_valide = "123456";
echo $_POST['login'];
echo $a;
echo $_POST['passe'];
// on teste si nos variables sont définies
if (isset($_POST['login']) && isset($_POST['passe'])) {
// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
if ($login_valide == $_POST['login'] && $passe_valide == $_POST['passe']) {
// dans ce cas, tout est ok, on peut démarrer notre session
// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
$_SESSION['login'] = $_POST['login'];
$_SESSION['passe'] = $_POST['passe'];
// on redirige notre visiteur vers une page de notre section membre
header ('location: membre.php');
}
else {
// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
echo '<body onLoad="alert(\'Membre non reconnu...\')">';
// puis on le redirige vers la page d'accueil
echo '<meta http-equiv="refresh" content="0;URL=htpp://www.123pronos.com/">';
}
}
else {
echo 'Les variables du formulaire ne sont pas déclarées.';
}
?>
j'ai encore une erreur : sur la fonction header ('location: membre.php');
Warning: Cannot modify header information - headers already sent by (output started at /home.2/pronos/www/xxxx/index.php:7) in /home.2/xxxx/www/sectioncession/index.php on line 19
Posté : 16 oct. 2005, 17:18
par Truc
utilise les balises
pour mettre du code la prochaine fois, c'est plus lisible.
sinon il y a un espace juste apres header, l'erreur vient certainement de la
[code] header ('location: membre.php'); [/code]
remplace par:
[code]header('location: membre.php');[/code]
EDIT; évidement c'est quand je me plaind des [php] pas moyen de l'utiliser il me met *php a la place :-k
Posté : 16 oct. 2005, 17:23
par Invité
desole mais cela ne fonctionne tjr pas
<?php
session_start ();
// On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
$a=" ";
$login_valide = "xxxxx";
$passe_valide = "xxxxx";
echo $_POST['login'];
echo $a;
echo $_POST['passe'];
// on teste si nos variables sont définies
if (isset($_POST['login']) && isset($_POST['passe'])) {
// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
if ($login_valide == $_POST['login'] && $passe_valide == $_POST['passe']) {
// dans ce cas, tout est ok, on peut démarrer notre session
// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
$_SESSION['login'] = $_POST['login'];
$_SESSION['passe'] = $_POST['passe'];
// on redirige notre visiteur vers une page de notre section membre
header('location: membre.php');
}
else {
// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
echo '<body onLoad="alert(\'Membre non reconnu...\')">';
// puis on le redirige vers la page d'accueil
echo '<meta http-equiv="refresh" content="0;URL=htpp://www.123pronos.com/">';
}
}
else {
echo 'Les variables du formulaire ne sont pas déclarées.';
}
?>
Posté : 16 oct. 2005, 17:51
par Truc
c'est aussi discret que vicieux ...
tu affiche un espace en faissant:
echo $a;
enleve cette ligne

Posté : 16 oct. 2005, 18:00
par Cyrano
Non, maintenant que le session_start est au bon endroit, l'ereur vient d'ailleurs : je soupçonne que ce fichier est lui-même inclus dans une page index : C'est dans cette page index qu'il doit y avoir d'autres données envoyées vers le navigateur, des choses du genre:
<html>
<head>
<title>etc.....
Posté : 16 oct. 2005, 18:03
par Truc
Non, maintenant que le session_start est au bon endroit, l'ereur vient d'ailleurs
oui il n'y a plus d'erreur concernant la session mais le header et...
$a=" ";
...
$login_valide = "xxxxx";
$passe_valide = "xxxxx";
echo $_POST['login'];
echo $a;
...
Il y aura donc bien un espace

Posté : 16 oct. 2005, 18:12
par Cyrano
Décidément, je crois que je vais faire la sieste, je l'ai pas vu

reponse
Posté : 16 oct. 2005, 18:56
par pascal denn
merci pour vos reponses
mais cela ne change rien
<?php
session_start ();
// On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
$login_valide = "xxxxx";
$passe_valide = "9xxxxx";
echo $_POST['login'];
echo $_POST['passe'];
// on teste si nos variables sont définies
if (isset($_POST['login']) && isset($_POST['passe'])) {
// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
if ($login_valide == $_POST['login'] && $passe_valide == $_POST['passe']) {
// dans ce cas, tout est ok, on peut démarrer notre session
// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
$_SESSION['login'] = $_POST['login'];
$_SESSION['passe'] = $_POST['passe'];
// on redirige notre visiteur vers une page de notre section membre
header('location:membre.php');
}
else {
// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
echo '<body onLoad="alert(\'Membre non reconnu...\')">';
// puis on le redirige vers la page d'accueil
echo '<meta http-equiv="refresh" content="0;URL=htpp://www.xxxxx.xxx/">';
}
}
else {
echo 'Les variables du formulaire ne sont pas déclarées.';
}
?>
oui c une page d'index.php sans rien de plus.
mais j'ai tjrs le message suivant
Warning: Cannot modify header information - headers already sent by (output started at /home.2/pronos/www/sectioncession/index.php:6) in /home.2/xxxxx/www/xxxxxx/index.php on line 17
merci pour votre aide
Re: reponse
Posté : 16 oct. 2005, 19:07
par Cyrano
oui c une page d'index.php sans rien de plus.
On doit traduire ça comment ? C'est ça la page index ou c'est un fichier inclu ailleurs ?
Je viens de tester ton script en local: j'y ai fait juste une ou deux modifs mineures, mais il fonctionne très bien :
<?php
session_start ();
// On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
$login_valide = "xxxxx";
$passe_valide = "9xxxxx";
$login = isset($_POST['login']) ? $_POST['login'] : "";
$passe = isset($_POST['passe']) ? $_POST['passe'] : "";
echo $login;
echo $passe;
// on teste si nos variables sont définies
if (!empty($login) && !empty($passe))
{
// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
if ($login_valide == $login && $passe_valide == $passe)
{
// dans ce cas, tout est ok, on peut démarrer notre session
// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
$_SESSION['login'] = $login;
$_SESSION['passe'] = $passe;
// on redirige notre visiteur vers une page de notre section membre
header("location:./membre.php");
}
else
{
// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
echo '<body onLoad="alert(\'Membre non reconnu...\')">';
// puis on le redirige vers la page d'accueil
echo '<meta http-equiv="refresh" content="0;URL=htpp://www.xxxxx.xxx/">';
}
}
else
{
echo 'Les variables du formulaire ne sont pas déclarées.';
}
?>