8795 sujets

Développement web côté serveur, CMS

Bonjour,
me voici avec un autre problème un peu différent de mon ancien post.

Donc j'ai fais un formulaire de connexion en index, cette page servira à accéder à plusieurs pages d'administration.

Pour les identifiants et mdp, je les récupère dans ma base de donnée. (jusque là rien de sorcier)
Le prob c'est que lorsque je rentre l'id et mdp je n'arrive pas à voir le contenue, j'ai une erreur mais je ne sais pas où !
Sinon je voulais compléter en ajoutant que ce formulaire me permet uniquement d'accéder au contenue, je n'ai pas besoin de récupérer d'info sur l'utilisateur connecté. Je pense quand même que le $_SESSION est inévitable car je voudrais aussi que l'on puisse se déconnecter.

Voici du code qui ne fonctionne pas
<?php
//header
include("includes/header.php");
//Navmenu
include("includes/Navmenu.php");
//Contenue
if(isset($_POST['submit']))
{
	$sql = $cnx->query("SELECT Login,Password FROM utilisateurs") or die("Error SQL<br>".mysql_error());
	$row = $sql->fetch(PDO::FETCH_ASSOC);
	if(($row['Login'] == $_POST['login']) && ($row['Password'] == $_POST['password']))
	{
		echo "bienvenue";
		$_SESSION['login'] = $_POST['login'];
	}
}else { ?>
	<div id="conteneur" class="conteneur">
	    <form action="process.php" method="post" name="connexion">
	        <p>
	            <label for="login" class="libele">Identifiant<span class="required">*</span></label><br>
	            <input class="champ" type="text" name="login" id="login" size="30" required="required" placeholder="Votre login" ><br>
	        </p>
	        <p>
	            <label for="password" class="libele">Mot de passe<span class="required">*</span></label><br>
	            <input class="champ" type="password" name="password" id="password" size="30" required="required" placeholder="Votre mot de passe" ><br>
	        </p>
	        <p class="indication">Tous les champs avec une <span class="required">*</span> sont obligatoires</p>
	        <p class="indication">
	            <a href="http://capecom.fr/index.php?page=contact">Vous avez perdu vos identifiants et mot de passe</a>
	        </p>
	        <p>
	            <input type="submit" class="bouton1" name="submit" value="Se connecter" >
	        </p>
	    </form> 
	</div>
<?php

}
include("includes/footer.php");
?>

Modifié par cid5420 (27 Jan 2014 - 16:53)
Tu n'as qu'en seul utilisateur dans ta base ? Parce que là tu sélectionnes un utilisateur mais tu ne précises pas lequel.
Oui effectivement j'ai oublié de le replacer, j'avais testé avec cette requête :
$sql = $cnx->query("SELECT Login, Password FROM utilisateurcapecom WHERE Login ='".$_POST['login']."'") or die("Error SQL<br>".mysql_error());
	$row = $sql->fetch(PDO::FETCH_ASSOC);

Mais je n'arrive pas à passer l'étape où je test la paire login+mdp
un doute par rapport à ta condition :

if(($row['Login'] == $_POST['login']) && ($row['Password'] == $_POST['password']))


Tes password sont en clair dans la base de données ? Smiley ohwell

Parce que si c'est pas le cas (ce qui devrait être fait), il faudrait d'abord passer le $_POST['password'] par ton chiffrage.

si c'est en clair (hum...), essaye de faire un var_dump sur le $row et sur le $_POST, ça te permettra de comparer

Après, pas besoin de comparer login (de row) et celui de post, vu que tu imposes dans ta requête qu'ils soient identiques (Login=".$_POST['login']."") ^^


Au passage, faudrait songer à protéger tes requêtes (ne JAMAIS passer un $_POST/$_GET direct en query...)


Pourquoi chiffrer et comment
Modifié par Lothindil (27 Jan 2014 - 18:31)
Ok merci pour cette piste qui me semble être la solution, puisque j'ai formaté en md5 mes mdp, encore une erreur de débutant !!!!

Pour protéger mes requêtes, pouvez vous m'informer plus sur le sujet, car dans les tuto on ne parle pas franchement des protections pour les requetes
jb_gfx a écrit :
Ce tuto doit avoir au moins 10 ans et n'est pas du tout adapté contre les attaques modernes (et il l'était déjà pas y'a 10 ans).
Au lieu de dire "c'est pas bien", si tu fournissais pour une fois une information intéressante et pertinente ? Parce que salt + méthode de chiffrage (même si je préfère le blowfish au md5 et sha1) c'est la solution que je trouve partout.
Modifié par Lothindil (27 Jan 2014 - 21:04)
j'ai vue des tuto avec un chiffrage en md5, il est vrai que je n'ai pas été voir plus loin !
Donc si je peu avoir des conseils, je suis preneur!
Lothindil a écrit :
Au lieu de dire &quot;c'est pas bien&quot;, si tu fournissais pour une fois une information intéressante et pertinente ? Parce que salt + méthode de chiffrage (même si je préfère le blowfish au md5 et sha1) c'est la solution que je trouve partout.


blowfish c'est pas un algo de hashage. Et après je suis pas là pour apprendre au gens à regarder la date des tutos qu'ils linkent et encore moins pour leur apprendre à faire un peu de veille.

Mais bon comme je suis dans un bon jour : mots clés -> bcrypt, scrypt

Et en passant bcrypt à été publié en 1999...
Modifié par jb_gfx (27 Jan 2014 - 21:37)
Pour paraphraser je ne sais plus qui (...)
jb_gfx a écrit :
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Smiley hippy