begin process at 2012 05 31 07:18:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

probleme recuperation formulaire et redirection


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme recuperation formulaire et redirection

mardi 13 janvier 2009 à 18:18:23 | probleme recuperation formulaire et redirection

medjai

Bonjour à vous et tout d'abord Bonne année 2009 !! :p
Voilà pour tout dire, j'ai un problème en ce qui concerne mon authentification sur un site que je développe. Le pire c'est que je ne sais même pas ce qui cloche car je n'ai pas réellement de message d'erreur mais ce qui est sûr c'est que cela ne fonctionne pas comme prévue. o_O
J'ai un formulaire (avec 2 champs: login et pass; ce qui n'est vraiment pas trop compliqué normalement) mais j'ai beau renseigner les bons champs (avec ce qui se trouve dans ma table), je retourne toujours au formulaire sans être rediriger comme il se doit. :colere2:
(problème de la variable $loginOK qui affecte un header !!)
Si c'est bien cela, enfin je crois.. :-°
J'ai un code html pour le formulaire mais qui je pense est bon donc je donne mon script de vérification du formulaire qui je pense doit etre faux (sinon je ne serai pas là, lol :D ).
Voici le code:

Code : PHP




<?php
// On demarre la session
session_start();
function verif_login($login, $pass) {

$loginOK = false;

// On n'effectue les traitement qu'a la condition que les informations aient ete effectivement postees
if(isset($_POST['login']) && isset($_POST['pass']) && ($_POST['login'] && $_POST['pass'] != NULL)){
if (!empty($_POST['login']) && !empty($_POST['pass'])) {

mysql_connect( "localhost" , "" , "" ) or die ("pas d'ouverture mysql".mysql_error());
mysql_select_db("manadgersdb") or die ("connexion base marche pas".mysql_error());

$login = mysql_real_escape_string($_POST['login']);
$query = mysql_query("SELECT 'id_clients', login, email, pass_md5 FROM clients WHERE login = '$login'") or die ("la requete a echouee".mysql_error());
    
// On verifie que l'utilisateur existe bien
if ( mysql_num_rows($donnees) >0){
$donnees = mysql_fetch_assoc($query);
}
mysql_close();
// On verifie que son mot de passe est correct
if ((md5($pass)) == $donnees['pass_md5']) {
$_SESSION['id_clients'] = $donnees["id_clients"];
$_SESSION['login'] = $login;
$_SESSION['email'] = $donnees["email"];

$loginOK = true;
}
}
return $loginOK;
}
}


$loginOK = verif_login($_POST["login"], $_POST["pass"]);
//Maintenant dans la var loginOK il y a true si le login est bon, FALSE sinon

// Si le login a ete valide on met les donnees en sessions
if ($loginOK === true) {
header("location: menu.php");
}else{
header("location: monformulaire.php");

}
?>



Voilà et sims d'avance.

Peace





Si t'appelles une voyante et qu'elle ne décroche pas avant que ça sonne, alors raccroche ..!!
By JC.VD
mardi 13 janvier 2009 à 19:18:00 | Re : probleme recuperation formulaire et redirection

Flachy Joe

C'est un problème d'entête déjà envoyée lors de l'appel de header ('location...
En effet session_start() envoi déjà des headers, et il ne peuvent plus être réenvoyer.

La solution : Ajouter ob_start(); avant session_start();  cf : http://www.php.net/manual/fr/function.session-start.php


Flachy Joe
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks
mardi 13 janvier 2009 à 22:55:18 | Re : probleme recuperation formulaire et redirection

kohntark

Membre Club
Salut,

J'ai parcouru rapidement.
Plutôt que d'utiliser la bufferisation je ferai plus simple :

