0

少し探した後、エラーがスローされたときにデータを保存したいPHPフォームを作成しました。これの奇妙な点は、ローカルのWAMPインストールでテストすると機能することですが、オンラインでホストされているサーバーに移動するとすぐには機能しません。

私のフォームはこれです:

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/formdata"><div class="formlabel">Username:</div>
<input type="text" id="username" name="username" value="<?= @$_POST['username'] ?>"/>
<small class="errorText"><?php echo $throwError["username"]; ?></small>
<br><div class="formlabel">Password:</div>
<input type="password" id="password" name="password" value="<?= @$_POST['password'] ?>"/>
<small class="errorText"><?php echo $throwError["password"]; ?></small>
<br>
<small class="errorText"><?php echo $throwError["validate"]; ?></small>
<input type="submit" name="submit" value="Login"/>
</form>

そして現在それが実行されるとき、これはアクションです:

$throwError = array(
    "username" => "",
    "password" => "",
    "validate" => ""
);

if(isset($_POST['submit'])) {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    setCookie('memberID', $username);

    if (!empty($username) && !empty($password)) {
        $result = mysql_query("SELECT * FROM member WHERE member_id='$username' AND password='$password'", $linkid);
        if(!$result || mysql_num_rows($result) <= 0) {
            $throwError["validate"] = "Please enter a valid username and password";
            return false;
        }
        return true;
    }

    if (empty($username)){
        $throwError["username"] = "Please enter your username";
    }

    if (empty($password)){
        $throwError["password"] = "Please enter your password";
    }
}

これがWampでホストされ、ローカルホスト経由で表示されている場合、ユーザー名を入力してパスワードを入力しないと(またはその逆)、エラーが表示され、ユーザー名/パスワードはフォームに入力されたままになります。ただし、これをサーバーにアップロードしたところ<?=@_POST['username'] ?>、入力されたユーザー名に文字列として表示され、同様に(ただし非表示になっている)パスワードボックスに表示されます。

これがコードに関連しているのかどうかさえわかりませんが、おそらく同じことを別の方法で行う方法があるので、投稿する必要があると感じました。

どんな理論でも大歓迎です!

4

3 に答える 3

1

多分あなたが設定した場合

short_open_tag = On 

php.iniで、Apacheサーバーを再起動します。

ソース

于 2013-02-02T03:48:54.580 に答える
1

これ<?= @$_POST['username'] ?>は主に、var =であるjavascriptの変数で使用されますが、それ以外の場合は$_POST['username']または同様のphp変数を試してください。

于 2013-02-02T04:39:20.963 に答える
0

同じページにデータを投稿したい場合は、フォーム送信時にhtmlタグのフォームタグにaction=""を残してください。

foreach($_post as $key=?$value)
{
print_r($key);
}

そしてそれが何を示しているかを確認してください

于 2013-02-02T07:36:42.947 に答える