您好,我的数据库中有两个表格,一个用于课程,一个用于用户,每个表格都有一个ID列。
我想创建它们之间的关系,一个用户订阅一门课程。我试图将结果存储在名为subscription的第三个表中,该表有一个用于用户ID的课程ID和列的列。
用户在通过与新会话连接的登录后注册。用户点击后订阅链接,是
<a href='subscribe.php?id=".$row['id']."'>subscribe!</a>
他们被带到后端PHP的页面,它是插入到数据库中的信息:
<?php
session_start();
?>
$userid = $_SESSION['userID'];
$cursoid = $_GET['id'];
mysql_connect("localhost", "username", "password") or die(mysql_error()) ;
mysql_select_db("test") or die(mysql_error()) ;
mysql_query("INSERT INTO `subscriptions`
(curso_id, user_id)
VALUES ('$cursoid', '$userid ')")
or die(mysql_error());
在这一点上我已经获得的的ID当然,它被插入里面,问题是用户ID我没有得到任何东西。我如何获得当前登录用户的ID?
这里是我班的登录功能的代码:
public function userLogin() {
$success = false;
try{
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM users WHERE username = :username AND password = :password LIMIT 1";
$stmt = $con->prepare($sql);
$stmt->bindValue("username", $this->username, PDO::PARAM_STR);
$stmt->bindValue("password", hash("sha256", $this->password . $this->salt), PDO::PARAM_STR);
$stmt->execute();
$valid = $stmt->fetchColumn();
if($valid) {
$success = true;
}
$con = null;
return $success;
}catch (PDOException $e) {
echo $e->getMessage();
return $success;
$user = $stmt->fetchObj();
if($user->user_id > 0) {
$success = true;
// User has been successfully verified, lets sessionize his user id so we can refer to later
$_SESSION['userID'] = $user->user_id;}
}
}
,并终于在这里是登录功能的代码:
session_start();
$usr = new Users;
$usr->storeFormValues($_POST);
if($usr->userLogin()) {
header('Location: cursos.php') ;
$_SESSION["loggedIn"] = true;
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
$_SESSION['id'] = $_POST['id'];
在进入一些大问题之前,您应该阅读SQLinjection。还混合'mysql_ *'和'PDO' ....你不是这个代码的原始程序员吗? –