if (isset ($_POST["login"]) && isset($_POST["pass"]) {
    $loginOK = verif_login($_POST["login"], $_POST["pass"]);
    //Maintenant dans la var loginOK il y a true si le login est bon, FALSE sinon

    // Si le login a ete valide on met les donnees en sessions
    if ($loginOK === true) {
      header("location: menu.php");
    }else{
      header("location: monformulaire.php");
    }
    exit;
}

session_start();
[...]

Cordialement,

Kohntark -

mardi 13 janvier 2009 à 23:47:12 | Re : probleme recuperation formulaire et redirection

kohntark

Membre Club
... faut arrêter de parcourir rapidement; j'ai dit une connerie, Flachy Joe a raison : ob_start et ob_end_flush, autant pour moi.

J'en profite :
if ( mysql_num_rows($donnees) >0){
    $donnees = mysql_fetch_assoc($query);
}
mysql_close();
// On verifie que son mot de passe est correct
if ((md5($pass)) == $donnees['pass_md5']) {


=>
si la requête ne retourne aucun résultat $donnees ne sera pas définie => bug, voir possibilité de faire de l'injection SQL.

mysql_close() => ne sert à rien

&& ($_POST['login'] && $_POST['pass'] != NULL)
=> ne sert à rien, non ?

Les "or die ("pas d'ouverture mysql".mysql_error());" sont dangereux : en cas d'erreur ils révèlent des infos importantes sur la structure de ta base



Kohntark-
mercredi 14 janvier 2009 à 10:43:18 | Re : probleme recuperation formulaire et redirection

medjai

Merci, j'ai bien essayyé de modifier l'ordre des tests d'existence des varable login et pass mais rien, nada,niet.
Que dois-je conclure sachant que  je n'ai pas encore une methode fructueuse pour debuguer..

Si t'appelles une voyante et qu'elle ne décroche pas avant que ça sonne, alors raccroche ..!!
By JC.VD
mercredi 14 janvier 2009 à 17:49:14 | Re : probleme recuperation formulaire et redirection

medjai

up  
mercredi 14 janvier 2009 à 18:36:11 | Re : probleme recuperation formulaire et redirection

Flachy Joe

Je suis pas sur que quiconque regarde la liste des nouveaux échange, celle qui liste les thread par date de début est beaucoup plus utilisable, donc le up ne sert pas à grand chose....

Qu'en est il de l'utilisation de ob_start ?

Flachy Joe
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks<
jeudi 15 janvier 2009 à 08:43:07 | Re : probleme recuperation formulaire et redirection

kohntark

Membre Club
Que dois-je conclure
=> tu dois en conclure qu'il faut utiliser la proposition de Flachy Joe et mes remarques du 13 janvier 2009 à 23:47:12 (je rappelle que mon premier post est une erreur)

une methode fructueuse pour debuguer..

=> ajoute ça en haut de ta page, car j'ai l'impression que les reports d'erreurs ne sont pas actifs chez toi :

ini_set ('display_errors', 'on');
error_reporting(E_ALL);



Cordialement,


Kohntark-
lundi 19 janvier 2009 à 13:05:04 | Re : probleme recuperation formulaire et redirection

Flachy Joe

Quelques modifs du code fournis, ça fonctionne :

--8<--[monformulaire.php]--8<--
<html>
<form method="post" action="traitement.php">
<input type="text" name="login" />
<input type="password" name="pass" />
<input type="submit" />
</form>
</html>

--8<--
Non, ça ne suit pas les standards, mais ça marche !

--8<--[traitement.php]--8<--
<?php
    // On demarre la session
    session_start();
    function verif_login($login, $pass) {
       
        // On n'effectue les traitement qu'a la condition que les informations aient ete effectivement postees
        if(isset($login) && isset($pass)){
            if (!empty($login) && !empty($pass)) {
/*                mysql_connect( "localhost" , "" , "" ) or die ("pas d'ouverture mysql".mysql_error());
                mysql_select_db("manadgersdb") or die ("connexion base marche pas".mysql_error());
               
                $login = mysql_real_escape_string($_POST['login']);
                $query = mysql_query("SELECT 'id_clients', login, email, pass_md5 FROM clients WHERE login = '$login'") or die ("la requete a echouee".mysql_error());
               
                // On verifie que l'utilisateur existe bien
                if ( mysql_num_rows($donnees) >0)
                    $donnees = mysql_fetch_assoc($query);

                mysql_close();
*/
///<DEBUG
                //N'importe quel mot de passe est valide...
                $donnees['pass_md5'] = md5($pass);
///DEBUG>
               
                // On verifie que son mot de passe est correct
                if ((md5($pass)) == $donnees['pass_md5']) {
                    $_SESSION['id_clients'] = $donnees["id_clients"];
                    $_SESSION['login'] = $login;
                    $_SESSION['email'] = $donnees["email"];
                   
                    return true;
                }
            }
        }
        return false;
    }

    if (verif_login($_POST["login"], $_POST["pass"]))
        header("location: menu.php");
    else
        header("location: monformulaire.php");
?>

--8<--

L'erreur vient du SQL ou du HTML, en tout cas la redirection fonctionne, et l'utilisation de ob_start() ne semble pas utile (!?)

NB : Plusieurs erreurs de logique dans la fonction verif_login d'origine : utilisation de $_POST alors que les var sont en arguments, pas de return dans toutes les conditions, $loginOK qui ne sert à rien.

Flachy Joe
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. » Les Shadoks<


Cette discussion est classée dans : donnees, login, formulaire, pass, loginok


Répondre à ce message

Sujets en rapport avec ce message

Autentification sur un site [ par talamaskary ] Donc j'ai un site et j'aimerai qu'il y ai pour y acéder un mots de pass et un login! donc ce qu'il faudrai c'est une page d'inscription pour les nouve Combiner Cookie et Session [ par apz ] salut,en fait je voudrais ajouter une zone membres dans mon site.je voulais combiner cookie et session : le cookie sert au login automatique de l'util affichage des donnees saisies dans un formulaire [ par frisette07 ] bonjour, si je suis ici c'est que je suis une vraie debutante, donc soyez indulgent avec moi.j'ai un problme pour afficher les donnees saisies dans un problème de liens [ par nnc95 ] nnc95SALUT ALL LE MONDEJ'ai un petit souci avec mon code php.Je me suis crée une page d'entrer avec login et mot de passe Header Location [ par apz ] salut a tous, j'ai un espace membres lycos. dans mon fichier php login il ya le code suivant : Code: if ($page == "login") { $pass = md5(stripslashes( Connexion d'un "abonné"... [ par Bestiol ] Bonjour !!Je suis hyper débutant en PHP et j'aimerais savoir comment faire pour allier un formulaire HTML à une "unité" connexion.php pour que celle-c login/pass [ par grosbast ] Bonjour, je souhaiterais recevoir un pti coup de main pour juste savoir comment on fait pour avoir juste :-pour login ="essai" et pass="1" ke ca amene Problème de cookies ... [ par antho11 ] Alors voila Voici le formulaire d'identification <font color="#FF réaffichage des donnees dans un formulaire [ par charly25 ] bonjour a toutes et tous un petit probleme "idiot" me rend chèvre.j'ai un formulaire html simple qui va renseigner une base de donnees.Je voudrais réa formulaire et donnees [ par milengalere ] bonjour a tous.. question con peut etre pour certains!petit truc tout con en php mais...j ai un pb de passages de valeures depuis un formulaire...j ai


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales