【发布时间】:2017-05-19 06:26:59
【问题描述】:
我正在开发一个应用程序,该应用程序具有登录用户可以填写和提交的不同表单。例如,艺术家可以通过表单提交他们的视频,该电影将被保存并上传到数据库。 但是,我希望在提交表单时自动将用户 ID 和 userEmail 连接到表单,以便在拉回数据时轻松检查用户 ID 或电子邮件。 我尝试了几种不同的方法来做到这一点,但没有任何效果,因此非常感谢任何帮助。我也在我的数据库表中使用外键,但我不明白它在连接到表时是如何工作的。 所以这是我为用户和电影设置的表格 用户表
CREATE TABLE IF NOT EXISTS. `users` (
`userID` int(11) NOT NULL. AUTO_INCREMENT,
`userEmail` varchar(100) NOT NULL,
`userPass` varchar(100) NOT NULL,
`userType` varchar(6) NOT NULL,
`agreement` enum('Yes', 'No') NOT NULL,
`userStatus` enum('Y','N') NOT NULL. DEFAULT 'N',
`tokenCode` varchar(100) NOT NULL,
PRIMARY KEY (`userID`),
UNIQUE KEY `userEmail` (`userEmail`)
) ENGINE= MyISAM DEFAULT. CHARSET=latin1. AUTO_INCREMENT=1 ;
电影表
CREATE TABLE `movies` (
`userID` int(11) NOT NULL,
`userEmail` varchar(250) NOT. NULL,
`movie_name` varchar(300) NOT NULL,
FOREIGN KEY (userID) Refrences users(userID),
FOREIGN KEY (userEmail) REFRENCES users(userEmail),
UNIQUE KEY `movie_name` (`movie_name`)
) ENGINE=MyISAM DEFAULT. CHARSET=latin1;
表单页面在这里 (我在这里尝试将 SESSION 数据添加到 POST 并尝试使用 GET 方法添加 SESSION 数据,但均无效)
if(isset($_POST['submit']))
{
$email = trim($_POST['email']);
$movie = trim($_POST['movie']);
if($user_home->upload($email, $movie))
{
header("Location: Artist_Uploads.php?inserted");
}
else
{
header("Location: Artist_Uploads.php?failure");
}
}
<form action="Artist_Uploads.php" method="post" name="upload">
<input name="email" type="hidden" value="<?php echo. htmlentities($row['userEmail']); ?>" />
<input name="movie" type="text" />
<input name="submit" type="submit" />
</form>
处理表单提交的页面
public function upload($email,$movie) { try
{
$stmt = $this->conn->prepare("INSERT INTO movies(userEmail, movie_name) VALUES(:email, :movie)");
$stmt->bindValue(":email",$email);
$stmt->bindparam(":movie",$movie);
$stmt->execute();
return true;
}
catch(PDOException $e)
{
echo $e->getMessage();
return false;
}
}
我尝试在 return true 下方和 return true 之前插入 lasted()。
尝试添加 VALUES ('','$_SESSION[cuserID]','$_SESSION[userEmail]','') :movies");。
我还尝试在 bindValue 或 bindCol 中添加 _SESSION 数据,这些都不起作用。
我还尝试从 users.userID、users.userEmail 添加 INSERT INTO 电影,但这也不起作用。
所以我不知道如何让它插入 userID 和 userEmail 而不将其输出到表单中然后以这种方式插入,但这似乎很危险并且容易注入,因为有人可以轻松地操纵该信息或 获取用户 ID 并开始使用它。因此,任何建议或指示将不胜感激。提前谢谢你。
【问题讨论】:
-
请酌情使用 SQL 和 PHP 的代码块编辑您的问题。
-
感谢编辑。尽我所能理解你的代码和解释——而且很难阅读——你正试图从
$_SESSION中获取数据。表单提交后,数据在$_POST,不在$_SESSION。否则,请确保您在 PHP 中打开了错误报告,并将任何错误作为问题的一部分分享。 -
我想在表单提交后提交会话数据。假设用户已登录并且他们想提交电影。当他们提交他们的电影时,他们的用户 ID 和用户电子邮件将在提交表单时自动保存到数据库中。会话数据具有用户 ID 和电子邮件我只是不确定如何在用户提交表单时获取该信息以附加。从那以后会赚更多吗?
-
会话数据应该已经跨页面保留(这就是
$_SESSION所做的),因此没有理由将其添加到您的表单中。 (除非你有一个检查随机数的安全工具,但这里似乎不是这种情况。) -
是的,它会在页面中持续存在。当用户在那里提交电影时,我想在数据库中知道提交电影的用户。我可以将 php echo 添加到表单中以保存该数据,但这似乎并不安全,因为可以轻松操作。所以我试图找到一种方法,在提交电影表单时将有关用户的信息提交到数据库中。
标签: php forms pdo insert session-variables