Code de [CONNEXION ESPACE MEMBRE]

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 : Code de [CONNEXION ESPACE MEMBRE]

par AB » 26 déc. 2007, 04:07

A toi aussi (j'ai édité mon dernier message), on va y arriver :D

par zaknaou » 26 déc. 2007, 04:04

A ouai, bah merci à toi et bonne fête de noël.

par AB » 26 déc. 2007, 03:55

Bah je viens de te répondre, on a posté en même temps.

Ce qu'il y a de mieux dans la méthode que je t'ai donnée c'est qu'elle marche quelque soit la configuration serveur de get_magic_quotes_gpc())

Par ailleurs les données recherchées sont protégées par la fonction mysql_real_escape_string() ce qui est le standard actuel. Cliques sur cette fonction pour voir les exemples donnés par le manuel :)

Maintenant il te restais un petit contrôle de variables à faire. Terminé cela devrait donné quelque chose comme ça :
function stripgpc($value) {
if(get_magic_quotes_gpc()) $value = stripslashes($value);
return $value;
}

$mdp = isset($_POST['mot_de_passe']) ? stripgpc($_POST['mot_de_passe']) : '';
$login = isset($_POST['identifiant']) ? stripgpc($_POST['identifiant']) : '';

$selection = sprintf("SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe ='%s' AND identifiant ='%s'",
mysql_real_escape_string($mdp),
mysql_real_escape_string($login)); 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_fetch_assoc($query);

if ($totalReponse['compte'] == 1 ) {
echo 'membre identifié';
}
else 
{
echo 'membre non identifié';
}

par zaknaou » 26 déc. 2007, 03:43

Ca marche aussi !!

MERCI

Tu as dit que dans le principe ça :
<?php

//-->> DEMMARRAGE D'UNE SESSION
session_start();

//-->> INCLUDE
include('ip.php');
include('../include/mysql.php');

function stripgpc($value) {
if(get_magic_quotes_gpc()) $value = stripslashes($value);
return $value;
}

$selection = sprintf("SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe ='%s' AND identifiant ='%s'",
mysql_real_escape_string(stripgpc($_POST['mot_de_passe'])),
mysql_real_escape_string(stripgpc($_POST['identifiant']))); 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_fetch_assoc($query);

if ($totalReponse['compte'] == 1 ) {
echo 'membre identifié';
}
else 
{
echo 'membre non identifié';
}

?>
c'est mieu que ça :
<?php

//-->> DEMMARRAGE D'UNE SESSION
session_start();

//-->> INCLUDE
include('ip.php');
include('../include/mysql.php');

$loginOK = false;
$identifiant  = isset($_POST['identifiant']) ? $_POST['identifiant'] : "";
$mot_de_passe    = isset($_POST['mot_de_passe'])   ? $_POST['mot_de_passe']   : "";

if ( (!empty($identifiant)) && (!empty($mot_de_passe)) )
{

    //-->> On va vérifier l'existence du couple identifiantnyme + mot de mot_de_passee
    $sql = "SELECT COUNT(*) FROM `inscription` WHERE `identifiant` = '" . addslashes($identifiant) . "' AND `mot_de_passe` = '" . addslashes($mot_de_passe) . "'";
    
	//-->> Exécution de la requête
    $req = mysql_query($sql) or die(''. mysql_error());

    //-->> On vérifie le résultat retourné
    if (mysql_result($req, 0) == 1)
    {
        $loginOK = true;
		$loginas = "ok";
    }
}

if ($loginas == "ok")
{
	echo"VOTRE COMPTE";
}
else
{
	echo"ERREUR";
} 

?>
ok, mais pourquoi ?

par AB » 26 déc. 2007, 03:42

