Petite connexion gentille ! :D

Eléphant du PHP | 139 Messages

28 juin 2005, 09:44

Voici un script ou j'ai quelque souci.

pagedeconnexion.php

Code : Tout sélectionner

<html> <body background="PINELUMB.JPG"> <div align="left"><strong>Veuillez saisir le mot de passe :</strong></div> <form name="Connexion" method="post" action="connexion.php"> <input type="text" name="utilisateur" value="utilisateur" disabled><br> <input type="password" name="password"> <input type="submit" name="Submit" value="CONNEXION"> <input type="hidden" name="utilisateur" value="utilisateur"> </form> </body> </html>
connexion.php
<?
require_once('Connections/intranet.php');
$password = $_POST['password'];

$query = "SELECT valeur FROM param WHERE donnee='$password'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
  $pass=$row[0];
}
if ('$pass' == '$password')
{ 
echo $_POST['utilisateur'] . " est maintenant connecté";
}
else 
{
echo "Mauvais login !!";
}


mysql_free_result($result);
?>
J'aimerai savoir s'il étais possible de faire ça? Vous voyez ce que je veux réaliser?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 09:47

Tu veux afficher un message de bienvenue si l'utilisateur est connecté, un message d'erreur sinon

2 conseils pour ton code :
On sort les données des variables
$query = "SELECT valeur FROM param WHERE donnee LIKE '".$password."'";
Pas besoin de mettre tes variables dans une chaine, tu teste directement l'égalite
if ($pass == $password)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 139 Messages

28 juin 2005, 09:53

Pfff il me dis qu'il ne connait pas $pass dans le IF !

En fait c'est pas vraiment affiché un message d'acceuil, c'est plutot essayé de construire ma propre page de connexion et de vérifier si le login et le mot de passe (surtout celui la) est correct par rapport a ma base de donnée ou j'ai renseigner login et mot de passe !

Merci d'avance tous !

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juin 2005, 09:58

Le monsieur te dit :
  • essaye de le faire, si tu ne l'as pas encore réalisé
  • si tu as un souci, c'est sûrement que tu compares si la chaîne de caractère "$pass" est comme la chaîne "$password" ce qui ne sera JAMAIS vérifié.
Les variables ne se mettent pas entre guillemets !

[/color]
require_once('Connections/intranet.php');
$password = $_POST['password'];


$query = 'SELECT valeur FROM param WHERE donnee='.$password;//la aussi enlève les guillemets
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
  $pass=$row[0];
}
//if ('$pass' == '$password')
// NE SERA JAMAIS VRAI

if($pass == $password)
// EST peut-être la syntaxe que tu recherches ?
{
echo $_POST['utilisateur'] . " est maintenant connecté";
}
else
{
echo "Mauvais login !!";
} 
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 139 Messages

28 juin 2005, 10:08

[quote="mere-teresa"]Le monsieur te dit :
  • essaye de le faire, si tu ne l'as pas encore réalisé
Les variables ne se mettent pas entre guillemets !

[/color]

Euh de quoi ? ue dois je faire?

An tout cas marche pas! Il ne connais pas la variable $pass toujours dans le IF !!! :S

Eléphant du PHP | 139 Messages

28 juin 2005, 10:36

Bon je me suis aperçu d'une erreur, Je reprend : (je fais faire un tableau pour montrer ma base ! )

Base param :
===================
donnee_____|___valeur
===================
utilisateur____|___test
===================

Dans mon formulaire, je récupère l'utilisateur et je veu voir si c'est le bon mot de passe qui vient d'etre taper !

Je remet le code de mon formulaire :

Code : Tout sélectionner

<html> <body background="PINELUMB.JPG"> <div align="left"><strong>Veuillez saisir le mot de passe :</strong></div> <form name="Connexion" method="post" action="connexion.php"> <input type="text" name="utilisateur" value="utilisateur" disabled><br> <input type="password" name="password"> <input type="submit" name="Submit" value="CONNEXION"> <input type="hidden" name="utilisateur" value="utilisateur"> </form> </body> </html>
Page connexion.php
<? require_once('Connections/intranet.php'); 
$util = $_POST['utilisateur'];
$password = $_POST['password']; 


