【问题标题】:Cannot get username from form (using "post)无法从表单中获取用户名(使用“发布”)
【发布时间】:2014-10-19 14:06:18
【问题描述】:

首先,我为我的问题的幼稚性质道歉。我试图在互联网上搜索解决方案,到目前为止运气不佳。因此,我求助于 StackOverflow 的优秀人员,因为这通常可以很快解决问题。

我正在尝试为网站制作一个非常简单的登录功能。它由一个 HTML 表单和一个 php 登录脚本组成。问题是用户名(和密码)似乎没有从表单传递到登录脚本。从表单开始,它看起来像这样:

<form name="loginForm" method="post" action="loginScript.php">
    <table style="position: absolute; top:55%; left:50%; transform: translate(-50%, -50%)">
        <tr>
            <td>Brugernavn:</td><td><input name="edUsername" type="text" id="username" autofocus></td>
        </tr>
        <tr>
            <td>Adgangskode:</td><td><input name="edPassword" type="password" id="password"><br></td>
        </tr>
        <tr>
            <td style ="font-size: 10px;">Glemt din adgangskode?</td>
            <td style="text-align: right;"><input name="Submit" type="submit" value="Log ind"></td>
        </tr>
    </table>
</form>

所以我在登录脚本中需要的信息是用户名和密码数据。我尝试使用 filter_input() 获取这些,因为我读到这比 $_POST[] 更安全。在登录脚本中是这样的:

// Get username and password from post form
$ed_user = filter_input(INPUT_POST, 'username');
$ed_pass = filter_input(INPUT_POST, 'password');
echo $ed_user;

“echo”部分只是一个临时行,用于检查是否确实检索到了用户名。到目前为止,情况并非如此。所以我的问题是,我到底做错了什么?

【问题讨论】:

  • 尝试 var_dump/print_r 查看 $_POST 数组包含的内容。 (edUsername 和 edPassword)
  • 尝试改用edUsernameedPassword

标签: php html forms post


【解决方案1】:

改写为

$ed_user = filter_input(INPUT_POST, 'edUsername');
$ed_pass = filter_input(INPUT_POST, 'edPassword');

使用字段名称而不是 id。

【讨论】:

  • 我也试过了,结果相同(似乎没有通过)。你能告诉我表单域的“id”和“name”的区别吗?
  • @Noceo 您使用错误的变量来访问 POST 数据。
  • id 唯一标识文档中的 html 元素。并且可以作为css和jquery的参考。名称主要在表单中用于引用它们以进行发布和获取操作。您甚至可以分配像“name[]”这样的名称,以便能够将来自不同字段的值作为数组发送。
  • 更新,更改变量实际上可能有帮助,我认为我的文件更新有延迟。不过我还是想知道区别:-)。
  • 你打败了我。它现在正在运行,感谢您(所有人)的帮助。
【解决方案2】:

你的名字写错了,检查下面。

$ed_user = filter_input(INPUT_POST, 'edUsername');
$ed_pass = filter_input(INPUT_POST, 'edPassword');

【讨论】:

  • uKolka 打败了我。
【解决方案3】:

您的错误是您使用输入的id 属性而不是name

// Get username and password from post form
$ed_user = filter_input(INPUT_POST, 'edUsername');
$ed_pass = filter_input(INPUT_POST, 'edPassword');
echo $ed_user;

或者您可以交换属性,以便 PHP 代码保持原样。

至于idname 属性之间的区别,请查看another question

【讨论】:

  • 我本来想说 $_POST 但后来我检查了PHP.NET 上的 filter_input 手册,并且 INPUT_POST 是正确的
猜你喜欢
  • 2014-01-15
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 2012-06-20
  • 2015-06-29
  • 1970-01-01
  • 2015-04-13
  • 2016-12-24
相关资源
最近更新 更多