Mon script ne va pas chercher les données dans mysql.

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 : Mon script ne va pas chercher les données dans mysql.

par CrY94 » 24 oct. 2005, 13:15

Merci de vos aides.

Grace à toutes les réponses que vous avez postés j'ai remanié mon script et il marche désormais très bien .

merci a : agabatur,pjl,Truc (encore et toujours ^^)

Voici le code actuel pour ceux qui souhaitent le voir.
<?php
// Demarage de session.
session_start();
//---------------------------------------------------\\

// Redirection si le visiteur arrive par hasard sur la page.
if (!isset ($_POST['pseudo_loggin']))
	{
		$_SESSION['message_central'] = 1;
		header('Location: ../../index.php');	
	}
	
//---------------------------------------------------\\
 
 // Verification que les champs ne soient pas vides.
if ($_POST['pseudo_loggin'] == "" || $_POST['password_loggin'] == "" )
	{
		$_SESSION['message_central'] = 1; // On redirige avec le message d'erreur 1.
		header('Location: ../../index.php');	
	}

//---------------------------------------------------\\

// Initalisation des variables postées.

	// Variables d'analyse pour la base .	
$_pseudo_loggin_b = addslashes($_POST['pseudo_loggin']);// On ajoute des slashs a la valeur rentré par securité.
$_password_loggin_b = addslashes($_POST['password_loggin']);// On ajoute des slashs a la valeur rentré par securité.

$_pseudo_loggin_a = htmlentities($_pseudo_loggin_b);// On met la variable en entité HTML par securité.
$_password_loggin_a = htmlentities($_password_loggin_b);// On met la variable en entité HTML par securité.

	// Variable a passer en session si tout est bon à la fin du script.
$_pseudo_loggin = htmlentities($_POST['pseudo_loggin']);// On met la variable en entité HTML par securité. 

//---------------------------------------------------\\

// Verification que le pseudo existe.
include ('../../INCLUDE/CONNECTION/connection_bdd_mysql.php');	
$sql_nb="SELECT COUNT(*) AS nbrpseudo FROM compte_membre WHERE pseudo = '".$_pseudo_loggin_a."'";
$rep_nb=mysql_query($sql_nb);
$_verification_existance_pseudo = mysql_result($rep_nb,0);// Si le pseudo existe, le résultat est de 1.

//---------------------------------------------------\\

if ($_verification_existance_pseudo == 1)// Si le pseudo existe
	{
		$_donnees_brutes_pseudo = mysql_query("SELECT * FROM compte_membre WHERE pseudo = '".$_pseudo_loggin_a."'");
		$_donnees_pseudo = mysql_fetch_array($_donnees_brutes_pseudo);
		
		if ($_donnees_pseudo['ban'] == 'non') // Si le membre n'est pas bannit
		{
			if ($_donnees_pseudo['password'] == $_password_loggin_a) // Si le password rentré est le meme que celui correspondant au pseudo.
			{
				$_SESSION['acces'] = $_donnees_pseudo['rank'];
				$_SESSION['pseudo'] = $_pseudo_loggin;
				$_SESSION['message_central'] = 10;
				mysql_close();
				header('Location: ../../index.php');
			}
			
			else // Si le pseudo n'est pas le meme.
			{
				mysql_close();
				$_SESSION['message_central'] = 9; // On redirige avec le message d'erreur 9.
				header('Location: ../../index.php');	
			}
			
		}
		
		else// Si le membre a été bannit.
		{	
			mysql_close();
			$_SESSION['message_central'] = 8; // On redirige avec le message d'erreur 8.
			header('Location: ../../index.php');	
		}
	}
	
else // Si le pseudo n'existe pas.
{
	mysql_close();
	$_SESSION['message_central'] = 7; // On redirige avec le message d'erreur 7.
	header('Location: ../../index.php');	
}
?>

par agabatur » 24 oct. 2005, 11:38

+1
d'où :
ce script a été écrit par toi ou c'est un script que tu ré-utilises ?

par pjl » 24 oct. 2005, 11:25

Il y a des points que l'on a du mal à comprendre dans ton code :
$_pseudo_loggin_b = addslashes($_POST['pseudo_loggin']);
$_pseudo_loggin_a = htmlentities($_pseudo_loggin_b);
$_pseudo_loggin = htmlentities($_POST['pseudo_loggin']); 
Pourquoi 3 variables pour le pseudo ?

Ensuite dans le déroulement logique :
tu fais :
// Verification de l'existance du pseudo dans la base de donnée. 
// Confrontation des données. 
Tu vérifies dans la base si le pseudo existe et seulement après, tu vérifies qu'il a bien rempli les champs password et login.

C'est pareil pour le banissement.
Tu vérifies s'il est banni et après tu vérifies si tu as bien recu tes données pour savoir si le membre existe et s'il a le bobn mot de passe.

par Truc » 23 oct. 2005, 22:56

Salut, il y a pas mal de petites erreurs la dedans..

Pour compter le nombre de lignes correspondant au a ce pseudo vaut meiux le faire en etapes:
$sql_nb="SELECT COUNT(*) AS nbrpseudo FROM compte_membre WHERE pseudo = '".$_pseudo_loggin_a."'";
$rep_nb=mysql_query($sql_nb);
$_verification_existance_pseudo = mysql_result($rep_nb,0);
tu aura donc le nombre de lignes dans $_verification_existance_pseudo.
doc => mysql_result()

