Intestazione PHP non funzionante in MAMP anche dopo aver rimosso lo spazio bianco

Sto usando MAMP e per qualche motivo non vengo reindirizzato usando l'header in php, qualcuno può dare un'occhiata al seguente codice se c'è qualcosa di sbagliato in esso ???

Ho letto post simili e ho scoperto che è causato da una sorta di spazio bianco prima del tag dell'intestazione, ma nel mio caso non lo è.

Si prega di dare i vostri consigli … grazie

<?php $host="localhost"; // Host name $username="root"; // Mysql username $password="root"; // Mysql password $db_name="DBase"; // Database name $tbl_name="customers"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // username and password sent from the form $myusername=$_POST['myusername']; $mypassword=$_POST['mypassword']; $myusername = stripslashes($myusername); $mypassword = md5($mypassword); $myusername = mysql_real_escape_string($myusername); $mypassword = mysql_real_escape_string($mypassword); $sql="SELECT * FROM $tbl_name WHERE Username='$myusername' and Password='$mypassword'"; $result=mysql_query($sql); $count=mysql_num_rows($result); if($count==1){ session_register("myusername"); session_register("mypassword"); header("location:/Account/index.php"); } else { echo "Wrong Username or Password."; } ?> 

 header('Location: http://example.com/Account/index.php'); exit; 

è un modo per farlo, ma è ansible utilizzare il buffering dell'output per ovviare a questo problema, con l'overhead di tutto il tuo output sul browser che viene memorizzato nel server fino a quando non lo si invia. Puoi farlo chiamando ob_start() e ob_end_flush() nel tuo script, oppure impostando la direttiva di output output_buffering nei tuoi file di configuration php.ini o del server.

MODIFICA E APPEND SOLUZIONE: ——>

È ansible utilizzare Output Buffering come

  <?php ob_start(); $host="localhost"; // Host name $username="root"; // Mysql username $password="root"; // Mysql password $db_name="DBase"; // Database name $tbl_name="customers"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // username and password sent from the form $myusername=$_POST['myusername']; $mypassword=$_POST['mypassword']; $myusername = stripslashes($myusername); $mypassword = md5($mypassword); $myusername = mysql_real_escape_string($myusername); $mypassword = mysql_real_escape_string($mypassword); $sql="SELECT * FROM $tbl_name WHERE Username='$myusername' and Password='$mypassword'"; $result=mysql_query($sql); $count=mysql_num_rows($result); if($count==1){ session_register("myusername"); session_register("mypassword"); header("location:/Account/index.php"); } else { echo "Wrong Username or Password."; } ob_end_flush(); ?> 

Il problema è che non possiamo submit l'intestazione dopo aver iniziato a submit l'output. Per risolvere questo bufferizziamo l'output. La function ob_start triggers il buffering dell'output. Mentre il buffering dell'output è attivo, nessun output viene inviato dallo script (diverso dalle intestazioni), invece l'output è memorizzato in un buffer interno. Quindi l'output dell'eco verrà memorizzato nel buffer. Quindi inviamo l'header senza alcun problema visto che non abbiamo ancora sputato alcun output. Infine chiamiamo ob_end_flush per svuotare il contenuto del buffer interno e arrestare il buffering dell'output.

Ho avuto lo stesso problema in MAMP e si è scoperto che output_buffering era disabilitato nel mio file di configuration php.ini. Tutto quello che wherevo fare è riaccenderlo.

in php.ini trova questa row:

 output_buffering = Off 

e cambiarlo in:

 output_buffering = 4096 

Quindi riavviare MAMP

Si prega di consultare questo post per maggiori dettagli: http://hibbard.eu/php-headerlocation-not-working-in-mamp/

Dovrebbe essere qualcosa del genere:

 header('Location: http://example.com/Account/index.php'); exit;