连接两个页面内的数据

Posted

技术标签:

【中文标题】连接两个页面内的数据【英文标题】:Connecting data within two pages 【发布时间】:2017-09-20 02:25:45 【问题描述】:

我有两页,就像一般的博客文章一样,一页是文章的小预览,一页是完整的文章。每篇小预览文章都有一个名为“阅读更多”的按钮,当用户单击它时,所有文章都会在单独的页面中打开。我正在上传带有 id、name、author、title、article 和 date 列的文章。在第 1 页上,所有文章的预览都从数据库中完美检索,但“阅读更多”按钮无法正常工作。单击任何文章预览的“阅读更多”时,仅显示第一篇文章,而不是根据预览显示不同的文章。 这是代码 第 1 页(预览页)

<?php 
$db = mysqli_connect("localhost", "root", "", "myblogs.com");
$sql = "SELECT * FROM blogs";
$result = mysqli_query ($db, $sql);
while ($row = mysqli_fetch_array($result)) 
  echo "        <div class='date-posts'>

<a href='index.php'>".$row['title']."</a></h1>
</div>
<div>".$row['author']."</div>

<div><img src='blogs/".$row['image']."'><div class='blogsampletext'>".$row['article']."</div>
<a href='page2.php.'>Read More</a>
</div>
";        

?>

第 2 页(显示文章全文)

<?php

$db = mysqli_connect("localhost", "root", "", "myblogs.com");
$sql = "SELECT * FROM blogs LIMIT 1";
$result = mysqli_query ($db, $sql);
while ($row = mysqli_fetch_array($result))
 echo "<tr><td colspan='2' align='center'><h2>".$row['title']."</h2><br>
 <img src='blogs/".$row['image']."'><br>
 <h4>".$row['author']."</h4>
 </td></tr>";
 echo "<tr><td colspan='2'><hr>".$row['article']."</td></tr>";


  

?> 

【问题讨论】:

这是因为你有SELECT * FROM blogs LIMIT 1,这总是会选择它看到的第一条博客记录。您必须在page2.php 中实现某种参数,以根据其标识符选择正确的博客记录。 [本教程] 有​​一些关于我上面提到的 ?id=ID 的更多信息,否则你可能想试试谷歌。 【参考方案1】:

您指向下一页的链接不完整:它不包含对您想阅读的哪篇文章的引用。

您没有提到任何主键,因此,对于本示例,我们假设它称为 id

您的链接应采用以下形式:

<a href='page2.php?id=$row['id']'>

这将包含id 作为查询字符串。

接下来,您的第二个页面应该获取 id 并使用它:

$id=intval($_GET['id']);
$sql = "SELECT * FROM blogs WHERE id=$id";

通常您在使用用户数据时需要担心 SQL 注入,但 intval 函数会解决这个问题。

您不再需要LIMIT,因为根据定义,主键是唯一的。

由于您依赖用户遵循正确的步骤,因此您有点暴露自己:

如果用户以某种方式进入第二页而没有通过第一页,则您需要根本不允许输入。您可以通过默认读取第一个 id 来做到这一点。 由于您使用 GET 作为方法,邪恶的用户可以通过添加 id=nastystuff 或更糟的东西来破坏事情。在这种情况下,由于它应该是一个整数,intval 会将任何未知的东西转换为 0

【讨论】:

我尝试了该 id 代码及其显示错误。解析错误:语法错误,意外 '' (T_ENCAPSED_AND_WHITESPACE),期望标识符 (T_STRING) 或变量 (T_VARIABLE) 或数字 (T_NUM_STRING) i @SherazAli 抱歉,我没有注意到代码已经在字符串中。我已经修改了答案以在表达式周围包含大括号:$row['id']

以上是关于连接两个页面内的数据的主要内容,如果未能解决你的问题,请参考以下文章

即使用户转到网站内的不同页面,socket.io 连接是不是仍然存在?

ASP.NET怎么将本页面内的某个参数传递到另一个页面中呢?

在 Swift 中的页面视图控制器内的视图控制器之间传递数据

当我最小化页面时,网格内的网格会移动

刷新主页内的页面时防止div在顶部滚动

IIS 6.0上的网站在运行一段时间之后无法访问,之前已经连接的页面可以用,关掉之后就再无法连接