une erreur dans le script de session

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 : une erreur dans le script de session

reponse

par pascal denn » 16 oct. 2005, 19:31

Cyrano tu es le meilleur - tout simplement merci cela fonctionne maintenant.

merci pour ta patience. vraiment merci.

par Cyrano » 16 oct. 2005, 19:26

Vire les deux lignes echo() qui affichent le login et le passe. Tu as un header qui ne le supporte pas et c'est ce qui génère l'erreur.

reponse

par pascal denn » 16 oct. 2005, 19:23

re

c une page index.php dans un repertoire xxx.
g un index a la racine ou l'on renseigne le login et le passe (c pour cela que j'ai fais un echo)
donc l'info circule bien...
la ma page index fait partie du repertoire session et c bien le script complet de mon index.php

mais qui chez moi me donne tjr la mm erreur (mm apres avoir fais un copie colle de tes rectifs.

Warning: Cannot modify header information - headers already sent by (output started at /home.2/pronos/www/sectioncession/index.php:8) in /home.2/xxxxx/www/xxxxxxx/index.php on line 21
<?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 = "xxxxxx"; 
$passe_valide = "xxxxx"; 
$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.'; 
} 
?>
merci pour votre patience car là je rame mais sec voir tres sec.

Re: reponse

par Cyrano » 16 oct. 2005, 19:07

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.';
}
?>

reponse

par pascal denn » 16 oct. 2005, 18:56

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

par Cyrano » 16 oct. 2005, 18:12

Décidément, je crois que je vais faire la sieste, je l'ai pas vu :oops:

par Truc » 16 oct. 2005, 18:03

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
:wink:

par Cyrano » 16 oct. 2005, 18:00

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

par Truc » 16 oct. 2005, 17:51

c'est aussi discret que vicieux ... :lol:
tu affiche un espace en faissant:
echo $a;
enleve cette ligne :wink:

par Invité » 16 oct. 2005, 17:23

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.';
}
?>

par Truc » 16 oct. 2005, 17:18

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

reponse

par pascal denn » 16 oct. 2005, 17:08

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

par Cyrano » 16 oct. 2005, 17:02

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

par pascal denn » 16 oct. 2005, 16:59

merci

kel espace ?

reponse

par pascal denn » 16 oct. 2005, 16:45

merci pour ta reponse

mais comment faire la verif du login et du passe apres l'ouverture de la session

merci