Petite connexion gentille ! :D

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 : Petite connexion gentille ! :D

par psaikopat » 28 juin 2005, 11:10

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

par zeus » 28 juin 2005, 11:06

oh !!! un rastafarien :lol:

par psaikopat » 28 juin 2005, 11:04

MERCI BEAUCOUP ZEUS

par zeus » 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']); 

par psaikopat » 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 ...

par zeus » 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

par psaikopat » 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! ;)

par zeus » 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

par mere-teresa » 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])

par psaikopat » 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 !!"; 
}?>

par psaikopat » 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

par mere-teresa » 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 !!";
} 

par psaikopat » 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 !

Re: Petite connexion gentille ! :D

par zeus » 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)

Petite connexion gentille ! :D

par psaikopat » 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?