我花了好几个小时来完成这段代码(我是一个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%确定查询是否正确。 有什么建议吗?
答案 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手册以获得这个函数的最佳解释。