Ti suggerisco di leggere questo articolo:
Warning: Cannot modify header information - headers already sent ...
Ti suggerisco di leggere questo articolo:
Warning: Cannot modify header information - headers already sent ...
quindi non dovrei mettere nessun output nel mio codice php se sono presenti cookie o header? Com'è possibile?
Mi dispiace inserire il codice php e farti fare un'immensa fatica ma credo di non riuscire a capire da solo come cambiarlo anche se me lo spiegassi di nuovo.
Codice PHP:<?php
if ($_COOKIE["logGDR"] && $ex !=1){
$username = $_COOKIE["logGDR"];
$connession = true;
}
if(isset($_GET['ex'])) $ex = $_GET['ex'];
else $ex = 0;
if($ex == 1) { setcookie("logGDR","",time()-100); $ex = 0; }
?>
//qui manca la parte di html che ho tagliato
<?php
if($connession == true){
echo("[b]Sei connesso $username !!![/b]");
echo("
[url='login.php?ex=1']logout[/url]");
}
else {
?>
//se sei connesso ti dice "sei connesso" altrimenti di visualizza il form per connetterti
//che ho tagliato e dopo il form c'è dinuovo la parte di php
<?php
include("mysql.php");
include("funzioni.php");
if(isset($_POST['username'])) $username = $_POST['username'];
if(isset($_POST['passw'])) $password = $_POST['passw'];
if(isset($_POST['username'])&&isset($_POST['passw'])){
$query="SELECT * FROM `utente` WHERE `username` = '$username' AND `password` = '$password'";
$result = mysql_query($query,$db);
if (!$result) echo "Fallimento nell'esecuzione della query ($sql) dal DB: " . mysql_error();
$autorizzato = mysql_num_rows($result);
if($autorizzato==1){
while ($row = mysql_fetch_array($result)){
if($row["conferma"]==1){
ob_start();
$connession = true;
echo("Login avvenuto correttamente.");
if($_POST['memory']=="ricorda") setcookie ("logGDR",$username,time()+3600);
else setcookie ("logGDR",$username); $corrente = $_SERVER['PHP_SELF'];
header("location: $corrente");
ob_end_flush();
}
else echo "L'iscrizione non è stata ancora confermata!!!";
}
}
elseif (($username != null)&&($password != null)) echo "Username e\o Password errati!!!";
if($username == null) echo "Non hai inserito l'username
";
if($password == null) echo "Non hai inserito la password
";
}
?>
// questa parentesi graffa qua sotto chiude quella aperta nel else per il form
<?php
}
?>
Rileggi di nuovo l'articolo indicato con più attenzione questa volta.Originariamente inviato da Draxent
quindi non dovrei mettere nessun output nel mio codice php se sono presenti cookie o header? Com'è possibile?
Quindi mi basta scrivere ob_start(); prima dell'output, ma è quello che ho fatto se vedi il codice che ti ho postato.Gli header sono elementi necessari al corretto funzionamento di ogni applicazione web. In PHP vi sono varie funzioni che permettono di manipolare gli header:
header() session_start() setcookie() setrawcookie()
In condizioni normali, se una di queste funzioni viene richiamata dopo che sono stati inviati dei dati al buffer d’uscita (es. tramite echo()/print() oppure con del codice HTML all’esterno dei tag PHP) verrà sollevato un Warning: Cannot modify header information - headers already sent ...
Il motivo di questo warning è che PHP non può inviare degli header dopo che è iniziato l’invio dei dati. [...]
Esistono principalmente due modi per evitare il sollevamento di questo warning:
richiamare le funzioni che manipolano gli header prima dell’invio dei dati, oppure spostare l’invio dei dati al buffer d’uscita dopo le funzioni che manipolano gli header;
abilitare l’output buffering.
Quello che hai fatto è mettere ob_start() PRIMA della chiamata a setcookie()/header() ...Originariamente inviato da Draxent
Quindi mi basta scrivere ob_start(); prima dell'output, ma è quello che ho fatto se vedi il codice che ti ho postato.
//qui manca la parte di html che ho tagliato
...
//se sei connesso ti dice "sei connesso" altrimenti di visualizza il form per connetterti
//che ho tagliato e dopo il form c'è dinuovo la parte di php
Scusami se sono così tonto ma non ho capito cosa vuoi comunicarmi potresti essere più chiaro anzi molto ma molto più chiaro?
Ti consiglio la lettura di questo articolo:
warning: cannot modify header information. headers already sent by
Ti suggerisco di effettuare questa ricerca su google
http://www.google.it/search?hl=it&cl...nG=Cerca&meta=
e cliccare il primo link della lista
Ciao