我试图让php/mysql工作,以便它将采取的用户名和密码从一个形式,并检查他们是否在mysql表。如果它们在表中,它应该让你登录并将你发送到index.php页面(我更改了user/pass/database)
登录页面上的表单:
<form action="db_connect.php" method="post">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Login" class="customButton" />
</form>
db_connect.php:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$con = new mysqli_connect("localhost","user","password","database");
$query = mysqli_query($con,"SELECT * FROM members WHERE username='".$username."' AND password='".$password."'");
if (mysqli_num_rows($query) != 0){
$_SESSION['logged_in'] = true;
header('Location: index.php');
}else{
echo "Access denied";
}
?>
3条答案
按热度按时间soat7uwm1#
这段代码应该为你工作。
登录页面:
在PHP文件中,我们首先启动一个新的会话,然后报告生成的所有错误。然后我们转义输入字符串以避免注入。然后我们检查通过$_POST发送的用户名和密码是否设置。然后用数据库检查输入值,最后将用户重定向到他的个性化index.php
db_connect.php
v1uwarro2#
我的想法:
您的查询可以是
避免“错误”。
使用
session_start()
管理会话另外,尝试在数据库工具(例如:Phpmyadmin,HeidiSQL等),看看是否有结果出来。
如果是这样的话,你可以尝试使用PDO对象来创建与数据库的连接。
当提交表单或PHP转储日志时,是否会出现“访问被拒绝”?
oogrdqng3#
第一步
打开错误报告以帮助调试此问题。
第二步
对任何和所有用户输入进行消毒。由于您使用的是
mysqli()
,因此您将使用类似mysqli_real_escape_string()
的代码。现在有一个明显的错误直接从 bat ,作为弗雷德-ii-指出;因为你正在处理会话,你需要先示例化它。
一个例子是将类似这样的东西放在登录脚本中。
现在第二个错误是你把
mysqli_connect()
当作一个类来示例化,这不是。您的登录代码应该看起来像这样:不用说,您的**
index.php
**将需要session_start()
在它的顶部,以确保您可以检查$_SESSION['logged_in']
,如: