所以我对ASP中的PHP相对陌生。在将大量ASP代码转换为PHP后,我遇到了一个问题,我的PHP代码似乎无法找到我设置的隐藏变量。它在ASP中运行良好,只是想知道解决这个问题的最佳方法。
表格开头:
<form name="LogIn" action="login.php" method="post">
<td bgColor=#ffffff>
<table align="center" cellSpacing="2" cellPadding="2" border="0">
<tr>
<td> </td>
<td align="right"><font color="#4d71a1">User name:</font> </td>
<td><input name="UserName" size="25" type="Text" autocomplete="OFF"></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="right"><font color="#4d71a1">Password:</font> </td>
<td><input name="Password" size="25" type="Password" autocomplete="OFF"></td>
<td> </td>
</tr>
PHP脚本:
<?
if ($_POST["BtnPress"]=="Pressed")
{
if ($_POST["Username"]=="*****" && $_POST["password"]=="*********")
{
$_SESSION['AdminID']="1";
header("Location: "."index.php");
}
else
{
print "<font color=#ff0000>Sorry you cannot access this part of the site.</font>";
}
}
?>
然后是表单的其余部分:
<tr>
<td align="center" colspan="4">
<input type="hidden" name="BtnPress" value="Pressed">
<input type="Submit" value="Log In" class="mybutton" onclick="return CheckForm();">
</td>
</tr>
</table>
</td>
</form>
PHP似乎找不到变量BtnPress,这在我翻译的许多ASP到PHP脚本中都是类似的问题。如果这是一个简单的解决方案,很抱歉,但有人能告诉我哪里出了问题吗?
您有name="Password"
和$_POST["password"]
Password
!=password
小心你的案子。
<form name="LogIn" action="login.php" method="post">
<td bgColor=#ffffff>
这是无效的HTML。<td>
元素不能是<form>
的子元素。浏览器可能会以破坏HTML的方式进行错误恢复(例如,将表单(而不是其内容)移动到表外)。请务必使用验证器。
以及那些不太可能是问题原因的东西,但很可能是其他问题的原因。
- 不使用布局表
- 请使用标签元素
- 一定要使用CSS进行表示(您可以设置标签元素的样式,而不是使用过时的
font
元素
不要使用隐藏输入来测试是否提交了表单。
用途:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// processing of $_POST
}
提交按钮的名称应该是"BtnPressed",而不是隐藏字段。我要做的是将表单操作设置为?id=submit或类似的东西,然后检查"if$_GET['id']=="submit"然后处理数据。
<form action="login.php?do=submit">
.... <input .....
</form>
<?php
if($_GET['do'] == "submit"){
//process data
} ?>