Oui il manquait quelques quotes(') dans ma requête, je l'ai écrite un peu vite sans tester. Mais sur le principe est elle mieux que celles que tu as trouvées. Dans trois minutes j'édite ce message pour te donner la meilleure solution standard :wink:


EDIT suivant les recommandations du manuel php si on fait ça dans les règles de l'art ça donne :
function stripgpc($value) {
if(get_magic_quotes_gpc()) $value = stripslashes($value);
return $value;
}

$selection = sprintf("SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe ='%s' AND identifiant ='%s'",
mysql_real_escape_string(stripgpc($_POST['mot_de_passe'])),
mysql_real_escape_string(stripgpc($_POST['identifiant']))); 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_fetch_assoc($query);

if ($totalReponse['compte'] == 1 ) {
echo 'membre identifié';
}
else 
{
echo 'membre non identifié';
}

par zaknaou » 26 déc. 2007, 03:09

Pour le premier if il manquais une paire de {} et pour la fonction il en faut une ?

Est-ce ça ?
<?php

//-->> DEMMARRAGE D'UNE SESSION
session_start();

//-->> INCLUDE
include('ip.php');
include('../include/mysql.php');

function stripgpc($value)
{
	if(get_magic_quotes_gpc()) 
	{
		$value = stripslashes($value);
		return $value;
	}
}

//-->> SELECTION DU CHAMPS MOT DE PASSE DE TOUT LES IDENTIFIANT
$selection = "SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe = " .mysql_real_escape_string(stripgpc($_POST['mot_de_passe'])). " AND identifiant = " .mysql_real_escape_string(stripgpc($_POST['identifiant'])); 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_fetch_assoc($query); 

if ($totalReponse['compte'] == 1 )
{
	echo"VOTRE COMPTE";
}
else
{
	echo"ERREUR";
} 

?>
Je vien de retrouver un code sur un forum resseblant à :
$loginOK = false;
$pseudo  = isset($_POST['pseudo']) ? $_POST['pseudo'] : "";
$pass    = isset($_POST['pass'])   ? $_POST['pass']   : "";

if ( (!empty($pseudo)) && (!empty($pass)) )
{

    // On va vérifier l'existence du couple pseudonyme+mot de passe
    $sql = "SELECT COUNT(*) FROM `user` WHERE `pseudo` = '" . addslashes($pseudo) . "' AND `pass` = '" . addslashes($pass) . "'";
    /* Exécution de la requête */
    $req = mysql_query($sql) or die("Erreur lors de l'exécution de la requête : \"".$sql ."\";<br />\nErreur retournée : ". mysql_error());

    // On vérifie le résultat retourné
    if (mysql_result($req, 0) == 1)
    {
        $loginOK = true;
    }
}


Et avec quelques modofication :
<?php

//-->> DEMMARRAGE D'UNE SESSION
session_start();

//-->> INCLUDE
include('ip.php');
include('../include/mysql.php');

$loginOK = false;
$identifiant  = isset($_POST['identifiant']) ? $_POST['identifiant'] : "";
$mot_de_passe    = isset($_POST['mot_de_passe'])   ? $_POST['mot_de_passe']   : "";

if ( (!empty($identifiant)) && (!empty($mot_de_passe)) )
{

    //-->> On va vérifier l'existence du couple identifiantnyme + mot de mot_de_passee
    $sql = "SELECT COUNT(*) FROM `inscription` WHERE `identifiant` = '" . addslashes($identifiant) . "' AND `mot_de_passe` = '" . addslashes($mot_de_passe) . "'";
    
	//-->> Exécution de la requête
    $req = mysql_query($sql) or die(''. mysql_error());

    //-->> On vérifie le résultat retourné
    if (mysql_result($req, 0) == 1)
    {
        $loginOK = true;
		$loginas = "ok";
    }
}

if ($loginas == "ok")
{
	echo"VOTRE COMPTE";
}
else
{
	echo"ERREUR";
} 

?>
Maintenant il ne reste pluq qu'a testé

par AB » 26 déc. 2007, 02:56

Heu compte sera pour moi identifiant ?

et pourquoi on fait :
if ($totalReponse['compte'] == 1 ) { 
Parce que dans ma dernière requête j'ai utilisé un alias que j'ai nommé "compte" (on aurait pu le nommer autrement) pour enregistrer le nombre de résultats trouvés.

Note : j'ai complété mon précédent message

par zaknaou » 26 déc. 2007, 02:43

Heu compte sera pour moi identifiant ?

et pourquoi on fait :
if ($totalReponse['compte'] == 1 ) { 
Et j'obtient :
Unknown column '2i2k' in 'where clause'
C'est le mot de passe

Je sais pas d'où vien cette erreur car je ne comprend pas le code

Mais le code croit que 2i2k est un champs dans la bdd alors que c'est la valeur du champs mot_de_passe dans la bdd [/php]

par AB » 26 déc. 2007, 02:32

Hum, je comprend pas trop pourquoi, pour connecter un membre, tu les sélectionnent tous en faisant ensuite une comparaison dans ta boucle de résultat... Pourquoi ne pas (comme je te l'ai suggéré plus haut) vérifier directement si le membre existe dans la bdd ?
$selection = "SELECT mot_de_passe, identifiant FROM inscription WHERE mot_de_passe = '" .mysql_real_escape_string($_POST['mot_de_passe']). "' AND identifiant ='" .mysql_real_escape_string($_POST['identifiant']). "'"; 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_num_rows($query);

if ($totalReponse == 1 ) {
//membre ok
;}
else {//pas bon
;}
variante plus optimisée
$selection = "SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe = '" .mysql_real_escape_string($_POST['mot_de_passe']). "' AND identifiant = '" .mysql_real_escape_string($_POST['identifiant']). "'"; 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_fetch_assoc($query);

if ($totalReponse['compte'] == 1 ) {
//membre ok
}
else {
}
Et pour que cela passe quelque soit la config de get_magic_quotes_gpc il faut faire un truc comme
function stripgpc($value) {
if(get_magic_quotes_gpc()) $value = stripslashes($value);
return $value;
}

$selection = "SELECT COUNT(*) as compte FROM inscription WHERE mot_de_passe = '" .mysql_real_escape_string(stripgpc($_POST['mot_de_passe'])). "' AND identifiant = '" .mysql_real_escape_string(stripgpc($_POST['identifiant'])). "'"; 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_fetch_assoc($query);

if ($totalReponse['compte'] == 1 ) {
//membre ok
}
else {
}

par zaknaou » 26 déc. 2007, 02:16

J'ai
Parse error: parse error, unexpected ';' in /homepages/22/d186490993/htdocs/site/script/connexion.php on line 14

par Truc » 26 déc. 2007, 01:47

Tu as trouvé ton bonheur avec la réponse de AB ?

par zaknaou » 26 déc. 2007, 01:38

Merci

donc, j'obtient :
<?php

//-->> DEMMARRAGE D'UNE SESSION
session_start();

//-->> INCLUDE
include('ip.php');
include('../include/mysql.php');

//-->> RECEPTION DU CHAMPS
$identifiant_champs 	= $_POST['identifiant'];

//-->> SELECTION DU CHAMPS MOT DE PASSE DE TOUT LES IDENTIFIANT
$mot_de_passe_req = mysql_query("SELECT mot_de_passe,identifiant FROM inscription WHERE mot_de_passe = " .mysql_real_escape_string($_POST['mot_de_passe']) or die (''.mysql_error());
while($mot_de_passe_data = mysql_fetch_assoc($mot_de_passe_req))
    {
$mot_de_passe_base 					= $mot_de_passe_data['mot_de_passe'];
$identifiant_base 					= $identifiant_data['identifiant'];
	}

//-->> CONSEQUENCE
if($mot_de_passe_base == $mot_de_passe_champs AND $identifiant_base == $identifiant_champs)
{
//-->> Redirection ver scompte
}
else
{
//-->> Erreur
}

?>
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par AB » 26 déc. 2007, 01:02

Oui effectivement,

Essaies plutôt quelque chose du genre
$Query = "SELECT mot_de_passe, identifiant FROM inscription WHERE mot_de_passe = " .mysql_real_escape_string($_POST['mot_de_passe']). " AND identifiant = " .mysql_real_escape_string($_POST['identifiant']);

Code de [CONNEXION ESPACE MEMBRE]

par zaknaou » 26 déc. 2007, 00:13

Bonjour et joyeux noël à vous.

Quelqu'un peut t-il me dire comment on crée un script permétant de connecté un membre à l'espace membre ?

Bon j'ai fait de mon mieu mais ya quelque incertitudes :
<?php

//-->> DEMMARRAGE D'UNE SESSION
session_start();

//-->> INCLUDE
include('ip.php');
include('../include/mysql.php');

//-->> RECEPTION DES CHAMPS
$mot_de_passe_champs 	= $_POST['mot_de_passe'];
$identifiant_champs 	= $_POST['identifiant'];

//-->> SELECTION DU CHAMPS MOT DE PASSE DE TOUT LES IDENTIFIANT
$mot_de_passe_req = mysql_query("SELECT mot_de_passe,identifiant FROM inscription") or die (''.mysql_error());

while($mot_de_passe_data = mysql_fetch_assoc($mot_de_passe_req))
    {
$mot_de_passe_base 					= $mot_de_passe_data['mot_de_passe'];
$identifiant_base 					= $identifiant_data['identifiant'];
	}

//-->> CONSEQUENCE
if($mot_de_passe_base == $mot_de_passe_champs AND $identifiant_base == $identifiant_champs)
{
//-->> Redirection ver scompte
}
else
{
//-->> Erreur
}

?>
Merci beaucoup.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]