1

私は MAMP を使用していますが、何らかの理由で PHP のヘッダーを使用してリダイレクトされません。何か問題がある場合は、次のコードを見てください。

同様の投稿を読んだところ、ヘッダータグの前の一種の空白が原因であることがわかりましたが、私の場合はそうではありません.

アドバイスをお願いします...ありがとう

<?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.";
}
?>
4

3 に答える 3

4

MAMP で同じ問題が発生し、php.ini 構成ファイルで output_buffering が無効になっていることが判明しました。私がしなければならなかったのは、それを再びオンにすることだけでした。

php.ini で次の行を見つけます。

output_buffering = Off

次のように変更します。

output_buffering = 4096

その後、MAMPを再起動します

詳細については、この投稿を参照してください: http://hibbard.eu/php-headerlocation-not-working-in-mamp/

于 2013-05-22T08:59:05.057 に答える
2
header('Location: http://example.com/Account/index.php');
exit;

はこれを行う 1 つの方法ですが、出力バッファリングを使用してこの問題を回避できます。ブラウザへのすべての出力のオーバーヘッドは、送信するまでサーバーでバッファリングされます。ob_start()これを行うには、スクリプトでandを呼び出すob_end_flush()か、php.ini またはサーバー構成ファイルで output_buffering 構成ディレクティブをオンに設定します。

解決策を編集して追加: ------>

出力バッファリングを次のように使用できます

    <?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();
    ?>

問題は、出力の送信を開始した後にヘッダーを送信できないことです。これを解決するために、出力をバッファリングします。関数 ob_start は、出力バッファリングをオンにします。出力バッファリングがアクティブになっている間は、スクリプトから (ヘッダー以外の) 出力は送信されず、出力は内部バッファーに格納されます。したがって、エコー出力はバッファリングされます。次に、まだ出力を吐き出していないので、問題なくヘッダーを送信します。最後に、ob_end_flush を呼び出して内部バッファの内容をフラッシュし、出力バッファリングを停止します。

于 2012-08-20T07:02:16.953 に答える
0

次のようになります。

header('Location: http://example.com/Account/index.php');
exit;
于 2012-08-20T06:45:18.117 に答える