【发布时间】:2017-02-24 13:26:51
【问题描述】:
我有一个创建 cookie 并相应地使用 cookie 数据更新数据库的函数,但我似乎无法从函数内更新数据库。 is currently unable to handle this request.
您可以理所当然地认为正确的数据被输入到包括 $db 在内的函数中。一旦我注释掉准备和执行插入 $db 的两条 $stmt 行,我就可以加载页面。
$db 存在于文件调用db.php 中,在调用该函数之前我需要它。我已经在其他页面查询中测试了$db,它似乎没有问题。
function updatecookieDB($db, $email)
{
$Selector = md5($email);
$token = bin2hex(random_bytes(20));
$salt = bin2hex(random_bytes(20));
$cookiedata = $Selector.$token;
$Hash = md5($token.$salt);
setcookie('RememberMe',$cookiedata,time()+(3600*24*15),"/")
$query = " INSERT INTO RememberMe(email,Selector,Hash,Salt) VALUES (:email,:Selector,:Hash,:Salt) ";
$query_params = array ( ':email' => $email ,':Selector' => $Selector , ':Hash' => $Hash, ':Salt' => $salt );
try
{
$stmt = $db->prepare($query);
$stmt->execute($query_params);
{
catch(PDOException $ex) { die("Failed to run query: " . $ex->getMessage()); }
}
可能是因为我没有返回任何东西?
【问题讨论】:
-
那么 $email、$selector、$hash 和 $salt 属于这个函数的什么地方呢?
-
代码的表单部分在哪里?
-
以及如何调用该函数
-
“可能是因为我没有返回任何东西吗?” - 如果你没有调用那个自定义函数,是的......它不会做任何事情。
-
函数 updatecookieDB($db,$Selector,$Hash) 或使用全局 $Selector 如果声明较早