[RESOLU] ouvrir $_session si auth sql reussi

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 : [RESOLU] ouvrir $_session si auth sql reussi

Re: ouvrir $_session si auth sql reussi

par zel » 19 août 2016, 01:33

sujet resolu le : varchar était bloqué a 16caractere

Re: ouvrir $_session si auth sql reussi

par @rthur » 18 août 2016, 09:42

Il y a une bonne explication et des exemples dans la doc, ici :
https://secure.php.net/manual/fr/langua ... ptions.php

Si tu ne sait pas gérer les exceptions alors le mieux est de ne pas utiliser PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, mais PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING qui va te lancer un warning lors de l'exécution, tu verras alors les erreurs + facilement.

Re: ouvrir $_session si auth sql reussi

par zel » 18 août 2016, 01:49

tu pourrais me faire montrer comment tu try/catch autour du requête stp?

Re: ouvrir $_session si auth sql reussi

par @rthur » 17 août 2016, 23:35

Tu n'as pas mis de try catch autour de ta requete donc tu ne vois pas les erreurs si il y en a

Re: ouvrir $_session si auth sql reussi

par zel » 17 août 2016, 18:19

up!

Re: ouvrir $_session si auth sql reussi

par zel » 17 août 2016, 14:41

bonjour @rtur ! j'ai changer mon code ( et non il y a eu un probleme de c/c pour les 2br ^^' )
donc la en gros :
si pseudo & pass sont abs=> echo 'bonjour visiteur.';
si je reçois pseudo & pass ==> j'hach le pass et je requête sql puis je compare les résultats :
si j'ai 1resultat c'est que le pseudo+pass exist donc j'ouvre la session
si j'ai 0resultat c'est que le pseudo+pass n'existe pas donc je met le message <erreur login/pass incorect>

enfin dans ma tête c'est comme sa :D sur le papier soit j'envoi pas de donné et j'ai : donne incomplete
soi j'ai rentré pseudo+pass et le $resultat vaux toujours false...

Code : Tout sélectionner

<?php if(!empty($_POST['pseudo']) && !empty($_POST['password'])) { // Connexion à la BDD try { $bdd = new PDO('mysql:host=localhost;dbname=membres;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $pass_hache = sha1($_POST['password']); $req = $bdd->prepare('SELECT * FROM membres WHERE pseudo = :pseudo AND pass = :pass'); $req->execute(array( 'pseudo' => $_POST['pseudo'], 'pass' => $pass_hache )); $resultat = $req->fetch(); if($resultat == false) { echo 'Les données sont érroné '; } else { session_start(); $_SESSION['pseudo'] = 'Legolas_le_grand'; echo 'Tu es connecté, '.$_SESSION['pseudo'].' !'; } } else { echo 'Bonjour Visiteur ! inscrit toi :)'; } ?>

Re: ouvrir $_session si auth sql reussi

par @rthur » 17 août 2016, 09:06

Bonjour,

Il faut que tu fasses ton debug avant toute chose.
As-tu un message d'erreur ? As-tu regardé dans les logs de ton serveur ?
A quel endroit ça ne fonctionne pas comme prévu ?

Notamment cette partie là, je suis sûr que tu as un message d'erreur dans tes logs :
<br>          echo "mauvais" ;<br>

ouvrir $_session si auth sql reussi

par zel » 17 août 2016, 01:52

bonjour, j'aimerai que le membre qui rentre ses identifiant dans le formulaire ci-dessous :

Code : Tout sélectionner

<div id="login"> <form method="post" action="lndex.php"> <label for="pseudo"><img src="icon/header/acc2.png" alt="icon login" id="acc_head"/></label> <input type="text" name="pseudo" id="pseudo" size="16" maxlength="16" placeholder="Pseudo" /> <label for="password"><img src="icon/header/key2.png" alt="icon key" id="key_head"/></label> <input type="password" name="password" id="password" size="16" maxlength="16" placeholder="Password"/> <input type="submit" value="" class="bouton_perso"/> </form> </div>
ci-dessous : ( lndex.php avec un L ) La page : "lndex.php" compare les identifiant reçu dans se formulaire et la base de donnée
donc j'ai noté sur ma page "lndex.php" (celle qui reçoit le <form> donc) avant doctype, le php : "include : session_start"

Code : Tout sélectionner

<?php include("boucles/php/fonction/session_start.php") ;?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8" /> <link rel="stylesheet" href="style.css" /> <title>Hardfive clan Esport</title> </head> <body> <div id="bloc_page"> <?php include("inc/header.php"); ?> <?php include("boucles/corps_ou_inscription.php")?> <?php include("inc/menu_abc.php"); ?> <?php include("inc/copyright.php"); ?> </div> </body> </html>
et donc dans lndex.php 1ere ligne => l'include session_start j'ai se code :

Code : Tout sélectionner

<?php try { $bdd = new PDO('mysql:host=localhost;dbname=membres;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Hachage du mot de passe $pass_hache = sha1($_POST['password']); // Vérification des identifiants $req = $bdd->prepare('SELECT * FROM membres WHERE pseudo = :pseudo AND pass = :pass'); $req->execute(array( 'pseudo' => $_POST['pseudo'], 'pass' => $_POST['password'])); $resultat = $req->fetch(); if (!$resultat) {<br> echo "mauvais" ;<br> } else { session_start(); $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $_POST['pseudo']; echo "bonjour" ; } ?>
voila je ne comprend pas pourquoi se code ne fonctionne pas donc si vous pouvez m'éclairer c'est cool :)
merci