1

ログインフォームを作成しましたが、他にも多くの問題がありましたが、送信前にPHP コードが実行されていることがわかりました。問題はどのように解決できますか? PHP は onclick イベントをサポートしていないので (とにかく最悪です!)、私が知っている解決策はありません!

コード:

//Get the form with POST
$user = mysql_real_escape_string($_POST['user']);
$password = mysql_real_escape_string($_POST['pass']);



$usernames=mysql_query("SELECT * FROM user_info WHERE Username='" . $_POST['user'] . "' AND Password='" . $_POST['pass'] . "'");
if(!$usernames){echo mysql_error();}

$count=mysql_num_rows($usernames);
if(!$count){echo mysql_error();}

//If $count is equal to one, register the user and redirect him to his page, or else   echo him that his info is wrong
if($count === 1) {
$_SESSION['code'] = "titan";
$_SESSION['ande'] = $user;
$_SESSION['password'] = $password;
header("location: home.php");}
else {
echo "<p style='color:red;text-align:center;'>Wrong username or password!</p>";}
4

3 に答える 3

5

フォーム送信後に実行されるはずのコードを、フォームが送信されたかどうかを確認する IF ステートメントでラップします。

if ('POST' === $_SERVER['REQUEST_METHOD'])
{
    // your code goes here
}
于 2013-09-23T17:53:12.413 に答える
3

フォームが送信されたかどうかを確認する

if(isset($_POST['user'])) {

   //Your php code goes here

}

あなたのコメントに基づいて、この回答を拡張しました

質問で送信したすべてのコードをこの状態に配置するだけです

if(isset($_POST['user']))
{

    //Get the form with POST
    $user = mysql_real_escape_string($_POST['user']);
    $password = mysql_real_escape_string($_POST['pass']);



    $usernames=mysql_query("SELECT * FROM user_info WHERE Username='" . $_POST['user'] . "' AND Password='" . $_POST['pass'] . "'");
    if(!$usernames){echo mysql_error();}

    $count=mysql_num_rows($usernames);
    if(!$count){echo mysql_error();}

    //If $count is equal to one, register the user and redirect him to his page, or else   echo him that his info is wrong
    if($count === 1) {
    $_SESSION['code'] = "titan";
    $_SESSION['ande'] = $user;
    $_SESSION['password'] = $password;
    header("location: home.php");}
    else {
    echo "<p style='color:red;text-align:center;'>Wrong username or password!</p>";}

}
于 2013-09-23T17:54:05.847 に答える
0

私があなたに言わなかったのは、PHPコードがフォームと残りのHTMLと同じファイルにあるということでした.AJAXでコードを作り直そうとしました(=(は機能しませんでしたが、それでも役に立ちました! ) そのために、PHP コードを別のファイル ( Login_engine.php) 内に移動しました! 確かに、まだ小さな問題があります: 今、赤いテキストが内部に表示されていLogin_engine.phpます ... 最悪です!

于 2013-09-25T15:55:56.273 に答える