Page blanche sur session_start

bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010 - 12 oct. 2008 à 16:49
bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010 - 13 oct. 2008 à 21:32
Bonjour,

j'ai une page blanche quand je valide le formulaire d'authentification. Il y a 2 pages, une pour le formulaire et l'autre pour traiter les infos du formulaire dont voici le code :

<?php

if ( isset ($_POST['utilisateur']) || isset ($_POST['mdp']) )
{

mysql_connect('localhost', 'root', '');
mysql_select_db('gestion_conges');
//requête vers la table users
$query "SELECT utilisateur, mdp FROM users WHERE utilisateur '".$_POST['utilisateur']."' AND mdp = '".$_POST['mdp']."' ";

// Execute la requete
$result = mysql_query($query);
$data = (mysql_fetch_array($result) );

// Regarde les valeurs retournees par la base
if (mysql_num_rows($result) == 1)
{
header ('Location: index.php');
}
session_start();
$_SESSION['utilisateur'] = $data['utilisateur'];

}
???>

Merci de votre aide. :)

10 réponses

bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010
12 oct. 2008 à 16:51
Le code n'est pas passé :

<?php

if ( isset ($_POST['utilisateur']) || isset ($_POST['mdp']) )
{

mysql_connect('localhost', 'root', '');
mysql_select_db('gestion_conges');
//requête vers la table users
$query "SELECT utilisateur, mdp FROM users WHERE utilisateur '".$_POST['utilisateur']."' AND mdp = '".$_POST['mdp']."' ";

// Execute la requete
$result = mysql_query($query);
$data = (mysql_fetch_array($result) );

// Regarde les valeurs retournees par la base
if (mysql_num_rows($result) == 1)
{
header ('Location: index.php');
}
session_start();
$_SESSION['utilisateur'] = $data['utilisateur'];

}
???>
bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010
12 oct. 2008 à 16:52
<?php

if ( isset ($_POST['utilisateur']) || isset ($_POST['mdp']) )
{

mysql_connect('localhost', 'root', '');
mysql_select_db('gestion_conges');
//requête vers la table users
$query "SELECT utilisateur, mdp FROM users WHERE utilisateur '".$_POST['utilisateur']."' AND mdp = '".$_POST['mdp']."' ";

// Execute la requete
$result = mysql_query($query);
$data = (mysql_fetch_array($result) );

// Regarde les valeurs retournees par la base
if (mysql_num_rows($result) == 1)
{
header ('Location: index.php');
}
session_start();
$_SESSION['utilisateur'] = $data['utilisateur'];

}
?>
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 oct. 2008 à 20:16
et que peut-on faire pour toi ?
bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010
12 oct. 2008 à 20:56
Bonsoir, il est vrai que mon post n'est pas très clair. Je m'explique :

Je débute en php et mysql et m'entraine en faisant un site destiné à l'intranet qui devra gérer des congés (CA, RTT...). Les utilisateurs devront se connecter via une page d'authentification. Les login et mdp sont placés dans une BDD mysql.
J'ai une base mysql "gestion_conges" et pour le moment 4 tables dont une "users" avec 3 champs : id, utilisateur, mdp.

J'ai fais une page authentification.php qui affiche un formulaire d'identification qui pointe ensuite vers un page verif_authen.php et c'est là que je patauge depuis 2 jours. J'ai compris le principe des sessions (pas cookie) mais je n'arrive pas à coder correctement cette page. Sur le net j'ai trouvé beaucoup d'exemple que j'ai tenté d'adapter et comprendre mais sans succés.
J'ai l'impression qu'il y a de nombreuses façons de vérifier les données transmises par le formulaire, de les comparer à la BDD etc...

Le code que j'ai posté plus haut, je l'ai encore modifié mais il ne marche toujours pas.

Je cherche quelqu'un pour m'aider à écrire correctement cette page verif_authen.php.

Merci

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
13 oct. 2008 à 12:05
Qu'est ce que tu essayes de faire là ?

