Connexion avec login et mot de passe

Eléphanteau du PHP | 17 Messages

22 août 2006, 23:04

Bonsoir, voila mon probleme :

je souhaite accéder à une page par le biais d'un login et un mot de passe, dont les valeurs sont stockées dans la base.
<?php
if (isset($_POST['password']) && isset($_POST['login']) && $_POST['password'] == $_POST['mdp'] && $_POST['login'] == $_POST['log'])
{
	header('Location: index_admin.php');
}
else
{
include_once('bdd.inc.php');?>

<?php//from yass
$sql= '
SELECT *
FROM backoffice
WHERE acces = admin';
$resultat=mysqli_query($link, $sql);

/*while ($row = mysqli_fetch_assoc($resultat))
{
	
}*/

$log = mysqli_result($resultat , 0 , "login");
$mdp = mysqli_result($resultat , 0 , "password");

if (isset($_POST['password']))
{
	$password = $_POST['password'];
}
else
{
	$password = '';
}

if (isset($_POST['login']))
{
	$login = $_POST['login'];
}
else
{
	$login = '';
}

// le mot de passe n'est pas bon
// Affichage la zone de texte pour rentrer le mot de passe.
?>
<br /><br />
<h2>Veuillez saisir le login et le mot de passe associé svp :</h2>
<form action="index.php?page=administrer" method="post">
<table>
<tr><td>Login :</td><td><input type="text" name="login" /></td></tr>
<tr><td>Mot de passe :</td><td><input type="text" name="password" /></td></tr>
</table> <br/>
<input type="submit" value="Valider" />
</form>

<?php
}
// Fin du else
?> 
Il n'y a pas de message d'erreur, mais on revient systématiquement sur le formulaire.

Une idée ?[/code]
Si je dis que ce n'est pas une signature, est-ce une signature ?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

22 août 2006, 23:36

Je n'ai pas tout testé, mais je vois déjà une erreur de syntaxe :
//
$sql= 'SELECT * FROM backoffice WHERE acces = admin';   // mal
$sql= "SELECT * FROM backoffice WHERE acces = 'admin'"; // bien
En outre, il est préférable d'éviter le SELECT *, en précisant les champs dont tu as besoin.

Eléphanteau du PHP | 17 Messages

23 août 2006, 00:00

Ah oui c'est juste, merci :D

Cependant, meme ayant corrigé cela, je n'arrive pas a me connecter :?:
Si je dis que ce n'est pas une signature, est-ce une signature ?

Mammouth du PHP | 19672 Messages

23 août 2006, 08:23

J'ai essayé de comprendre la méthodologie employée pour t'identifier et ton code ne suis pas une logique terrifiante. Reprenons donc le processus :
-1- une page assortie d'un formulaire permettant la saisie du pseudonyme et du mot de passe;
-2- la page de traitement et de redirection vers la page appropriée selon le résultat;
-3- la page d'accueil administration dans le cas où le traitement de la seconde page est concluant.

Voyons maintenant cette seconde page.
-1- récupérer les valeurs envoyées;
-2- S'il manque au moins une des deux valeurs, redirection vers la page 1 d'identification;
-3- Sinon, requête SQL pour compter le nombre de lignes contenant les valeurs correspondant au pseudonyme et au mot de passe envoyé;
-4- Si les valeurs sont trouvées, redirection vers la page 3 d'administration, sinon redirection vers la page 1.

Mais ton code commence par une bizarrerie : il commence par comparer des valeurs envoyées par le formulaire, par exemple, tu compares $_POST['password'] et $_POST['pwd']... Reprend ton code en suivant le chemin que je viens d'indiquer, ça devrait aller nettement mieux.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 17 Messages

23 août 2006, 15:59

Merci beaucoup pour cette explication complete :wink:

En fait, ma solution consistait a mettre le traitement et le formulaire sur la meme page, mais c'est vrai que c'est un peu prise de tete.

Finalement, j'ai opté pour ta méthode, cependant j'ai viré la connexion mysql pour vérifier les login et password, j'ai directement inclus leur valeur dans la page php, tant pis je ferai mieux plus tard pour l'instant je n'ai pas le temps !
Si je dis que ce n'est pas une signature, est-ce une signature ?

Eléphant du PHP | 60 Messages

23 août 2006, 18:20

Tu pourrais le faire sur une seule page de cette manière :
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
	// Une fois le formulaire posté
	// ...
}
else {
	// Le formulaire
	// ...
}
?>