【问题标题】:How i can get the array ID from a page to another redirect page我如何从一个页面获取数组 ID 到另一个重定向页面
【发布时间】:2013-07-05 12:44:55
【问题描述】:

这是我的第一篇文章。我已经搜索了很多,但我找不到我要找的东西。所以我有这个文件破坏了帖子的内容并阅读了更多内容:

<?php

include('../root/admin/includes/connect.php');
$sql = "SELECT * FROM posts";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
    echo "\n";
    echo truncate($row['Content'], "article.php", "article_id", $row['ID']);
}

//function to truncate text and show read more link  
function truncate($mytext, $link, $var, $id) {
    //Number of characters to show  
    $chars = 25;
    $mytext = substr($mytext, 0, $chars);
    $mytext = substr($mytext, 0, strrpos($mytext, ' '));
    $mytext = $mytext . " <a href='$link?$var=$id'>read more...</a>";
    return $mytext;
}

?>

现在我有了这个文件

<?php

include('includes/connect.php');
$id = isset($_GET['ID']);
$query = mysql_query("SELECT * FROM posts WHERE ID='$id'") or die(mysql_error());
if (mysql_num_rows($query) == 0) {
    echo "<tr><td colspan=\"3\">No Posts Were Found</td></tr>";
} else {
    while ($post = mysql_fetch_assoc($query)) {
        echo "<div class='perigrama'><div class='titlos'><h2><a href='#'>" . $post['Title'] . "</a></h2></div><div class='infos'><p>Posted by <a href='#'>" . $post['Author'] . "</a> on March 10, 2011 | <a href='#'>Full article</a></p></div><div class='image'><img src='#' width='540' height='300'></div><div class='content'><p>" . $post['Content'] . "</p></div><div class='more'><p><a href='#'>Full details</a></p></div></div>";
    }
}
?>

这个文件是我想在这里根据ID从数据库中输出帖子,当我点击阅读更多时:

<html>
    <head>
        <title></title>
    </head>
    <link rel="stylesheet" type="text/css" href="../test/testdivformascss.css">
    <body>
        <?php
        include('functions1.php');
        ?>
    </body>
</html>

当我点击阅读更多时,我得到的输出是这样的,它将我重定向到正确的页面 ID,但告诉我没有找到帖子。

如果你能告诉我如何做到这一点,我会很高兴看到它。提前致谢!

【问题讨论】:

  • 你听说过 SQL 注入吗?阅读它。
  • 您应该使用 mysqli_ 函数或 PDO 而不是使用 mysql_ 函数。除此之外,$link 变量的内容是什么?

标签: php mysql arrays post redirect


【解决方案1】:

改变

$id=isset($_GET['ID']);

$id=isset($_GET['article_id']) ? (int)$_GET['article_id'] : 0;

$id = isset($_GET['ID']); - 这会返回 bool,而且它总是 false,因为 $_GET 中没有 ID

你的链接看起来像$mytext = $mytext . " &lt;a href='$link?$var=$id'&gt;read more...&lt;/a&gt;";

由输出的 truncate 函数解析

&lt;a href='article.php?article_id=SOME_ID'&gt;read more...&lt;/a&gt;

所以你应该使用 $_GET['article_id'] 来获取这个 id,你应该将它转换为 int by (int) 或 intval()

还有两件事。

  1. 您的代码非常危险,您应该认真阅读并在 Google 上搜索一些涵盖 SQL_INJECTION

  2. 的主题
  3. Mysql_* 函数已弃用,将来将被删除。请改用 PDOMysqli。这些引擎有一些称为准备好的语句,并且通过参数绑定,您不必注意正确的转义。

【讨论】:

  • 谢谢我的朋友,它成功了……我知道这有很多问题而且很危险……我这样做只是为了测试。我只有 2 个月的时间来学习 php 和 mysql,因此非常危险:P 我当然必须尝试 mysqli 或 PDO ...只阅读 mysql 只是为了基本的东西和理解。感谢您的提示:)
猜你喜欢
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多