problema if else non si eseguono

  • Creatore Discussione Creatore Discussione luigi777
  • Data di inizio Data di inizio

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
43
Massa, Italy
Salve, ho questo piccolissimo codice che sto faccendo tramite un tutorial fatto con il vecchio mysql..
però questo non c'èntra..

ma non mi riesce ad funzionare l'if ed else per controllare l'id e la key.

ecco il codice:

PHP:
<?php
require_once(dirname(__FILE__) . '/../inc.php');

require_once(dirname(__FILE__) . "/../template/".$template_client."/header.php");

	$id = (int)$_GET["id"];

	$key = $_GET['key'];

	

		$query = $db->query("SELECT * FROM utenti WHERE id = '".$id."' and pass_activationHash='".$key."'");
		
		
		if($row= $query->num_rows==1)
		{
			$row = $query->fetch_assoc();
			if($row['temp_pass_active']==1)			{
				$msg =   'La tua password  risulta gi&agrave; attivo.!';
			}
			elseif($row['pass_activationHash']!=$key)
			{
				$msg ='Chiave di conferma non corrispondono!';
			}
			else
			{
				$db->query("UPDATE utenti SET pass='".$row["pass_temp"]."', temp_pass_active=2 WHERE id=".$id." and pass_activationHash='".$key."'")  or die($db->error);
				$msg ='Congratulazione La tua passsword  &egrave; valida';
			}
		}
		else {
		
			$msg = 'User not found !';
		
		}

	

	if(isset($error))
	{
		echo $error;
	}
	else {
		echo $msg;
	}
	require_once(dirname(__FILE__) . "/../template/".$template_client."/footer.php");
?>

mi date informazioni come mai?

grazie mille e buona domenica..
 
forse perche mancano le parentesi all funzione num_rows

PHP:
if ($row = $query->num_rows() == 1) {
 
ciao
metti dei var_dump() per vedere cosa ti risulta $row al fetch_assoc

allora ho messo il var_dump alla fine e lo messo al row..
la cosa è cosi:

array(2) { ["temp_pass_active"]=> string(1) "1" ["pass_activationHash"]=> string(32) "e9da82f4c252e7f1745ae88f2624fc07" } La tua password risulta già attivo.!

se metto un dato a caso .. ad esempio la chiave ma aggiungendole un " s "
viene cosi:

int(0) User not found !

quindi?

grazie mille e buona serata.
 
ciao
se hai scritto tutto il var dump e hai fatto il var_dump($row);
array(2) { ["temp_pass_active"]=> string(1) "1" ["pass_activationHash"]=> string(32) "e9da82f4c252e7f1745ae88f2624fc07" }
La tua password risulta già attivo.!

c'è qualcosa che non torna
nella select tu fai SELECT * quindi estrai tutto
nella $row (array) è sparito l'id che mi sembra tu debba avere.
ti scrivo (facendo inorridire alex) con il vecchio mysql

se nella tabella hai id, pas_act, pas_ash (tre campi)
con
PHP:
//......
$ris=mysql_query("SELECT * FROM utenti WHERE id = '".$id."' and pass_activationHash='".$key."'");
$row=mysql_fetch_assoc($ris)
var_dump($row)
//....
il var_dump dovrebbe darti
array(3) { ["id"]=> int(1) 1 ["temp_pass_active"]=> string(1) "1" ["pass_activationHash"]=> string(32) "e9da82f4c252e7f1745ae88f2624fc07" }
e non array(2) ...ecc...
 
ha ragione lo script..
perché essendo che l'account è già stata attivata la password ed quindi si blocca al primo if e non fa il seccondo perché essendo già convalidato..

ora non ho tempo ma sto risolvendo un'altro problema dei ruoli degli utenti..

poi ora non ho il pc sotto mano.. e sono con il portatile controllerò domani..

grazie idee?

ciao e buona serata.
 
ciao
se per
intendi come risolvere gli if, potersti provare in questo modo
PHP:
<?php
//.........
 $msg="";
 if($row= $query->num_rows==1){ 
            $row = $query->fetch_assoc(); 
            if($row['temp_pass_active']==1){ 
                $msg .=   'La tua password  risulta gi&agrave; attivo.!<br>'; 
            } 
            if($row['pass_activationHash']!=$key){ 
                $msg .='Chiave di conferma non corrispondono!'; 
            } 
            if($msg==""){ // se ok $msg è vuoto
                $db->query("UPDATE utenti SET pass='".$row["pass_temp"]."', temp_pass_active=2 WHERE id=".$id." and pass_activationHash='".$key."'")  or die($db->error); 
                $msg ='Congratulazione La tua passsword  &egrave; valida'; 
            } 
        } else { 
            $msg = 'User not found !'; 
        } 
//......
?>
così dovresti vedere se pass attiva o non corrispondono o entrambi i casi
 

Discussioni simili