Page 1 sur 1

Probléme d'affichage de variable sur un authentification

Posté : 02 mai 2008, 12:08
par kweb
Bonjour,

j'ai trouver un script qui permet de gérer des authentification et de re-diriger sur une page selon le pseudo et passe utilisé lors de la connexion. (tout fonctionne bien)

Je souhaitez un peu personnaliser ce script en affichant quelques infos supplémentaire sur la page sur laquelle la personne arrive une fois authentifier.
par exemple son nom et prénon et email (existant dans la BD)

Code : Tout sélectionner

CREATE TABLE membre ( id_membre int(10) NOT NULL, id varchar(20) NOT NULL, pseudo varchar(40) NOT NULL, passe varchar(20) NOT NULL, url varchar(100), destination varchar(60) NOT NULL, nom varchar(60), prenom varchar(60), email varchar(50) );
Ce script générer un id (id varchar(20) NOT NULL) aléatoire
$destination=mysql_result($requete,$i,"destination");
	{
	$taille = 20;
	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
	srand(time());
	for ($i=0;$i<$taille;$i++)
		{
		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
		}
		
	$requete=mysql_db_query($sql_bdd,"update membre set id=\"$id\" where pseudo=\"$pseudo\" and passe=\"$passe\"",$db_link);
	
	$destination = 
	
	header("Location:$destination?id=$id");
	}
Le problème que je rencontre :
la page afficher une fois connecter a comme URL : www.monsite.com/destination.php?id=kz5cr2pq8jnaufmt50uq

j'ai voulu mettre ce code ci-dessous pour afficher les infos supplementaire
$sql= "SELECT * FROM membre WHERE id =".$_GET['id']." ";
		$sql_retour =  mysql_query ($ftp) or die (mysql_error()); 
		$affichage = mysql_fetch_array($sql_retour);
			
		echo $affichage['nom'];
et je me retrouve avec cette erreur :

Code : Tout sélectionner

Unknown column 'kz5cr2pq8jnaufmt50uq' in 'where clause'
Comment puis-je faire pour identifier l'id_membre ? ce qui me permettrais d'afficher les infos donc j'ai besion.
pourriez vous me donner quelques conseille. merci de votre aide

Posté : 02 mai 2008, 12:42
par katagoto
Déjà faut pas faire comme ça...

$_GET['id'] ^^'
Il faut que tu le mette en $_SESSION et chaque fois qu'un page s'éxécute tu vérifie que la variable $_SESSION éxiste, tu la récupère et tu la vérifie :
<?php
session_start();
if(isset($_SESSION['id']) AND $_SESSION['id']!=""){
$id_utilisateur=intval(addslashes($_SESSION['id']));
$pseudo_utilisateur=intval(addslashes($_SESSION['pseudo']));
$compte_utilisateur=$connexion->query("SELECT * FROM utilisateurs WHERE id='".quote($id_utilisateur, PDO::PARAM_STR)."'");
	$compte_utilisateur=setFetchMode(PDO::FETCH_OBJ);
        
	if ($compte_utilisateur->pseudo=$_SESSION['pseudo_utilisateur']) {
		// Informations correctes
		$if_utilisateur_connecte=1;
	}
}
Voilà et après tu vérifie que $if_utilisateur_connecte éxiste si non tu redirige vers conexion.php et tu te sert toujours de $id_utilisateur

++

Posté : 05 mai 2008, 10:34
par kweb
Je te remercie de ces explications, mais qui reste encore un peu complexe à comprendre pour moi (etant débutant :oops: )

Voila comment j'ai procéder suite a tes explications :

sur la page qui vas générer le "id aléatiore" (login.php) j'ai donc mis un "session_star()"
session_start();

require("protec/passe/conf.php3");

$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo\" and passe=\"$passe\"",$db_link);
if(mysql_num_rows($requete)==0)
	{
	header("Location:$url_erreur");exit;
	}
else
$destination=mysql_result($requete,$i,"destination");
	{
	$taille = 20;
	$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
	srand(time());
	for ($i=0;$i<$taille;$i++)
		{
		$id.=substr($lettres,(rand()%(strlen($lettres))),1);
		}
		
	$requete=mysql_db_query($sql_bdd,"update membre set id=\"$id\" where pseudo=\"$pseudo\" and passe=\"$passe\"",$db_link);
	
	$destination = 
	
	header("Location:$destination?id=$id");
	}	

mysql_close($db_link);
ensuite lorsque la personne est authentifié j'ai insérer le code comme ceci (a la suite du code existant)
<?
session_start();

require("protec/passe/conf.php3");
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
$requete=mysql_db_query($sql_bdd,"select * from membre where id=\"$id\"",$db_link);
if(mysql_num_rows($requete)==0)
	{
	header("Location:$url_erreur");
	}
	
if(isset($_SESSION['id']) AND $_SESSION['id']!="")
			{
			$id_utilisateur=intval(addslashes($_SESSION['id']));
			$pseudo_utilisateur=intval(addslashes($_SESSION['pseudo']));
			$compte_utilisateur=$connexion->query("SELECT * FROM membre WHERE id='".quote($id_utilisateur, PDO::PARAM_STR)."'");
			$compte_utilisateur=setFetchMode(PDO::FETCH_OBJ);
				
				if ($compte_utilisateur->pseudo=$_SESSION['pseudo_utilisateur']) 
					{
					// Informations correctes
					$if_utilisateur_connecte=1;
					}
			} 
?>
<html>
<head>
<title>Destination 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<div>AFFICHER LE NOM, PRENOM, EMAIL DE LA PERSONNE CONNECTER</div>
</body>
</html>
Je t'avouerais que j'ai placé ce code un peu comme ça sans savoir ce que je faisais.
merci par avance si vous pouvez encore un peu m'aidé.[/php]

Posté : 05 mai 2008, 13:12
par thehawk
Salut kweb

alors tu as certes activer la session mais tu ne l'utilise pas.

Pour ce faire utilise les variables de sessions qui ont la syntaxe suivante : $_SESSION['un_nom'].


ensuite je pense que ta syntaxe dans la requête sql n'est pas tout a fait exact :
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo='".$pseudo."' and passe='".$passe."'",$db_link);
Applique ca devrait passez un peu mieux

oublie pas les ' ' qui entoure : '".$pseudo."'

@+Hawk

ps : un gros poutou a ce qui me reconnaisse =)