Login toujours incorrects

Fermé
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 - Modifié par TRUNCKS le 23/05/2011 à 17:51
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 - 25 mai 2011 à 12:28
Bonjour à vous,

Je tente de récupérer un indentifiant et un mot de passe d'un formulaire pour ensuite le faire passer en session pour un espace membre.

Le problème, c'est que même si les identifiants sont bons, il me renvoie toujours sur la page d'erreur.

Il doit certainement y avoir une erreur, si vous pouvez m'aider:
    

<?php    
require("conf.php");    

/*-----------------------------------------------------------------*/    
/* PROGRAMME PRINCIPAL   */    
/*-----------------------------------------------------------------*/    

// CONNEXION A LA BASE DE DONNEE    
$conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);mysql_select_db($sql_bdd, $conn);     


// Récupération des variables necessaires   
$login = mysql_real_escape_string($_POST['pseudo_membre']);    
$pass = mysql_real_escape_string(sha1($_POST['passe_membre']));    

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET    
// MOT DE PASSE SAISIS A LA PAGE INDEX.HTM    
$requete = ("SELECT id_utilisateur FROM utilisateurs WHERE pseudo = '$login' AND passe = '$pass'");    

$requete=(array(    
'login'=>$login,    
'pass'=>$pass));    

$resultat = mysql_fetch_array($requete);    

if (!$resultat)    

{    
 // REDIRECTION VERS LA PAGE ERREUR    
 echo "<script type=\"text/javascript\">document.location.href='erreur.htm';</script>";    
 }    

// SI LE LOGIN ET MOT DE PASSE SONT EXACTES     
else    
 {    
      
    session_start();    
 $_SESSION['id_utilisateur'] = $resultat['id_utilisateur'];    
 $SESSION['pseudo'] = $login;    
 echo "<script type=\"text/javascript\">document.location.href='bdd/index.php';</script>";    
 }     
       

?>    

9 réponses

Bonjour

$requete = ("SELECT id_utilisateur FROM utilisateurs WHERE pseudo = '$login' AND passe = '$pass'");

$requete=(array(
'login'=>$login,
'pass'=>$pass));

Pas très logique, ça. Tu crées une requête et tu l'écrases aussitôt sans t'en être servi ?!?!?!

Il faut utiliser mysql_db_query pour soumettre ta requête à la base. Le résiultat (si tout va bien) est une ressource, et c'est sur cette ressource que tu fais ton mysql_fetch_array

$requete = "SELECT id_utilisateur FROM utilisateurs WHERE pseudo = '$login' AND passe = '$pass'";    // pas besoin de ( ) 
$reponse= mysql_query($requete) or die (mysql_error()); 
$resultat = mysql_fetch_array($reponse);  // $reponse et pas $resultat 
...
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
Modifié par TRUNCKS le 23/05/2011 à 22:56
Prière de répondre correctement, il ne me semble pas que nous soyons particulièrement proche.

Nous sommes sur un forum mais j'aimerais véritablement que vous gardiez vos familiarités.

Merci encore.
0
Bah je suit navré si je vous ai vexé, disons que je mettait juste en évidence qu'il y a un probléme dans votre méthode pour coder quand on voit une erreur par ligne(voire plus) et que les fonctions ne sont pas utilisé correctement...
+ de certaines lacunes en algorithmiques, on dirait un amalgame de fonctions jetées pêle mêle, on peut être créatif dans la programmation mais avant ça il faut maîtriser les bases, d'oû aussi mon conseil de vous appuyer sur une base ayant fait ses preuves, après vous adaptez à vos spécifités...

Il faut être rigoureux en script car la moindre petit caractère de trop en moins ou mal placé et c'est tout le programme qui ne marche pas.
PHP pas pratique pour débugger, surtout en débutant mais au moins faites des tests avec un retour des variables en affichage pour trouver où ça coince.

Enfin je dit ça je dit rien, j'ai déjà eu des exercices en école où il fallait corriger des codes abracadrants mais aucun n'arrives à votre niveau.
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
23 mai 2011 à 23:00
MP Truncks.

Méprise ces gens qui te prennent de haut, il ne faut même pas t'embêter à leur répondre.

