Page 1 sur 1
Petite connexion gentille ! :D
Posté : 28 juin 2005, 09:44
par psaikopat
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?
Re: Petite connexion gentille ! :D
Posté : 28 juin 2005, 09:47
par zeus
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)
Posté : 28 juin 2005, 09:53
par psaikopat
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 !
Posté : 28 juin 2005, 09:58
par mere-teresa
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 !!";
}
Posté : 28 juin 2005, 10:08
par psaikopat
[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
Posté : 28 juin 2005, 10:36
par psaikopat
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 !!";
}?>
Posté : 28 juin 2005, 10:40
par mere-teresa
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])
Posté : 28 juin 2005, 10:40
par zeus
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
Posté : 28 juin 2005, 10:45
par psaikopat
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!

Posté : 28 juin 2005, 10:50
par zeus
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
Posté : 28 juin 2005, 10:56
par psaikopat
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 ...
Posté : 28 juin 2005, 11:02
par zeus
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']);
Posté : 28 juin 2005, 11:04
par psaikopat
MERCI BEAUCOUP ZEUS
Posté : 28 juin 2005, 11:06
par zeus
oh !!! un rastafarien

Posté : 28 juin 2005, 11:10
par psaikopat
Forcément en tant ke pseudo-développeur !!