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 上并通过 localhost 查看时,如果我输入用户名而没有密码(反之亦然),我会看到我的错误,并且用户名/密码保持输入到表单中。但是,我将其上传到服务器,我看到的只是<?=@_POST['username'] ?>输入用户名中的字符串,同样(但隐藏)在密码框中。

甚至不确定这与代码有关,但也许有一种方法可以用不同的方式做同样的事情,这就是我觉得有必要发布它的原因。

任何理论都值得赞赏!

4

3 回答 3

1

这 -<?= @$_POST['username'] ?>主要与 javascript 中的变量一起使用,其中 var = 但其他尝试仅使用 $_POST['username'] 或类似的 php 变量。

于 2013-02-02T04:39:20.963 回答
1

也许如果你设置

short_open_tag = On 

php.ini中并重新启动您的 Apache 服务器。

来源

于 2013-02-02T03:48:54.580 回答
0

当您想在同一页面上发布数据时,请在表单提交上的 html 标记的表单标记中保留 action=""

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

并检查它显示的内容

于 2013-02-02T07:36:42.947 回答