Script de xonnexion

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 : Script de xonnexion

Re: Script de xonnexion

par moogli » 15 juin 2012, 09:53

commentaire dans le code + un exemple de correction a tester
<?php

$serveur='localhost';
$useradmin='root';
$mdp='';
$NomBase='basemonsite';

try
{
	$cnx = new PDO($serveur, $useradmin, $mdp);
}
catch (PDOException $e)
{
	$cnx = NULL;
	// heu c'est pas une fonction ici ... a moins que tu n'ai pas donnée tout le code
	// donc on affiche le message, ou on le garde dans une variable pour l'afficher autre part correctement
	return $e -> getMessage();
}

if (isset($_POST['btn_envoi'])){
	// non ça commence bien à la ligne du dessus mais on utilise pas directement les indexs
	// des formulaires sans être certain qu'il existe
	// 	$user = $_POST ['chp_util'];
	// 	$mdpuser = $_POST ['chp_pass'];

	if (empty($_POST['chp_util']) || empty($_POST ['chp_pass'])){
		echo 'remplissez tous les champs';
	}else{
		echo 'Bonjour '.$_POST['chp_util'];
	}
	// ton code est inutile, tu fait le même test en php et en SQL.
	// de plus le foreach est inutile, j'espère que tu n'auras pas 4000 utilisateur avec la même info de connexion
	// c'est pour cela que le nom est une très mauvaise idée pour se connecter
	// utilise une info unique comme une adresse email.
	$req='select * from user where nom="'.$user.'"and mdp="'.$mdpuser.'";';
	// dommage la on ne peux pas savoir si la connexion c'est bien passé et dans le cas d'une mauvaise connexion
	// parse error
	$result= $cnx -> query($req);
	$tab_result = $cnx -> fetchAll($result);

	foreach ($tab_result as $ligne){
		if ($ligne[0]== $user and $ligne[1]== $mdpuser){
			echo 'connexion établie';
		}else{
			echo 'identifiants invalides';
		}
	}
}

//correction

try{
	$cnx = new PDO($serveur, $useradmin, $mdp);
	if (isset($_POST['btn_envoi'])){
		if (empty($_POST['chp_util']) || empty($_POST ['chp_pass'])){
			throw new Exception('Tous les champs son obligatoire');
		}else{
			$req='select mdp from user where nom='.$cnx->quote($user);
			$result= $cnx -> query($req);
			if ($result === false){
				// y a une erreur
				$err = errorInfo();
				// on lève une exception avec cette erreur
				throw new Exception($err[2]);
			}
			else {
				$data = $result->fetchAll(PDO::FETCH_OBJ);
				$result->closeCursor();
				if (count($data) == 1){
					if ($data->mdp == $_POST['chp_pass']){
						// tout ets bon
						echo 'Bonjour '.$_POST['chp_util'];
					}
					else {
						throw new Exception('Mot de passe invalide (a éviter ce type de message)');
					}
				}
				else {
					// alors la deux possibilité :
					// - soit pas d'utilisateur
					// - soit plusieurs avec le même nom => grosse boulette :)
				}
			}
		}
	}
}
catch (PDOException $e){
	echo '<p>Erreur : '. $e -> getMessage();
}

?>
@+

Re: Script de xonnexion

par Mazarini » 14 juin 2012, 18:15

Pour t'aider, il faudrait nous indiquer quel est ton problème.

Script de xonnexion

par vertig0 » 14 juin 2012, 15:53

Bonjour à tous,

Je pratique le Php scolaire pour le moment, je suis en stage et j'ai effectivement besoin d'aide.

En effet j'essaie de réaliser un script de connexion sur un site tiers voici mon code :

<?php

$serveur='localhost';
$useradmin='root';
$mdp='';
$NomBase='basemonsite';

try
{
$cnx = new PDO($serveur, $useradmin, $mdp);
}
catch (PDOException $e)
{
$cnx = NULL;
return $e -> getMessage();
}

if (isset($_POST['btn_envoi'])){


$user = $_POST ['chp_util'];
$mdpuser = $_POST ['chp_pass'];

if ($user=='' or $mdpuser=='')
{

echo 'remplissez tous les champs';

}else{

echo 'Bonjour'.' '.$user;

}


$req='select * from user where nom="'.$user.'"and mdp="'.$mdpuser.'";';

$result= $cnx -> query($req);

$tab_result = $cnx -> fetchAll($result);

foreach ($tab_result as $ligne){
if ($ligne[0]== $user and $ligne[1]== $mdpuser){
echo 'connexion établie';
}else{
echo 'identifiants invalides';
}
}
}


?>


j'espere que vous pourrais m'aider,

Cordialement, Vertig0