if (mysql_num_rows($result) = = 1)

{

header ('Location: index.php');

}

session_start();

Si tu envoi un header avant, il me semble que ça fait planter le session_start (header already sent).

Pourquoi utiliser la variable $data ($data = (mysql_fetch_array($result) );
) puisqu'elle contient par définition les variables utilisateur et mdp envoyé par POST ?

D'ailleurs préfère l'utilisation de mysql_fetch_assoc, qui a le même comportement mais dont le nom est plus explicite.

Flachy Joe

« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks<
bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010
13 oct. 2008 à 13:44
Qu'est ce que tu essayes de faire là ?

if (mysql_num_rows($result) = = 1)
{
header ('Location: index.php');
}
session_start();

Bonjour, je tente de faire ça : si le login et le mdp sont égaux à ceux de la BDD, je met les info. en session et je redirige vers index.php. (Pour le moment je m'entraine)

Pourquoi utiliser la variable $data ( $data = (mysql_fetch_array($result) ); ) puisqu'elle contient par définition les variables utilisateur et mdp envoyé par POST ?

Je ne le savais pas, je débute encore.

Mon but ultime est d'avoir un formulaire qui pointe vers un script php comme celui ci-dessous, et qui fait une connection sur un annuaire ldap. J'aimerai ramenner les info de l'utilisateur qui c'est logguer sur ma page d'authentification (formulaire). Si les info saisies dans le formulaires sont identiques à celles ramenés de ldap, alors je redirige vers index.php. Pour le moment je patauge, je ne sais pas quoi faire des variables du début du script ($server...), si je l'ai remplie en dur avec mes identifiants ldap, le script me ramène bien mes infos, mais je ne sais pas le faire en les saisissant dans le formulaire. Si vous m'avez compris merci :) Je bataille avec ça depuis 3 jours, pas facile de débuter.

<?php $server     $person   $rootdn     $rootpw

    ///1ère étape : essai de connexion au serveur ldap
    $ds = @ldap_connect($server);
    // on teste : le serveur LDAP est-il trouvé ?
    if ($ds)
    {
        //echo "Le résultat de connexion est " . $ds . "
";
    }
    else
    {
        //die("connexion impossible au serveur LDAP
");
    }
    @ldap_set_option($ds, LDAP_OPT_SIZELIMIT, 50);

    //2ème étape : on effectue une liaison au serveur, ici de type "anonymous"
    $r = @ldap_bind($ds, $rootdn, $rootpw);

    //3ème étape : on effectue une recherche anonyme, avec le dn de base,
    $dn = "dc=....., dc=......, dc=....";

    $filtre="(|(sn=$person*)(cn=$person*))";

    $sr = @ldap_search($ds, $dn, $filtre);
 
    $info = @ldap_get_entries($ds, $sr);
    if ($info["count"] < 1)
    {
        ?>
        <script type="text/javascript">
            alert("Compte ou mot de passe erroné.");
        </script>
        <?php
        exit;
    }

    print("\");
    print(\"----
Nom complet : |" . @$info[0]["displayname"][0] . ", \");
    print(\"----
Compte matriculaire : |" . @$info[0]["cn"][0]. ", \");
    print("
");
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>Base des congés</title>
<meta http-equiv ="Content-Language" content="fr" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="style.css" />
 
<title>Formulaire d'authentification</title>
 
</head>
 

Base des congés

 

<hr color=#C0C0C0></hr>
Identifiez-vous
<hr color=#C0C0C0></hr>

<form method="post" action="verif_authen.php">
 
Utilisateur : |
,

----

----

----

Mot de passe : |
,

----
----
----
----

----

|
|

 
</form>

</html>
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
13 oct. 2008 à 15:03
Voila un exemple d'authentification par header HTML et base SQL

<?php
    //Limitation de l'accès
    if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){
        $user = $_SERVER['PHP_AUTH_USER'];
        $pass = $_SERVER['PHP_AUTH_PW'];

        mysql_connect('localhost', 'root', '');

        mysql_select_db('gestion_conges');

        //requête vers la table users
        $query "SELECT utilisateur FROM users WHERE utilisateur '".$_POST['utilisateur']."' AND mdp = '".$_POST['mdp']."' ";

        // Execute la requete

        $result = mysql_query($query);

        // Regarde les valeurs retournees par la base

        if (! mysql_num_rows($result) == 1)
            $user = 'none';
    }else
        $user = 'none';

    if ($user == 'none'){
        header('WWW-Authenticate: Basic realm="Authentifiez vous"');
        header('HTTP/1.0 401 Unauthorized');
        // Ici débute la page en cas d'erreur de login
        echo <<<ERR
<html>
  <head>
    <meta/>
    <title></title>
  </head>
 
    Acc&egrave;s non autoris&eacute;

    [. Identifiez vous.]

 
</html>
ERR;
        // Fin de la page d'erreur de login
        exit; //Termine l'interprétation du PHP pour cette page, rien de ce qui suit ne sera utilisé.
    }else{
        session_start();
        //Définition de variables de session.
        $_SESSION['user'] = $user;
        $_SESSION['uid'] = uniqid();

        //ici débute la page protégée
?>
<html>
  <head>
    <meta/>
    <title></title>
  </head>
 
   
       Console d'administration
   

    <?php
    if ($user == 'root'){
    ?>
   

   

    <form action="javascript:send()">
    
    </form>
    <script type="text/javascript" src="ajax.js"></script>
    <script type="text/javascript">
      function send(){
        var cmd = $('commande');
        request("exec.php", "<?php echo htmlspecialchars(SID); ?>&cmd=" + cmd.value, $('console'));
      }
      send();
    </script>
    <?php
    }
    ?>
   

     
        [download.php R&eacute;cup&eacute;rer des fichiers]
        &nbsp;|&nbsp;
        [upload.php Envoyer des fichiers]
     

   

 
</html>

<?php
        //Fin de la page protégée
    }
?>

Flachy Joe

« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks<
bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010
13 oct. 2008 à 21:05
Merci pour ta réponse flachy joe. J'ai 2 erreurs sur cette ligne :


 //requête vers la table users         $query "SELECT utilisateur FROM users WHERE utilisateur '".$_POST['utilisateur']."' AND mdp = '".$_POST['mdp']."' ";

Voici les erreurs :

Notice: Undefined index: utilisateur in C:\Program Files\EasyPHP 2.0b1\www\authentification2.php on line 10

Notice: Undefined index: mdp in C:\Program Files\EasyPHP 2.0b1\www\authentification2.php on line 10


<meta />

Il y aurais un moyen de passer par un formulaire html plutot qu'une fenètre windows pour la connection ? :)
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
13 oct. 2008 à 21:21
Ben oui, j'ai recollé ton bout de code dans le mien sans l'adapter donc :

        $user = $_SERVER['PHP_AUTH_USER'];
        $pass = $_SERVER['PHP_AUTH_PW'];

        mysql_connect('localhost', 'root', '');
        mysql_select_db('gestion_conges');
        //requête vers la table users
       
$query "SELECT utilisateur FROM users WHERE utilisateur
'".$user."' AND mdp = '".$pass."' ";

Sinon en effet tu peux utiliser un formulaire plutôt que les header HTTP.
J'ai bien l'impression qu'un chouille de recherche sur le site devrait te satisfaire...

Flachy Joe

« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks<
bruno3591 Messages postés 155 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 28 mars 2010
13 oct. 2008 à 21:32
J'ai bien l'impression qu'un chouille de recherche sur le site devrait te satisfaire...

t'as modif fonctionne. Oui une bonne recherche s'avère nécessaire. Merci pour m'avoir fait avancer.

Bonne soirée.
Rejoignez-nous