0

所以我从 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 脚本中,它是一个类似的问题。抱歉,如果这是一个简单的解决方案,但谁能告诉我哪里出错了?

4

3 回答 3

4

你有name="Password"并且$_POST["password"]

Password!=password

看你的案子。


<form name="LogIn" action="login.php" method="post">
                    <td bgColor=#ffffff>

那是无效的 HTML。<td>元素不能是 a 的子元素<form>。浏览器可能会以破坏 HTML 的方式进行错误恢复(例如,通过将表单而不是其内容移动到表格之外)。一定要使用验证器


还有一些不太可能是问题的原因,但可能是其他问题的原因。

  • 不要使用布局表
  • 一定要使用标签元素
  • 使用 CSS 进行演示(您可以设置标签元素的样式,而不是使用过时的font元素
于 2012-09-03T08:21:15.427 回答
1

不要使用隐藏输入来测试是否提交了表单。

采用:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  // processing of $_POST
}
于 2012-09-03T08:24:17.613 回答
0

提交按钮的名称应该是“BtnPressed”而不是隐藏字段。我要做的是将表单操作设置为 ?id=submit 或类似的东西,然后检查 "if $_GET['id'] == "submit" 然后处理数据。

<form action="login.php?do=submit">

....  <input ..... 

</form>
<?php
if($_GET['do'] == "submit"){

//process data

} ?>
于 2012-09-03T08:22:39.990 回答