- Home
- Categorie
- Coding e Sistemistica
- PHP
- codice reindirizzamento non corretto
-
@sten said:
La funzione header deve essere usata prima di qualsiasi output (nota anche un carattere di invio dà problemi), quindi se ho ben capito mandi un messaggio di errore e reindirizzi automaticamente la pagina, ma la funzione header và in errore. E' così?
Ciao Sten!
no no non viene fuori nessun errore!Il problema è che, a prescindere da quella che è la condizione dell'ultimo if, avviene sempre il reindirizzamento come se le condizioni fossero rispettate..
-
Vediamo... quando il database non trova i dati viene richiamata la funzione die(). Puoi provare a mettere la funzione header() lì dentro?
-
@sten said:
Vediamo... quando il database non trova i dati viene richiamata la funzione die(). Puoi provare a mettere la funzione header() lì dentro?
non va.......fa sempre la stessa cosa, come prima...
-
if (isset ($_SERVER['QUERY_STRING']) && $Result1) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
header(sprintf("Location: %s", $updateGoTo));
}
else {
$erroreGoTo .= (strpos($erroreGoTo, '?')) ? "&" : "?";
header(sprintf("Location: %s", $erroreGoTo));
}UGH!
Tu parli di questo blocco di codice, giusto? Che valore ha $Result1? Non è che invece di testare il valore della variabile, stai testando solamente il fatto che questa variabile esiste?
-
@sten said:
UGH!
Tu parli di questo blocco di codice, giusto? Che valore ha $Result1? Non è che invece di testare il valore della variabile, stai testando solamente il fatto che questa variabile esiste?
$Result1 = mysql_query($updateSQL, $database_iscritti) or die(mysql_error());
-
@sten said:
UGH!
Tu parli di questo blocco di codice, giusto? Che valore ha $Result1? Non è che invece di testare il valore della variabile, stai testando solamente il fatto che questa variabile esiste?
Se gli passo il valore invece va sempre nell'else..............anche quando inserisco tutto giusto..........:x
-
Ok, quello che voglio sapere, è il valore che assume $Result1 in caso di estrazione di dati corretta o nel caso di fallimento della stessa: scrivi echo $Result1 dopo la riga " $Result1 = mysql_query($updateSQL, $database_iscritti) or die(mysql_error());". Prova a vedere che valore ha, poi nell'istruzione if fai un paragone esplicito tra $Result1 e il valore della variabile. Te lo dico perchè mi sembra che scrivere if($variabile) significhi solo controllare se la variabile esiste ed è stata valorizzata (che nel tuo caso avviene comunque) e non se ha un certo valore o no.
-
@sten said:
Ok, quello che voglio sapere, è il valore che assume $Result1 in caso di estrazione di dati corretta o nel caso di fallimento della stessa: scrivi echo $Result1 dopo la riga " $Result1 = mysql_query($updateSQL, $database_iscritti) or die(mysql_error());". Prova a vedere che valore ha, poi nell'istruzione if fai un paragone esplicito tra $Result1 e il valore della variabile. Te lo dico perchè mi sembra che scrivere if($variabile) significhi solo controllare se la variabile esiste ed è stata valorizzata (che nel tuo caso avviene comunque) e non se ha un certo valore o no.
mi dà il valore 1...metto la condizione e non va...................
-
Ti dà valore 1 se la query ha avuto successo, ma se il risultato è nullo che valore ti dà?
-
domanda scema: tu scrivi if($Result1 == 1) vero?
-
@sten said:
domanda scema: tu scrivi if($Result1 == 1) vero?
Si lo scrivo così, il problema è che però il valore è sempre 1 anche se il database non viene aggiornato...
-
@marco1981 said:
Si lo scrivo così, il problema è che però il valore è sempre 1 anche se il database non viene aggiornato...
Il problema è che comunque scrive nel database e quindi il risultato sarà sempre 1 per $Result1..
Secondo me potrebbe essere necessario un controllo sull'esistenza di queste variabili nel database..ma come faccio??
-
Scusa non ho capito, ci sono altri campi oltre a quelli che mi hai detto?
Controllare l'esistenza di variabili equivale a fare una select sul singolo campo, il risultato lo usi per stabilire il reindirizzamento.Altra cosa: hai provato la funzione mysql_**db_**query()? si comporta in modo leggermente diverso:
http://it.php.net/manual/it/function.mysql-db-query.phpPoi c'è mysql_affected_rows() che ti dà il numero esatto di righe modificate:
http://it.php.net/manual/it/function.mysql-affected-rows.phpInfine darei anche un'occhiata alla precedenza degli operatori logici, in pratica riscriverei l'IF in questa maniera:
if ( (isset ($_SERVER['QUERY_STRING'])) && ($Result1==1) )
Forse php lo digerisce meglio....
-
@sten said:
Scusa non ho capito, ci sono altri campi oltre a quelli che mi hai detto?
Controllare l'esistenza di variabili equivale a fare una select sul singolo campo, il risultato lo usi per stabilire il reindirizzamento.Altra cosa: hai provato la funzione mysql_**db_**query()? si comporta in modo leggermente diverso:
http://it.php.net/manual/it/function.mysql-db-query.phpPoi c'è mysql_affected_rows() che ti dà il numero esatto di righe modificate:
http://it.php.net/manual/it/function.mysql-affected-rows.phpInfine darei anche un'occhiata alla precedenza degli operatori logici, in pratica riscriverei l'IF in questa maniera:
if ( (isset ($_SERVER['QUERY_STRING'])) && ($Result1==1) )
Forse php lo digerisce meglio....
Ciao Sten,
grazie mille ma ho risolto finalmente...
ho fatto prima di tutto una query al database nella quale venissero cercati nella tabella i valori del determinato utente. In seguito faccio estrarre i valori dalla tabella e li faccio scrivere in un vettore. Nel caso in cui ai valori forniti dall'utente viene associata una riga della tabella, allora il vettore si riempie, altrimenti (nel caso in cui l'utente sbagli ad inserire i valori con cui si è registrato) crea un vettore vuoto.
In seguito ho indirizzato i reindirizzamenti con le condizioni di vuoto o pieno dell'array e finalmente funziona tutto correttamente. Il problema a usare le condizioni sulla variabile $result è dovuto al fatto che questa associa 1 sempre in quanto la query la esegue sempre senza feedback sul fatto che abbia o meno modificato una riga esistente a database..In sostanza così non c'è modo di capire se effettivamente ha modificato il valore della password in quanto non si riesce ad avere un controllo sul fatto che abbia trovato una riga della tabella che matcha o meno...
Grazie mille per il tempo che mi hai dedicato!!