PHP无法找到变量

时间:2012-09-03 08:18:51

标签: php

所以我对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脚本的过程中遇到了类似的问题。对不起,如果这是一个简单的解决方案,但任何人都可以告诉我哪里出错了?

3 个答案:

答案 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


不太可能是导致问题的原因,但很可能是其他问题的原因。

  • 请勿使用layout tables
  • 请使用the label element
  • 使用CSS进行演示(您可以设置标签元素的样式,而不是使用过时的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

} ?>