【问题标题】:pagination and url encoding help分页和 url 编码帮助
【发布时间】:2011-05-30 22:33:10
【问题描述】:
<?php $name=$_POST['name']; ?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="name">
<input type="submit" value="GO" name="submit">
</form>

<?php

    include ('db.php');

    if(isset($_POST['submit'])) 
    {
    mysql_query ("INSERT INTO example (name) VALUES('$name')") or die(mysql_error());
    }

    if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) {
    $startrow = 0;
    } 
    else {
    $startrow = (int)$_GET['startrow'];
    }

$query = "SELECT * FROM example ORDER BY id DESC LIMIT $startrow, 20"; 

$result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    echo "<li>";
    echo $row['name'] ." "." <a href= 'like.php?quote=" . urlencode( $row['name'] ) . "'>Click Here</a>";
    echo "</li>";
}




    echo '<a href="'.$_SERVER['PHP_SELF'].'?startrow='.($startrow+10).'">Next</a>';
?>

我想让我的页面链接隐藏,我怎样才能隐藏,以便用户无法编辑它。

第二个问题,

目前我在每页上显示总共 10 条记录,然后是下一页按钮,但即使没有更多记录,下一个按钮也会继续显示...!记录结束时如何删除下一页按钮。 ??

第 28 行是指向任何用户都可以轻松编辑的页面的链接,我想让它们安全(使用 ID)

并且第35行是n'next'页面链接,当记录数结束时不应出现此链接

【问题讨论】:

  • 你不能对用户隐藏链接,不是真的也不是安全的。为什么需要阻止用户编辑分页链接?

标签: php mysql hyperlink pagination


【解决方案1】:

我想不出你真的应该在链接中对用户隐藏页码的原因。将它们作为$_GET 变量保存在查询字符串中可能是我所知道的这种特定分页案例中最常见的做法。

我会对$_GET 变量中收到的数字进行验证,因为这通常会导致SQL Injection 和其他问题...确保它是一个数字,可以被 10 整除(如果你喜欢网站),可能不大于某个定义的数字,等等......

如果您仍然不同意,并且想要隐藏它,那么您始终可以通过在用户的计算机上保存 cookie(这仍然以某种方式向用户公开)或将页码保存在session(虽然这对我来说似乎是对服务器资源的极大浪费!)。

关于您的第二个问题 - 这有很多可能性...
这是一种方法:
创建一个查询表中有多少行的 sql 查询。
假设数字是 55。您将其放入隐藏值中。
如果您在一页上显示 10 个项目,那么您知道最后一页是第 6 个(如果您从第 1 页开始计数,则显示第 50-55 个项目)。
页面加载时简单的 php 检查:if ($_GET['page'] == 5) 然后你不显示下一个按钮。

类似这样的事情(跳过验证检查和 sql 查询):

<input type="hidden" value="<?php echo $itemCount;?>">
<?php
if ($_GET['page'] < ($itemCount \ 10))
{
    echo "<a href=\"items.php?page=".($_GET['page']+1)."\">";
}
?>

使用这个,我会添加一个检查以确保用户没有输入大于这个数字的数字,如果他们输入了,只需将他们重定向到他们可以输入的最后一个数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多