Tu en croiseras souvent, ces gens ne se sentent plus, faut pas les calculer.
0
CradGoreHamer
24 mai 2011 à 00:23
D'un autre côté ce code c'est un amas d'erreurs hallucinantes, ça il faut bien le dire.
L'enfer est pavé de bonnes intentions, j'avoues c'était sarcatique mais quand j'ai vu un nom qui revient souvent sur le forum j'aurais pu penser qu'avec toute l'aide disponible ici il y aurait un niveau moins catastrophique.
0
Ne t'inquiète pas trop de ce que dit CradGoreHamer. En plus d'être un grossier personnage, c'est un incompétent.

En ce qui concerne la redirection, même si la redirection par header me semble à moi aussi préférable, elle marche très bien telle que tu l'as faite, et il n'y a pas de reproche à te faire.
session_start();
Doit impérativement se trouver sur la première ligne derrière la première balise PHP sinon erreur de HTTP://HEADER ALLREADY SENT.
C'est une ânerie souvent répétée par ceux qui n'ont pas compris pourquoi. En fait il suffit que le session_start() soit avant le premier envoi de données au client, ce qui est le cas dans ton script. Tu n'as aucun problème de ce côté
Ah oui pas de sélection d'une base non plus Ben si, il y en a une. Il ne l'a même pas vue...
0

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

Posez votre question
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
24 mai 2011 à 06:29
Merci beaucoup pour ton aide, je vais essayer ça toute de suite.

Pas de soucis, je n'y faisais pas véritablement attention, je lui signalais juste de surveiller son langage inapproprié.
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
24 mai 2011 à 07:39
Ne fais pas attention, et sois indulgent.

N'oublie jamais que les gens qui rabaissent sont des gens en souffrance, eux mêmes victimes de nombreuses vexations.
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
24 mai 2011 à 18:15
Merci !

J'ai enfin réussi grâce à tes conseils !

Une dernière question, il vaut mieux utiliser combien de variable de session ?
Une seule suffit ? Plutôt que le login ou peut importe ?
0
Ça dépend de beaucoup de choses. En général, une seule ne suffit pas, si plusieurs données sont indépendantes les unes des autres. Mais dans le cas de l'identification de membres inscrits, enregistrer l'id de l'inscrit (plutôt que son login) est suffisant.
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
25 mai 2011 à 12:28
Merci encore !
0
Salut, je pourrais pas dire sans tester le code mais plusieurs choses me semblent incorrectes.
Faites des echo et print_r(pour les array) un peu à chaque ligne utilisant la variable ça aide à voir o est l'erreur.
Ici:
$requete = ("SELECT id_utilisateur FROM utilisateurs WHERE pseudo = '$login' AND passe = '$pass'");
Un or die avec mysql_error éviteras pas mal de prise de tête. D'ailleurs vous ne récupérez que l'id_utilisateur avec cette requête, le AND est inutile. J'aurais fait :
SELECT pseudo, passe FROM utilisateurs WHERE pseudo = '$login'
qui devrait suffire amplement.

$requete=(array(
Deux fois la même variable, la première fois c'est une chaîne de caractères(la requete) la deuxième fois un array contenant les valeurs envoyées en POST ... ça pourras pas aller.

$resultat = mysql_fetch_array($requete);
??? nulle part la requête est exécutée.

// REDIRECTION VERS LA PAGE ERREUR
echo "<script type=\"text/javascript\">document.location.href='erreur.htm';</script>";

Une redirection en javascript n'auras effet que lorsque tout le php est exécuté et que le navigateur charges la page, donc si il n'y a pas de page html :s
Utilisez la redirection PHP avec header(

session_start();
Doit impérativement se trouver sur la première ligne derrière la première balise PHP sinon erreur de HTTP://HEADER ALLREADY SENT.

Même remarque que pour la redirection javascript précédente MAIS EN PIRE...comment pouvez vous renvoyer à la page index.php alors que celle ci se charge automatiquement en page d'accueil... m'enfin c'est possible mais plutôt tordu, faites un index public et une page1 pour l'accueil des connectés.

J'ai fait ça au fur et à mesure...c'est un gag, un test ou un mélange de connaissance et d'intuitions foireuses? Jetez un oeil à un script d'exemple comme il en existe des milliers sur le net...
edit:Ah oui pas de sélection d'une base non plus, j'ai oublié quoi, je gagnes quoi?
J'ai des doutes sur un booléen à partir d'un tableau quand même...
-1