所以我对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脚本的过程中遇到了类似的问题。对不起,如果这是一个简单的解决方案,但任何人都可以告诉我哪里出错了?
答案 0 :(得分:4)
您有name="Password"
和$_POST["password"]
Password
!= password
注意你的情况。
<form name="LogIn" action="login.php" method="post">
<td bgColor=#ffffff>
这是无效的HTML。 <td>
元素不能是<form>
的子元素。浏览器可能会以破坏HTML的方式进行错误恢复(例如,通过移动表单,而不是移动表格之外的内容)。做use a validator。
不太可能是导致问题的原因,但很可能是其他问题的原因。
font
元素答案 1 :(得分:1)
请勿使用隐藏输入来测试是否提交了表单。
使用:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// processing of $_POST
}
答案 2 :(得分:0)
提交按钮的名称应为“BtnPressed”而不是隐藏字段。 我要做的是将表单操作设置为?id = submit或类似的东西,然后检查“if $ _GET ['id'] ==”submit“然后处理数据。
<form action="login.php?do=submit">
.... <input .....
</form>
<?php
if($_GET['do'] == "submit"){
//process data
} ?>