0
<?php
 echo $_REQUEST['uname'];
 echo $_REQUEST['pass'];

$res= $mysql_query("select * from `sec` where uname='$_REQUEST['uname']' AND    `pass`='$_REQUEST['pass']'");

if(mysql_num_rows($res)>0)
{
 header('location:home.php')
}
else
{
 header('location:index.php')
}

?>

このエラーは何ですか:header information cannot modify... ユーザー名とパスワードが正しい場合でも、別のページにリダイレクトされておらず、この警告が表示されていません。なぜこのエラーが発生するのですか?

4

6 に答える 6

1

データをページにエコーした後、PHPヘッダーのリダイレクトを行うことはできません。

エコーを取り除くと、機能するはずです。また、これらのヘッダー関数の最後にセミコロンを付けます。

于 2012-12-12T04:00:17.010 に答える
1

ブラウザに出力を送信た後、ヘッダーを送信することはできません。最初の2行でそれを行います。これを回避するには、出力バッファリングを使用できます。

于 2012-12-12T04:00:25.657 に答える
1

コードの1行目と2行目から削除し、前に配置したりステートメントを記述したりechoしないでくださいechoprint_rheader('location:.....');

于 2012-12-12T04:01:41.743 に答える
1

ブラウザにデータを送信する前に、すべてのphp作業を実行する必要があります。独自のコードを使用している場合は、この方法でコードを作成する必要があります

<?php 
include "action/home.php"; //don't echo anything here
include "view/home.php"; 
?>

また

ヘッダー情報が設定された後でリダイレクトする必要がある場合は、javascript関数を使用して次のようにリダイレクトする必要があります。

if(mysql_num_rows($res)>0)
{ ?>
  <script type="text/javascript">
  window.location="home.php";
  <script>
<?
}
于 2012-12-12T04:13:01.967 に答える
1

このエラーは主に、多くの時間ヘッダーの場所を使用する場合に発生します。このエラーを回避するには、Hereisdifferent関数の代わりに別の関数を使用する必要がありheader('location:home.php') ます。

<meta http-equiv='Refresh' content='0; url=home.php'>

header('location:index.php') 置換についても同じ <meta http-equiv='Refresh' content='0; url=index.php'>

于 2012-12-12T07:20:49.387 に答える
0

header()何かがブラウザに出力され、エコーされた後は$_REQUEST['uname'];使用できません。これ$_REQUEST['pass'];が、コードが発生した理由です。

考えられる解決策は2つあります。それらを削除するechoesか、使用するかのいずれかです。ob_start()

于 2012-12-12T06:08:34.440 に答える