View Full Version : [PHP] problema insolito e strano
Ciao a tutti.
Quest'oggi sottopongo alla vostra attenzione un problema curioso e strano con il php, e su cui non riesco a trovare una soluzione (o un workaround).
sto facendo una banalissima if di confronto, fra una variabile e una costante
if($count >= 1) {
fai qualcosa
}
else {
qualcos'altro
}
Il codice fatto girare in locale funziona perfettamente. Su server invece pare che la condizione risulti sempre false.
Ho verificato il valore della variabile $count....tutto apposto. Per tagliare la testa al toro allora ho sostituito alla variabile $count una cosatante (per esempio 5). 5 è per forza maggiore o uguale a 1, quindi il risultato del test è forzato ad essere true, ma invece continua per il false!
Vi è mai capitato qualcosa di simile?
sapete darmi un'aiuto?
anonimizzato
15-08-2010, 11:13
edit
Sicurissimo... $count funziona perfettamente sia in locale che in remoto. tra l'altro la sostituzione di $count con una costante è stato fatto solo per puro scrupolo...
ed effettivamente in locale funziona e su server no! E' questo che davvero non torna e non so dove sbattere la testa....
la versione php è la stessa
anonimizzato
15-08-2010, 11:25
Sicurissimo... $count funziona perfettamente sia in locale che in remoto. tra l'altro la sostituzione di $count con una costante è stato fatto solo per puro scrupolo...
ed effettivamente in locale funziona e su server no! E' questo che davvero non torna e non so dove sbattere la testa....
la versione php è la stessa
Ah ok, scusami ho editato perchè rileggendo meglio si capiva che la variabile $count non poteva non essere inizializzata.
Molto strano in effetti.
anonimizzato
15-08-2010, 11:26
Domanda: solo in quel punto o anche in altri hai un comportamento "anomalo"?
Prova a postare una porzione di codice un pò più estesa (se puoi) magari si riesce a capire meglio l'eventuale causa.
questo comportamento non lo riscontro da nessun'altra parte
ecco il codice più esteso...aggiungo dei commenti
// vengono contate le righe dell'insieme dei risultati
$count=mysql_num_rows($result);
// se ci sta almeno una riga in tabella che matcha con username allora l'username già esiste e fa il redirect
if($count >= 1)
header("location:../registrazione.php?regmsg=Attenzione l'username scelto non è disponibile");
//altrimenti prosegue con la normale procedura
//pulisci tutti i campi inseriti dall'utente
ovviamene la funziona mysql_num_rows e testata e funziona perfettamente.
inoltre la funzione header in altre pagine, il suo dovere di interrompere lo script e cambiare pagina lo fa benissimo.
anonimizzato
15-08-2010, 15:11
Solo un consiglio: dopo che fai un redirect con
header("location ...")
metti subito dopo un exit();
header("location ...");
exit();
In questo modo l'escuzione dello script termina altrimenti prosegue anche dopo il redirect.
Ciao.
si, aggiungendo exit() ho la garanzia che lo script termina, ed effettivamente ora funziona sia in locale che su server.
Mi resta però un interrogativo: come mai in locale la versione precedente funzionava? forse il colpevole potrebbe essere il modo in cui il server gestisce le richieste di redirect?
può esistere una cosa del genere? Onestamente ho i miei dubbi, ma va detto che non conosco a fondo le configurazioni che può avere apache
anonimizzato
15-08-2010, 17:38
Uhm, non saprei è un pò che sono fermo con PHP.
Tuttavia mi stai dicendo che ora il problema sulla variabile $count è risolto?
si risolto, ma preciso che il problema non è la variabile $count (non lo è mai stato).
Pare invece che era la funzione header che in locale terminava lo script, mentre in remoto no.
cmq ora è risolto ti ringrazio
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.