【问题标题】:Storing array in session and retrienving desired value在会话中存储数组并检索所需值
【发布时间】:2016-02-19 09:46:16
【问题描述】:

下面的代码将帖子 ID 的数组存储到会话中,并使用 foreach 我遍历帖子 ID 并调用与该帖子 ID 相关的数据(标题,正文)。它工作正常。

index.php

$result = $query->fetchAll(PDO::FETCH_COLUMN, 0);
$_SESSION['postid']=$result;
foreach($_SESSION['postid'] as $key=>$postid){
 $sql = "SELECT * FROM posts WHERE postid=:postid";
 $query = $db->prepare($sql);
 $query->execute(array(':postid'=>$postid));
 $row = $query->fetch(PDO::FETCH_ASSOC);
 <a href="post.php"><?php echo $row['title']; ?></a>
 <p><?php echo row['body'] ?></p>
}

现在我想通过单击索引页面中的title 链接来定向到帖子页面,并从单击标题的会话数组中调用该特定的帖子 ID。在帖子页面上使用 $postid = $_SESSION['postid']; 会给出整个帖子 ID 数组。有什么方法可以让我在帖子页面上仅针对在索引页面上单击标题的特定帖子 ID 开始会话。

【问题讨论】:

  • 试试&lt;a href="post.php&amp;postid=" . $postId&gt;&lt;?php echo $row['title']; ?&gt;&lt;/a&gt; &lt;p&gt;&lt;?php echo row['body'] ?&gt;&lt;/p&gt;

标签: php arrays session


【解决方案1】:

在 index.php 页面中,修改锚标记如下:

<a href="post.php?pistid='<?php echo $row['postid']; ?>'"><?php echo $row['title']; ?></a>

然后在帖子页面上使用此代码在会话中设置 postid

<?php
$_SESSION['pid'] = isset($_GET['pistid'])$_GET['pistid']:null?;
?>

【讨论】:

  • 谢谢,使用的是相同的,但很多人告诉不要通过 url 发送敏感数据,只使用会话。
  • 是的。你是对的,但我不认为 postid 是敏感数据。我说的对吗?
  • 是的,但在你让用户发布硬写的博客或类似的东西时可能很敏感,url 方法既快速又简单,但我可以搜索像会话这样安全的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
相关资源
最近更新 更多