Tu verifi l'existence par rapport au pseudo d'accord MAIS apres tu recherche le mot de passe grace au seul pseudo !?!
nimporte qui peut entrer un pseudo et etre identifié pourvu que le pseudo existe :?

Si tu affiche ton résultat
echo $_verification_existance_pseudo['nbrpseudo'];
je suis quasi sur que tu va obtenir 0.
sinon tu te serai plaind d'un autre erreur lors de ces tests:
elseif ($_password_loggin_a != $_rep_password) 
elseif ($_rep_ban == 'oui')
ces variables ne veulent rien dire comme ça, il faut les lire avant avec mysql_fetch_array() par exemple et ensuite lire comme ceci :
$_rep_password['password']
Dernier point pourquoi faire 2 requetes pour le mot de passe et "ban" (bannière :-k ) alors que tu peut séléctionner les 2 dans une seule requete.

par Invité » 23 oct. 2005, 22:55

Tu as pondu ce script et tu n'arrives pas à le faire fonctionner ?
Ben justement le forum est la pour ça, non ?!

par agabatur » 23 oct. 2005, 22:50

"Peut etre cela provient d'une requete ou de mon code mais le je comprend plus."
pour essayer de situer le niveau.
Tu as pondu ce script et tu n'arrives pas à le faire fonctionner ?

par CrY94 » 23 oct. 2005, 22:46

Je l'ai ecris par moi meme pourquoi ?

par agabatur » 23 oct. 2005, 22:42

ce script a été écrit par toi ou c'est un script que tu ré-utilises ?

Mon script ne va pas chercher les données dans mysql.

par CrY94 » 23 oct. 2005, 21:45

Bonsoir a tous

J'ai creer un script pour aller chercher les données rentrées par un visiteur lors du remplissage du formulaire dans une page de log.

Le script dans un premier temps regarde si les données postées on une entré dans la bdd.
si oui, il va chercher les informations complémentaire.
Je confronte l'ensemble des données de la base de donnée avec celles postées.
je redirige et j'affiche l'erreur si une des confrontation est vrais.
Sinon ( si il n'y a pas d'erreur) il va chercher toutes les information et les mets en variable.

Le probleme est que meme si je met les bons identifiants, il me retourne l'erreur 7 en session et donc que le pseudo n'existe pas dans la base de données alors qu'il est bien existant.

Peut etre cela provient d'une requete ou de mon code mais le je comprend plus. merci de bien vouloir m'aider
<?php
// Demarage de session.
session_start();

// Redirection si le visiteur arrive par hasard sur la page.
if (!isset ($_POST['pseudo_loggin']))
	{
		$_SESSION['message_central'] = 1;
		header('Location: ../../index.php');	
	}
//---------------------------------------------------\\
	
// Initalisation des variables postées.

	// Recuperation des variables .	
$_pseudo_loggin_b = addslashes($_POST['pseudo_loggin']);
$_password_loggin_b = addslashes($_POST['password_loggin']);
$_pseudo_loggin_a = htmlentities($_pseudo_loggin_b);
$_password_loggin_a = htmlentities($_password_loggin_b);
$_pseudo_loggin = htmlentities($_POST['pseudo_loggin']);


// Verification de l'existance du pseudo dans la base de donnée.
include ('../../INCLUDE/CONNECTION/connection_bdd_mysql.php');	
$_verification_existance_pseudo = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS nbrpseudo FROM compte_membre WHERE pseudo = '".$_pseudo_loggin_a."'"));
mysql_close();
if ($_verification_existance_pseudo['nbrpseudo'] == 1)
	{
		include ('../../INCLUDE/CONNECTION/connection_bdd_mysql.php');	
		$_sql_password = "SELECT password FROM compte_membre WHERE pseudo = '".$_pseudo_loggin_a."'";
		$_rep_password = mysql_query($_sql_password);
		$_sql_ban = "SELECT ban FROM compte_membre WHERE pseudo = '".$_pseudo_loggin_a."'";	
		$_rep_ban = mysql_query($_sql_ban);
		mysql_close();		
	}
//---------------------------------------------------\\

// Confrontation des données.
if ($_pseudo_loggin_a == "" || $_password_loggin_a == "" )
	{
		$_SESSION['message_central'] = 1;
		header('Location: ../../index.php');	
	}	

// Si le pseudo existe pas.	
elseif ($_verification_existance_pseudo['nbrpseudo'] == 0)
	{
		$_SESSION['message_central'] = 7;
		header('Location: ../../index.php');	
	}

//  Si le password ne correspond pas à ce pseudo.
elseif ($_password_loggin_a != $_rep_password)
	{
		$_SESSION['message_central'] = 8;
		header('Location: ../../index.php');	
	}

// Si le membre est bannit.
elseif ($_rep_ban == 'oui')
	{
		$_SESSION['message_central'] = 9;
		header('Location: ../../index.php');	
	}	

// Si tout est bon .
else
{
include ('../../INCLUDE/CONNECTION/connection_bdd_mysql.php');
$_sql_rank = "SELECT rank FROM compte_membre WHERE pseudo = '".$_pseudo_loggin_a."'";
$_rep_rank = mysql_query($_sql_rank);
mysql_close();
$_SESSION['rank'] = $_rep_rank;
$_SESSION['pseudo'] = $_pseudo_loggin;
$_SESSION['message_central'] = 10;
header('Location: ../../index.php');
}

?>