$query = 'SELECT valeur FROM param WHERE donnee='.$util;
$result = mysql_query($query); 
while($row = @mysql_fetch_array($result)) { 
  $pass=$row[0]; 
} 
//test pour voir si $pass existe ! MAIS NON EXISTE PAS !!!!!!
echo $pass;

//a partir de ce point je ne sais pas comment tester !!!
// que si le mot de pass correspond a celui dans la table pour utilisateur
if($pass == $password) 
{ 
echo $_POST['utilisateur'] . " est maintenant connecté"; 
} 
else 
{ 
echo "Mauvais login !!"; 
}?>

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juin 2005, 10:40

Ta requête devrait récupérer :
le login et le mot de passe
et tu dois comparer les 2 !!!

if($_POST['login'] == $row[0] && $_POST['password'] == $row[1])
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 10:40

Je vais te conseiller une méthode plus simple :
<? require_once('Connections/intranet.php');
$util = $_POST['utilisateur'];
$password = $_POST['password'];

//On sélectionne tous les utilisateurs dont le log et le pass correspondent
$query = "SELECT COUNT(*) FROM param WHERE donnee LIKE '".$util."' AND valeur LIKE '".$password."'";
//exécution de la requete
$result = mysql_query($query);
//récupération du nombre d'occurence
$row = mysql_fetch_array($result)
$pass=$row[0];

//Si il y a un résultat, c'est que l'identification est correcte
if($pass <> 0) {
echo $_POST['utilisateur'] . " est maintenant connecté";
} else { //Aucun résultat, mauvaise identification
echo "Mauvais login !!";
}?>
EDIT --

Même idée que mere-teresa sauf que je compare directement dans la requete
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 139 Messages

28 juin 2005, 10:45

En effet ça c'est simple et j'ai capter pourquoi! Je crois que je ferrai toujours comme ça maintenant !

Mais est-ce bien sécurisé? Bon dans ce cas j'ai pas besoin d'un niveau très élevé de sécurité mais je suis entrain de développer mon propre site et si j'utilise cette méthode, sera t il bien sécurisé ?

une petite remarque si je peu me permettre ;) tu a oublié un ; mais ou ? hahaha !!

En tout cas merci et bravo tu a réussi a me faire comprendre un truc! ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 10:50

ici
$row = mysql_fetch_array($result) 
C'est autant sécurisé que ton code vu que tout se passe sur le serveur

Pour être (très) tatillon, je dirais même que c'est plus sécurisé que ton script vu que toi, tu rapportes le password sur le serveur apache dès que le login est bon alors que moi, tout se passe sur le serveur mysql
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 139 Messages

28 juin 2005, 10:56

Bin a vrai dire je vois pas trop la différence avec mon code car en fait je comprend exactement tout ce que tu fait dans ton code mais c'est ce que j'aurai voulu faire! Mais le manque d'expérience fait que...

En tout cas merci et donc je peu continuer a utiliser cette méthode ...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 11:02

Dans ton code, tu récupère le pass associé au login que l'utilisateur a rentré et tu teste si le mot de passe saisi correspond à celui retourné par la bdd
- si le login existe pas => pass existe pas : une de tes erreurs
- le pass est importé sur le serveur
- tu fait un traitement SQL puis un traitement PHP

Dans mon code, je compte les utilisateurs dont le log ET le mot de passe correspondent aux infos saisies
- 0 ou 1 résultats : réductions des possibilités
- tout traité en SQL
- pas d'import de données sur le serveur Apache

Sinon, fait ça parce que sinon ton code est suceptible d'être piraté
$util = addslashes($_POST['utilisateur']);
$password = addslashes($_POST['password']); 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 139 Messages

28 juin 2005, 11:04

MERCI BEAUCOUP ZEUS

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2005, 11:06

oh !!! un rastafarien :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 139 Messages

28 juin 2005, 11:10

Forcément en tant ke pseudo-développeur !!