在寻找了一下之后,我创建了一个 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'] ?>
输入用户名中的字符串,同样(但隐藏)在密码框中。
甚至不确定这与代码有关,但也许有一种方法可以用不同的方式做同样的事情,这就是我觉得有必要发布它的原因。
任何理论都值得赞赏!