- Home
- Categorie
- Coding e Sistemistica
- PHP
- problemi con comando "header("location:")"
-
La riga 10 dello script titan.php produce un output (echo o ?>) e per qualche ragione viene eseguita prima dell'istruzione header("Location...") e questo provoca un errore perché gli header della risposta HTTP possono essere modificati solo prima che il server inizi l'output.
Tuttavia ho letto da qualche parte che lo stesso errore può essere generato se lo script PHP non termina esattamente con ?>, in pratica dopo l'ultimo tag di chiusura dello scripting lato server, non dev'esserci neanche un carattere, neanche un "a capo".
-
Questo è il codice della pagina titan.php: penso sia tutto ok.
Ho riprovato la stessa pagina su altervista e funziona benissimo<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento senza titolo</title> </head> <body> <?PHP header("location: http://www.gazzetta.it"); ?> </body> </html>
-
Prova così
<?PHP header("location: [http://www.gazzetta.it](http://www.gazzetta.it/)"); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento senza titolo</title> </head> <body> </body> </html>
-
Non funziona lo stesso... ma non è che devo impostare qualche parametro sul server?? Come mai su altervista funziona??
-
Nessuna soluzione??
Se qualcuno mi sa dire come realizzare la stessa cosa in un altro modo va bene lo stesso... l'importante che mi faccia il redirect su un altra pagina... non è importante che sia php.
-
[php]<?php
header("location: http://www.gazzetta.it");
exit();
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>
<body></body>
</html>[/php]
-
Perfetto.... thanks a lot!!
-
-
Ciao, mi attacco qui tanto il tema è lo stesso...
Io ho una pagina web con codice html, vari div, ecc. se metto un header all'interno della pagina non funziona, se lo metto all'inizio, prima di tutto, si. Però in questo modo la scritta che mi produce l'header mi viene in cima alla pagina, e non all'interno dove dovrebbe stare... come posso fare?
Ecco il codice:
<?php
include_once("include/config.php");
include_once("include/auth.lib.php");list($status, $user) = auth_get_status();
if($status == AUTH_NOT_LOGGED){
$uname = strtolower(trim(isset($_POST['uname'])));
$passw = strtolower(trim(isset($_POST['passw'])));
if($uname == "" or $passw == ""){
$status = AUTH_INVALID_PARAMS;
}else{
list($status, $user) = auth_login($uname, $passw);
if(!is_null($user)){
list($status, $uid) = auth_register_session($user);
}
}
}switch($status){
case AUTH_LOGGED:
header('LOCATION: http://127.0.0.1:81/Museo2/index.php');
echo '<div align="center">Sei gia connesso ... attendi il reindirizzamento</div>';
break;
case AUTH_INVALID_PARAMS:
header('LOCATION: http://127.0.0.1:81/Museo2/index.php');
echo '<div align="center">Hai inserito dati non corretti ... attendi il reindirizzamento</div>';
break;
.............
.............
}
?><html>
<head>
<title>Index</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="stile.css"></head>
<body>
<div id="container">
<div id="content">
...........
[la scritta dell'header dovrebbe stare qua]
............
</div>
</div>
</body>
</html>
-
metti gli
exit; dopo gli header
-
ciao mi allaccio anch'io alla discussione, mica potreste darmi una mano?io vorrei che se un utente non risp alle domande 1o 2 o 3 lo script lo manda in una pag errore.php. grazie:bho: mi va benissimo anche una soluzione alternativa!
inserisco i file:
inserisci.php<html>
<body>
<?php
include("config.inc.php");
<form method="post" action="save.php">
<right>
SEZIONE A: INFORMAZIONI GENERALI<br><br>
1-ETA':<br><br>
<input type="radio" name="eta" value="da 18 a 24 anni">da 18 a 24 anni
<input type="radio" name="eta" value="da 25 a 34 anni">da 25 a 34 anni
<input type="radio" name="eta" value="da 35 a 44 anni">da 35 a 44 anni
<input type="radio" name="eta" value="da 45 a 55 anni">da 45 a 55 anni
<input type="radio" name="eta" value="oltre 55 anni">oltre 55 anni<br><br>
2-SESSO :<br><br>
<input type="radio" name="sesso" value="M">M
<input type="radio" name="sesso" value="F">F<br><br>
3-QUALIFICA<br><br>
<input type="radio" name="personale" value="tecnico-amministrativo">tecnico-amministrativo
<input type="radio" name="personale" value="docente">docente <br> <br>
SEZIONE B: ORARIO DI LAVORO <br> <br>
1-COME E' ARTICOLATO IL SUO ORARIO DI LAVORO?<br><br>
<input type="radio" name="orario" value="su 5 gg per 7 ore e 12 min">su 5 gg per 7 ore e 12 min
<input type="radio" name="orario" value="su 5 gg: 6 ore per 3 gg e 9 ore per 2 gg">su 5 gg: 6 ore per 3 gg e 9 ore per 2 gg
<input type="radio" name="orario" value="su 4 giorni">su 4 giorni<br>
altro(specificare): <input type="text" name="orario_altro" size="40"><br><br>
<br><br><br><input type="submit" value="invia i dati">
<input type="reset" value="cancella">
</form>
<hr>
?>
</body>
</html>salva.php
<?php
$eta=$_REQUEST['eta'];
$sesso=$_REQUEST['sesso'];
$personale=$_REQUEST['personale'];
$orario=$_REQUEST['orario'];
$orario_altro=$_REQUEST['orario_altro'];
if ($eta == "" OR $sesso == "" OR $personale == ""){
header("Location:http//localhost/prova/errore.php");
exit;}
include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file config.inc.php<br><br>");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php<br><br>");
$query = "INSERT INTO questionario_piurisp (orario,
orario_altro) VALUES ('$orario', '$orario_altro')";
if (mysql_query($query, $db))
echo "LE RISPOSTE SONO STATE INSERITE CORRETTAMENTE PER LA DOMANDA 4<br><br>";
else
echo "ERRORE DURANTE L'INSERIMENTO NEL DATABASE DELLA DOMANDA 4<br><br>";
$query = "INSERT INTO questionario_unarisp (eta, sesso, personale) VALUES ('$eta', '$sesso', '$personale')";
if (mysql_query($query, $db))
echo "LE RISPOSTE SONO STATE INSERITE CORRETTAMENTE PER LE DOMANDE 1-2-3<br><br>";
else
echo "ERRORE DURANTE L'INSERIMENTO NEL DATABASE DELLE DOMENDE 1-2-3<br><br>";
mysql_close($db);
?>
-
Occhio anche alla L di location che va maiuscola. Da qualche parte ho letto che la L maiuscola è più "compatibile" di quella minuscola.