- Home
- Categorie
- Coding e Sistemistica
- Coding
- Warning: Cannot modify header information - headers already sent by
-
Warning: Cannot modify header information - headers already sent by
Ragazzi sto sclerando chi può aiutarmi per favore?
Ho una pagina sola admin.php
<?php
include("config.inc.php");
$file = $_SERVER['PHP_SELF'];echo"
<center><table border=1 bgcolor=$sfondo1 cellspacing=0 cellpadding=0 bordercolor=$bordo1 width=600>
<td>
<table border=1 cellspacing=0 cellpadding=2 bgcolor=$sfondo2 bordercolor=$bordo2 width=600>
<td width=550><font face=verdana size=2>Pannello amministrazione</td></table></td></table>";function login() {
include("config.inc.php");
global $file;echo"
<p><table border=1 bgcolor=$sfondo1 cellspacing=0 cellpadding=2 bordercolor=$bordo1 width=150>
<td><form action=$file method=post>
<table border=0 cellspacing=0 cellpadding=0 bgcolor=$sfondo2 bordercolor=$bordo2 width=150>
<td><font size=1 face=verdana>User:</td>
<td><input type=text name=user class=input size=15></td>
<tr>
<td><font size=1 face=verdana>Pasword:<br> </td>
<td><input type=password name=pwd class=input size=15><br><input type=submit name=submit1 class=bottone value=Login></td>
</table></td></table></form>";}
if(isset($_POST['submit1'])) { $db = mysql_connect($db_host, $db_user, $db_password) or die('Errore connessione database'); mysql_select_db($db_name, $db) or die('Errore selezione database'); if(($_POST['user']) && ($_POST['pwd'])) { $query = "SELECT admin_ID FROM admin_newsletter WHERE user = '$_POST[user]' AND password = '$_POST[pwd]'"; $risultato = mysql_query($query); $num = mysql_num_rows($risultato); if($num>0) { Header("Location: $file?funzione=amministrazione"); } else { echo"<script>alert('User o password sbagliati.');</script>";
}
}
}Poi ho altre funzioni tra cui amministrazione... il problema che quando metto lo user e la pass mi esce
Warning: Cannot modify header information - headers already sent by (output started at E:\inetpub\vhosts\torneicalcetto.it\httpdocs\admin.php:11) in E:\inetpub\vhosts\nomesito.it\httpdocs\admin.php on line 46
Chi mi aiuta per favoreeeeee
-
Ciao Symon83,
non puoi inviare un header quando già esistono degli output
Questo deve stare prima di ogni cosa, <DOCTYPE.....> compreso:
[php]header("Location: $file?funzione=amministrazione");[/php]quindi lo devi spostare con tutto lo script interessato, oppure lo sostituisci con un refresh
[php]header("Refresh: 1; $file?funzione=amministrazione");[/php]
-
L'errore si trova prima della linea 46.
Alla linea 12 di admin.php forse c'è una funzione header() oppure funzioni simili, come session_start() che modificano l'header information.
Altra cosa, quando usi un header("Location: ...") metti anche exit() è più sicuro.Ciao!
-
Ciao! grazie per aver risposto. Ho provato a fare come mi hai scritto ma l'errore non cambia!
-
Deve essere per forza quello l'errore, individuato dal nostro moderatore...
Fai i controlli sull'header prima di ogni tipo di stampa a schermo, anche la minima e più insignificante.
Controlla anche che il file "config.inc.php" non contenga alcun tipo di "echo".
-
e ricordiamo anche che hai fatto un altro post identico a questo, e già hai ricevuto le stesse risposte...
-
Buongiorno momino.
Le è stato ricordato svariate volte di rispettare la regola che prevede di scrivere in italiano corretto, con maiuscole e punti e senza usare lo stile SMS.
La prego di attenersi scrupolosamente a queste indicazioni.
-
Oh mio Dio, le iniziali delle righe!!!
Devo davvero essere un essere terribile per non rispettare questa regola fondamentale, mancando così di rispetto a tutti gli utenti del Forum!!
Il mio italiano è corretto, e lo stile SMS è praticamente assente.
Ho visto le correzioni per le maiuscole sull'iniziale delle righe e mi scuso, ma non mi scuso per l'italiano nè per lo stile sms, visto che non ne sono colpevole.
Non voglio entrare in polemica, ma mi sento perseguitato!
-
Ragazzi il mio codice è proprio quello che vi ho copiato comincia così come l'ho copiato a voi, ho provato a sostituire con
header("Refresh: 1; $file?funzione=amministrazione");
ma ottengo lo stesso errore.probabilmente sbaglio qualcosa ma non capisco dove sta l'errore.:(
-
Scusa, ma perchè fare
[PHP]include ("config.inc.php");[/PHP]
anche nel corpo della funzione "login()"?
Probabilmente è lì che ti manda un header fuori posto.Toglilo dalla funzione login, una volta fatto l'include, il codice di quella pagina php viene incorporato, quindi utilizzabile anche dalla funzione "login()".
Prova un pò.
-
Includo config.php perchè devo collegarmi al database in quanto la pass e il nome utente li recupera da lì, se lo tolgo poi non mi legge pass e user. Dici che mi conviene dichiarare due variabili $pass $user e cancellarle la tab del db?
-
Il fatto è che quando usi "include()" o "include_once()" è come se PHP facesse un "copia&incolla" del codice del file incluso dentro la pagina che lo include, quindi comunque è come se avessi scritto lì tutto il codice della pagina inclusa.
Ti faccio un esempioSe pagina1.php è
[PHP]<?php
echo "prima dell'inclusione";
include("pagina2.php");
echo "dopo l'inclusione";
?>[/PHP]E pagina2.php è
[PHP]<?php
$str = "sono la pagina2.php";
echo $str;
?>[/PHP]Il risultato è equivalente a scrivere
[PHP]<?php
echo "prima dell'inclusione";
$str = "sono la pagina2.php";
echo $str;
echo "dopo l'inclusione";
?>[/PHP]Quindi tutto il codice della pagina inclusa viene "incollato" nella pagina includente.
-
Grazie per la comprensione momino.
E non si senta perseguitato; non è nelle nostre intenzioni.
Stiamo cercando di mantenere buono il livello di leggibilità del forum e certo non solo con lei.
Ci perdoni se siamo sembrati eccessivi.
-
Ok ho eliminato il problema del warning, adesso però quando carica la pagina mi da quest'altro errore:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
Sapete dirmi cos'è per favore? Grazie.
-
Prova così:
[PHP] if($num>0) {
echo" <script type="text/javascript">
<!--
function doRedirect() {
location.href = "$file?funzione=amministrazione";
}
window.setTimeout("doRedirect()", 0);
//-->
</script>";} else { echo"<script>alert('User o password sbagliati.');</script>";
}
[/PHP]
-
Buona soluzione, aggira il problema del warning di php, ma non capiamo ancora perchè sia generato quell'avviso...