【问题标题】:Is there a way to post a session variable?有没有办法发布会话变量?
【发布时间】:2014-01-30 09:05:39
【问题描述】:

我希望访问存储在会话中的登录用户 ID,并将其发布到查询中。所以像:

if(!empty($_SESSION['user_id'])) {
    $_POST['user_id'] = $_SESSION['user_id'];
    $ui = $_POST['user_id'];
} else {
    $errors[] = 'Please login before posting a book for sale.';
}

然后在查询中:

if (empty($errors)) {
$q = 'INSERT INTO books (user_id, isbn, name, image, price) VALUES (?, ?, ?, ?, ?)';
$stmt = mysqli_prepare($dbc, $q);
mysqli_stmt_bind_param($stmt, 'isssd', $ui, $isbn, $bn, $i, $p);
mysqli_stmt_execute($stmt);

现在我已经知道第一个 IF 语句是不正确的,但是我这样发布它是为了让 PHP 用户可以看到我想要完成的工作。我试图弄清楚如何获取存储的变量 user_id,使其具有粘性,然后将其发布到查询中。谢谢!

【问题讨论】:

  • 为什么要将它分配给 POST,而 then 分配给另一个变量并使用后者?你到底想做什么?为什么不直接绑定 $_SESSION 呢?
  • 基本上我只是想将存储的变量添加到查询中,因为在数据库中它是一个索引值。

标签: php forms session session-variables sticky


【解决方案1】:

由于您已经将变量存储在$_SESSION['user_id']..

你为什么不直接使用这个:

$ui = $_SESSION['user_id'];

【讨论】:

  • 见。就这么简单。我非常感谢您的回复。谢谢!
【解决方案2】:

只需将session id 放入变量中即可。无需编写任何POST 变量。 你可以这样使用:

$your_variable = $_SESSION['user_id'];
//according to your code you can write it
$ui = $_SESSION['user_id'];

当然不要忘记在页面顶部使用session_start();

【讨论】:

  • 你实际上无意中提出了一些有趣的东西。我通过 include ('includes/form.php') 将表单包含在索引页面上。我有 session_start();在我的索引页面的顶部,这需要用户登录。当我以该格式提交表单时,会发生什么是 form.php 没有或无法访问存储的变量。当我将它复制到 form.php 时,它给了我一个错误,说我已经开始了两次会话。然后我删除了索引页面上的那个,但是它无法访问索引页面上存储的变量。有解决办法吗?
  • 当您在表单中开始会话时,然后将其放置在表单提交之后。否则每次提交表单时您的会话都会被清除。当您想在其他页面中使用会话变量时,请将session_start() 放在这些页面的顶部。
猜你喜欢
  • 2023-04-10
  • 2011-05-21
  • 2011-06-10
  • 2018-03-08
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多