PHP可以';找不到变量


PHP can't find variable

所以我对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>&nbsp;</td>
                                <td align="right"><font color="#4d71a1">User name:</font>&nbsp;</td>
                                <td><input name="UserName" size="25" type="Text" autocomplete="OFF"></td>
                                <td>&nbsp;</td>
                            </tr>
                            <tr>
                                <td>&nbsp;</td>
                                <td align="right"><font color="#4d71a1">Password:</font>&nbsp;</td>
                                <td><input name="Password" size="25" type="Password" autocomplete="OFF"></td>
                                <td>&nbsp;</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
} ?>