【发布时间】:2012-05-02 15:45:12
【问题描述】:
我正在尝试使用以下脚本将从隐藏表单中获取的值插入到数据库中
/detect user session
if (!isset($_SESSION['user']))
{
//if no session take to login page
header('location:login_main.php');
}
//if session detected connect to database using pdo
$db = getConnection();
//get holiday infor from hidden form
$user = $_SESSION['user'];
$title = $_POST['title'];
$link = $_POST['link'];
$date = $_POST['date'];
$description = $_POST['description'];
//insert the values in to favorties table
$sql = "INSERT INTO saved_holidays (subscriberID, link, pubDate, title, description, dateSaved)
VALUES (:subscriberID, :link, :pubDate, :title, :description, now())";
$stmt = $db->prepare($sql);
$stmt->bindParam(':subscriberID', $user);
$stmt->bindParam(':link', $link);
$stmt->bindParam(':pubDate',$date);
$stmt->bindParam(':title', $title);
$stmt->bindParam(':description', $description);
$stmt->execute();
echo 'you have sucessfully saved the holiday offer.<meta http-equiv="refresh" content="2; url=index.php" />';
但是当我运行脚本时出现以下错误
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`unn_w11023553/saved_holidays`, CONSTRAINT `holidays_ibfk_1` FOREIGN KEY (`subscriberID`) REFERENCES `subscriber` (`email`) ON UPDATE CASCADE)' in [OMISSIS]
谁能告诉我我做错了什么,谢谢
【问题讨论】:
-
离题:您的脚本中有一个巨大的安全漏洞。 header("Location: ...") 不会退出脚本的执行!