0

PHP は私の趣味ではありませんが、単純なログイン エリアをセットアップする必要があります。動作しているように見えるが、リダイレクトしないことがわかったコードを次に示します。

リダイレクトをエコーに変更すると機能します。場所を「含める」に変更すると、代わりに機能します。「場所」コードで何が間違っていますか?

これを交互にコーディングすることについての提案を受け付けています。ユーザーがパスワードを入力すると、サイトの追加セクションが表示される単一の Web ページがあります。したがって、そのサイトにこのコードに送信するフォームがあり、新しいセクションが表示されてリダイレクトされるはずです。

これが私のコードです--

<?php

// error reporting
ini_set('display_errors',1); 
 error_reporting(E_ALL);

$host="localhost"; // Host name
$username="foo"; // Mysql username
$password="foo"; // Mysql password
$db_name="foo"; // Database name
$tbl_name="members"; // 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 form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($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);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
header("Location: http://www.google.com/"); 

// Register $myusername, $mypassword 
// success
//session_register("myusername");
//session_register("mypassword");
}
else {
echo "Wrong Username or Password";
}

?>
4

3 に答える 3

1

session_register廃止されました。したがって、出力はすでに送信されており、エラー報告がオンになっている場合に表示される可能性があります。前に何も出力できませんheader

于 2012-11-08T18:14:41.640 に答える
1

ヘッダーは既に送信されていると思います。これにより、使用しようとしているヘッダーが無効になります (通常、PHP はこれが問題であると通知します)。

ヘッダーが自動的に送信される原因は、php ブロックの外側にある通常の出力です (フォーム html がこのブロックの上に存在する場合など)。

于 2012-11-08T18:16:18.013 に答える
0

問題は私のコード内のスペースのようであることが判明しました。すべての間隔を削除すると、問題は解消されました。ちょっと奇妙ですが、それが起こったことです。助けてくれてありがとう!

于 2012-11-09T17:02:36.360 に答える