Redirect in una pagina in PHP!!

schizzechea

Nuovo Utente
6 Mar 2004
29
0
0
49
www.schizzechea.it
Ciao a tutti ragazzi! vi è mai capitato di risolvere un problema di codice ma non siete contenti di come lo avete risolto??? Bene io mi trovo i questa situazione da tempo....allora:

Ho una pagina dove effettuo un banalissimo inserimento in un database ed al termine del quale controllo mediante un IF la riuscita o meno della query. A secondo del risultato ottenuto vado a pagina OK o a pagina ERRORE. Niente di speciale...

ESEMPIO

Codice:
$strSQL="INSERT INTO tabella (NOME, COGNOME) VALUES ("Pippo", "Baudo");

if (mysql_query($strSQL)) {
    vai alla pagina OK.php;
} else {
    vai alla pagina ERRORE.php;
}

Il problema è che sono anni che mi chiedo come è possibile che non esista in PHP un banalissimo Response.Redirect("http://....") come esiste in ASP 3.0.

In altri forum mi sono state suggerite le seguenti possibilità per aggirare questo problema:

a)
Codice:
header ('Location: http://......');
che se funzionasse sarebbe l'ideale ma non funziona in quanto (come da spiegazioni trovate sul web) le intestazioni "header" devono essere inviate prima di ogni Output nella pagina e nella posizione in cui ho bisogno di fare il redirect, usando questo codice, mi genera un errore di 2 chilometri.!!!

b)
Codice:
<meta http-equiv="refresh" content="0;URL=pagina.php">
METODO FUNZIONANTE;

c)
Codice:
<script language="javascript">window.navigate("pagina.php");</script>
METODO FUNZIONANTE.

Attualmente uso il metodo C dopo aver usato per qualche tempo il metodo B,fanno entrambi il loro lavoro ma vorrei capire se c'è qualche altro metodo che non sembri aggirare il problema più che risolverlo.

Credo che tutti, prima o poi, abbiano la necessità di fare un Redirect ad una pagina a seguito di una codizione precisa e sarei curioso di sapere se ci sono altri metodi olte a quelli da me conosicuti.

Eventualmente potremmo sempre aprire una raccolta firme per la creazione in un banalissimo Response.Redirect("") versione PHP!!! :) :)


Grazie a tutti per l'aiuto!!!!
 
Dubito alquanto che per l'esecuzione di una query mysql ti dia un messaggio di errore per una redirect!
Quel messaggio ti viene dato solo se hai creato cookie, stampato delle stringhe, ecc. !
Ma stampare stringhe e poi fare una redirect non ha senso!

Il PHP è strutturato benissimo... fare paragoni con le ASP serve solo a far umiliare gli sviluppatori di MS!

However... dà uno sguardo a questo link: Una redirect speciale.
 
Ciao grazie per la risposta, allora come si suol dire a Napoli: "Io vengo dal morto e tu dici che è vivo!"

La mia domanda non era assolutamente offensiva per i programmatori PHP, né era un paragone con ASP, resta il fatto che una funzione di cui ho bisogno non esiste o comunque se esiste non funziona con la stessa facilità come funziona il Response.Redirect in ASP.

Precisato ciò andiamo avanti:

Il codice su cui sto lavorando è di una banalità assurda e nonostante tu "alquanto dubiti" l'errore c'è:

il codice è il seguente:
Codice:
$date = $_POST["TxtSDate"];		
$title = $_POST["TxtSTitle"];	
$description = $_POST["TxtSDescription"];
			
$strSQL = "INSERT INTO tbl_job
		 (DATEHOUR, 
		  TITLE, 
		  DESCRIPTION) 
	  VALUES ('$date',
	               '$title',
		  '$description')";
            mysql_query($strSQL);
				 
        $insert = mysql_affected_rows();
    if ($insert == 0){
      header ('Location: pagina_errore.php');		
    } else {
      header ('Location: pagina_ok.php');
    } ?>

Questo codice per quanto assurdo può essere genera il seguente Warning:
Cannot modify header information - headers already sent by.....line 41, dove line 41 è esattamente "header ('Location: pagina_errore.php');"

La pagina dove c'è questo codice, è una pagina PHP senza alcun TAG Html ci sono quattro INCLUDE a file per la connessione, per lo start delle session, per delle funzioni PHP e per delle costanti, forse può essere questo il problema???

Mi dice che ho già inviato gli Header ma che vuol dire? e dove?

Per quanto riguarda la questione stringhe e cookies, non stampo alcuna stringa e non creo alcun cookie!


Per quanto riguarda la funzione che mi hai detto di guardare, funziona e ti ringrazio ma comunque usa il metodo <meta....> che ho precedentemente scritto nel primo TOPIC in quanto per l'header (se vedi la funzione) c'è sempre il warning per cui utilizza della funzione Redirect il codice presente nell'ELSE e cioè:

Codice:
echo "<meta http-equiv=\"refresh\" content=\"$seconds;url=$url\">";


Grazie per il prezioso aiuto!!!!
 

Discussioni simili