为什么赢了';这是PHP&;SQL用户登录工作?
我正在为我的课程建立一个网站,但我无法让用户登录工作。我已经设法让帐户创建工作,我已经检查了他们正在通过查询数据库,但登录仍然无法工作。我已经测试了所有的表单,它们工作正常。我正在为我的数据库使用sqlite3 特别是,当我登录(或至少尝试登录)时,所有值似乎都已正确存储。我被重定向到设置页面,这意味着密码彼此不匹配。所以一定是出了什么问题,因为它找到了正确的用户 帐户创建PHP:为什么赢了';这是PHP&;SQL用户登录工作?,php,sql,Php,Sql,我正在为我的课程建立一个网站,但我无法让用户登录工作。我已经设法让帐户创建工作,我已经检查了他们正在通过查询数据库,但登录仍然无法工作。我已经测试了所有的表单,它们工作正常。我正在为我的数据库使用sqlite3 特别是,当我登录(或至少尝试登录)时,所有值似乎都已正确存储。我被重定向到设置页面,这意味着密码彼此不匹配。所以一定是出了什么问题,因为它找到了正确的用户 帐户创建PHP: <?php require 'database.php'; $userna
<?php
require 'database.php';
$username = $_POST['user_username'];
$password = $_POST['user_password'];
$email = $_POST['user_email'];
$salt = sha1(time());
$password = sha1($password);
$encrypted_password = ($salt."--".$password);
$db = new Database();
$db->exec("INSERT INTO users VALUES(NULL, '$username', '$encrypted_password', '$salt', '$email');");
header("Refresh: 5;url=http://cs139.dcs.warwick.ac.uk/~u1418925/cs139/index.php");
echo "<center><h1>You will be rediected in 5 seconds...</h1></center>"
?>
要比更具体一些,它不起作用。
这个问题有点太宽泛了。你已经做了什么研究?什么不起作用?有什么错误吗?你做了什么来调试这个问题?就目前而言,你好像在说“这是我的家庭作业,帮我完成它”。提问要具体一点。您是否尝试删除代码>从您的查询结束???是的,很抱歉,我现在已经说得更具体了。我不希望你通过任何方式来完成它,我已经做了很多,而且还有很多事情要做,除此之外,我只是在这方面停留了一段时间,直到星期一我才能从研究生那里得到任何帮助。这段代码中有SQL注入漏洞-在修复之前不要上线。目前,您实现的任何安全性都可能是可以绕过的。如果您的数据库库提供参数绑定,请使用它-如果不提供,请切换到提供参数绑定的库。PDO提供了一个SQLite驱动程序。
<?php
session_start();
require 'database.php';
$username = $_POST['user_name'];
$password = $_POST['user_password'];
$db = new Database();
$row = $db->querySingle("SELECT * from users WHERE(username = '$username');");
$password = sha1(password);
if(($row['salt']."--".$password) == $row['password']) {
$_SESSION['id'] = $row['id'];
header('Location:index.php');
} else {
header('Location:settings.php');
}
?>
<?php
class Database {
private $database;
function __construct() {
$this->database = $this->getConnection();
}
function __destruct() {
$this->database->close();
}
function exec($query) {
$this->database->exec($query);
}
function query($query) {
$result = $this->database->query($query);
return $result;
}
function querySingle($query) {
$result = $this->database->querySingle($query,true);
return $result;
}
function prepare($query) {
return $this->database->prepare($query);
}
function escapeString($string) {
return $this->database->escapeString($string);
}
private function getConnection() {
$conn = new SQLite3('todo.db');
return $conn;
}
}
?>