- Home
- Categorie
- Coding e Sistemistica
- Coding
- Eventuali istruzioni dopo una redirect con header
-
Eventuali istruzioni dopo una redirect con header
Ciao a tutti, vi descrivo il problema:
ho realizzato una pagina php che presenta un form di autenticazione all'area ristretta del sito. L'utente inserisce nome utente e password e, cliccando sul pulsante log-in, i due campi vengono inviati alla stessa pagina che, collegandosi al db sottostante, verifica l'eventuale riscontro. Se il riscontro ha successo, viene eseguita una redirect che porta l'utente alla
prima pagina dell'area ristretta altrimenti l'utente rimane sulla pagina corrente che ripresenta il form di autenticazione accompagnato da un messaggio di errore.
Il codice php all'inizio della pagina è:[php] <?php
session_start();
//Se $_REQUEST["name"] e $_REQUEST["password"] esistono l'utente
//ha compilato il form perciò lancio la queryif( isset($_REQUEST["name"]) && isset($_REQUEST["password"]) )
{
$name=$_REQUEST["name"];
$pass=$_REQUEST["password"];$con=mysql_connect("localhost", "root", "") or die... mysql_select_db("mydb") or die ("Connessione al db impossibile...") $query="SELECT userName FROM users WHERE userName='$name' AND password='$pass'"; $result=mysql_query($query) or die ("Query non valida: ".mysql_error()); $row=mysql_fetch_array($result); if(mysql_num_rows($result)==0) $msg="Autenticazione fallita"; //Messaggio di errore per l'utente else { $_SESSION["user"]="Logged"; header('Location: area_ristretta.php'); } mysql_free_result($result); mysql_close($con);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01....
...Qui c'è il form di autenticazione che richiama questa stessa pagina...
</html>[/php]
La domanda è: quando viene eseguita la redirect attraverso la header, le istruzioni mysql_free_result($result); e mysql_close($con); vengono eseguite? Se si, vorrei sapere se si tratta di una pratica "eticamente corretta" (ovviamente potrei ripetere entrambe le istruzioni sia nell'if sia nell'else e buonanotte al secchio ma vorrei comunque avere chiarimenti riguardo al caso qui sopra).
Mille grazie per il vostro prezioso aiuto, ciao.
-
Ciao Beetlejuice,
direi di si, in genere lo script viene eseguito fino in fondo, a meno di non mettere un exit() dopo il redirect. Credo sia giusto così, anche fin troppo, perché molte volte di mysql_free_result viene addirittura trascurato...
-
La mancanza dell'exit alla fine in molti casi genera problemi con il rendirect su alcuni browser(tra cui se non erro IE)