$ _POST无法使用登录表单

时间:2015-09-12 13:53:14

标签: php html postgresql login

我花了好几个小时来完成这段代码(我是一个php新手),但我无法弄清楚它为什么不起作用。 我有2个网页:主网页和登录处理程序。 登录者应该获取我在登录表单中放置的值(放置在主页面中),然后执行操作,例如检查用户是否存在,他是否是管理员以及任何人。 事实证明,起始postgres查询出于某些原因是错误的 - 或许我应该说从表单中获取的值无法正确识别 - 即使我尝试在另一个test.php页面上使用实际值而不是$ _POST变量和它完美无缺地运作

的MainPage

<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
$host        = "host=127.0.0.1";
$port        = "port=5432";
$dbname      = "dbname=Library";
$credentials = "user=john password=doe";

 $db = pg_connect( "$host $port $dbname $credentials"  ) or die('Could not  connect');
 ?>

      <title>Welcome</title>
      <head><font size="16" color="black">Library</font></head>
            <br />
            <br />
            <br />
    <body>
            <form action="LoginHandler.php" method="POST">
            ID:<input type="string" name="UserID">
            Password:<input type="string" name="Password">
            <input type="submit" value="Login">
            </form>
            <form action="createUser.html" method="get">
            <input type="submit" value="Sign Up"><br>

    </body>

LoginHandler

<?php
$UserID=$_POST["UserID"];
$Password=$_POST["Password"];
$user=pg_query($db, "SELECT UserID, Password, Privileges
            FROM Library.Users
            WHERE UserID='$UserID' AND Password='$Password'");
$val = pg_fetch_result($user, 0, 0);
echo $val;
?>

我刚刚再次在文本页面上尝试了代码,因此我100%确定查询是否正确。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我的朋友在这里有几个问题可能会破坏你的代码 1-表格html代码被错过了。它应该是这样的:

<form action="LoginHandler.php" method="POST">
            ID:<input type="text" name="UserID">
            Password:<input type="password" name="Password">
            <input type="submit" value="Login">
            </form>
            <form action="createUser.html" method="get">
            <input type="submit" value="Sign Up"><br>
</form>

2-你应该学习使用单引号和双引号之间的区别,它们在PHP中是不一样的 所以你的查询应该是那样的

$user=pg_query($db, 'SELECT UserID, Password, Privileges
            FROM Library.Users
            WHERE UserID="$UserID" AND Password="$Password"');

3-我想告诉你这个代码可以用于练习或测试,但它不是真正的世界代码,你应该哈希密码 使用$ password = sha1($ password);至少,你也应该使用htmlspecialchars()和filter_var()来过滤$ _POST和$ _GET输入,查看php手册以获得这个函数的最佳解释。