soucis de variable de session

Eléphant du PHP | 319 Messages

06 nov. 2007, 13:13

hello,

dans mon script de recommandation l'utilisateur A envoit la recommandation a ses copains U1, U2, U3, U4 et U5

je cree donc un nouveau compte (temporaire) pour U1 ... U5 ou ils ont donc un identifiant. je souhaite egalement recompenser Utilisateur 0 si ses copains s'enregistrent. donc j'ecris egalement son identifiant parmi les infos de U1 ... U5

le soucis vient du fait que dans mon script l'indentifiant de U0 n'est pas pris en compte.
la requete prends en compte l'identifiant du dernier compte cree.

par exemple:

- l'identifiant de U0 est 100. il recommande a U1... U5.
- U1 doit etre 101 et recommande par 100
- U2 doit etre 102 recommande par 100
- U3 doit etre 103 recommande par 100 ...

dans mon cas j'ai:

- U1 est 101 recommande par le dernier inscrit sur le site
- U2 est 102 recommande par 101
- U3 est 103 recommande par 102

...

je ne vois pas l'erreur (vu que j'utilise mysql_insert_id APRES l'insertion dans la table concernee)

je vous laisse le code si vous pouvez jeter un oeil :)

merci

<?php
session_start();

if (isset($id_clients))

{
require('../includes/config.php');
require('../includes/functions.tpl.php');

//store id of the client
$id = $_SESSION['id_clients'];

//get all data from the form, check if it is empty
$fname1 = (isset($_POST['fname1']))?$_POST['fname1']:'';
$lname1 = (isset($_POST['lname1']))?$_POST['lname1']:'';
$email_a = (isset($_POST['email1']))?$_POST['email1']:'';

$fname2 = (isset($_POST['fname2']))?$_POST['fname2']:'';
$lname2 = (isset($_POST['lname2']))?$_POST['lname2']:'';
$email_b = (isset($_POST['email2']))?$_POST['email2']:'';

$fname3 = (isset($_POST['fname3']))?$_POST['fname3']:'';
$lname3 = (isset($_POST['lname3']))?$_POST['lname3']:'';
$email_c = (isset($_POST['email3']))?$_POST['email3']:'';

$fname4 = (isset($_POST['fname4']))?$_POST['fname4']:'';
$lname4 = (isset($_POST['lname4']))?$_POST['lname4']:'';
$email_d = (isset($_POST['email4']))?$_POST['email4']:'';

$fname5 = (isset($_POST['fname5']))?$_POST['fname5']:'';
$lname5 = (isset($_POST['lname5']))?$_POST['lname5']:'';
$email_e = (isset($_POST['email5']))?$_POST['email5']:'';

//1st case
if(!empty($fname1) || !empty($lname1) || !empty($email_a))
	{
	//protect against mysql injection
	$email1 = mysql_real_escape_string(htmlentities($email_a, ENT_QUOTES)); 
	
	//check if email already exists
	$query = (" SELECT email FROM clients WHERE email = '$email_a' ");
	$result = mysql_query($query) or die('Invalid query: ' . mysql_error()); 
	$data = mysql_num_rows($result);
	
	if ($data < 1)
		{
		//generates random password
		$password_temp = random_password();
		$password1 = md5($password_temp);
		
		//insert into database new account: beware, EMAIL IS WRONG
		$query = (" INSERT INTO clients (fname, lname, password, email, points, referral, maxgrids, gridsleft) 
					VALUES ('$fname1', '$lname1', '$password1', '$email1', '500', '$id', '11', '1') ");
		mysql_query($query) or die('Invalid query: ' . mysql_error()); 
		
		
		//return id of this new client, random grid, and current time
		$id_clients = mysql_insert_id();
		
		//get a random grid (sorted) + convert it to an array
		$sortedlist = random_draw();
		$array = strtoArray($sortedlist);
		$array2 = implode("-", $array);
		$arraylist = substr_replace($array2,"",-1);
		
		//gets the current time
		$registration = time();
		
		$query = (" INSERT INTO grids_clients (id_clients, grids_1, grids_2, gridnumber, timeplayed) 
				  VALUES ('$id_clients', '$sortedlist', '$arraylist', '1', '$registration') ");
		mysql_query($query) or die('Invalid query: ' . mysql_error()); 	
			
		print "ok";
		
		//free memory of successive queries
		mysql_free_result($result);
		}
	}




//end 1st IF statement
}

else
{
mysql_close();
$_SESSION['error'] = 5;
header('Location: ../errors/error.php');
}




?>
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 319 Messages

06 nov. 2007, 13:35

bon: j'ai trouve:

ca venait du fait que j'utilisais $id avec des donnees differentes. lors du 2nd appel la variable de session etait ecrasee par une nouvelle valeur (le nouvel id cree)
niveau: pas terrible en php mais je me soigne...