如何设置从数据库到php会话的id点击链接

How set id from database to php session on link click

本文关键字:会话 php id 链接 数据库 何设置 设置      更新时间:2023-12-10

但让我们从头说起。我正在创建类似wordpres博客索引页的网站(因为没有足够的声誉,所以无法显示图片)。然后我点击介绍文章中的阅读更多链接,我想把文章id从数据库保存到php-sesions。这是代码。

                while($row = mysqli_fetch_array($result))
                        {
                          echo '<div class="img">
                            <img src="img/smiley.gif" alt="Smiley face" width="250" height="250">     
                            </div>';
                        echo "<h2>".$row['Name'] . "</h2> " ;
                        $string = strip_tags($row['Content']);
                        if (strlen($string) > 500) {
                            $stringCut = substr($string, 0, 500);
                            $string = substr($stringCut, 0, strrpos($stringCut, ' ')).'... <a href="post.php?link=1">Read more</a>'; 
                        }
                        //echo $string;
                        if(isset($_GET['link']) /*you can validate the link here*/){
                                                    $_SESSION['link']= true;
                                                 }
                         echo $string;
                        echo "<br>";
                        echo '<div class="content dashboard clearfix"></div>';
                        echo '<hr>';
                        }
                      mysqli_close($con);
                      ?>

所以我在index.php文件中有3篇介绍文章,我没有读过一篇,所以我按read MORE(然后我应该把文章id写到会话),然后转到另一个页面,如果我认为我应该从会话中获得文章id的话。我正试着用做这件事

if(isset($_GET['link']) ){ /*you can validate the link here*/
    $_SESSION['link']= true;
}

但它总是写数字5——数据库中的最后一个ID,所以我想我应该使用AJAX,javascript??也许有人能给我举个例子?非常感谢。

您可以通过ajax设置SESSION变量,但是。。。这会变得非常疯狂,使事情变得过于复杂,并且对SEO不太友好

有一个更好的方法:让你的"阅读更多"实际链接到你的内容。因此,您有一个指向http://example.com/page.php?id=5的"阅读更多"链接,然后在"page.php"中执行以下操作:

$Id = intval($_GET['id']);

在阅读了如何在php中创建友好的URL之后,你可以让它变得更漂亮吗?所以它们看起来像CCD_ 2。

单击链接时,您可以从代码中自动转到所需页面。因此,您只需要创建页面post.php并从数据库中检索一行,其方式与我上面指出的类似,但名称正确:

$Id = intval($_GET['link']);