-1

以下代码有问题:

<?php
$con = mysql_connect("localhost","","");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("abcdatabase", $con);

$ids = intval($_GET['id']);
if ($ids==0){
$id = rand (0,50);
header("Location: http://index.php/?id=$id");
}
?>

它运作良好。但我想要更多的东西。当我放入index.php浏览器时,它会随机转到类似index.php?id=30. 但是进入页面后index.php?id=30,如果我按下浏览器的刷新按钮,它仍然保持在同一页面中。我希望每次刷新页面时都会随机加载新页面id。但是如果有人试图访问该页面index.php?id=30,他将获得该页面id=30

我是一个新手程序员。任何人都请帮我解决这个问题。

4

5 回答 5

1

如果您每次都想要一个随机页面,只需不要进行重定向:

$ids = rand (1, 50);
// continue with your code here

顺便说一句,rand()适用于包含范围,因此您必须使用[1, 50]以免有时会0返回。

于 2013-07-19T07:02:18.333 回答
0

好吧,您$_GET['id']在重新生成新 ID 之前检查是否为零。删除该代码,您就可以设置:

if (isset($_GET['id'])) {
   $id = rand (0,50);
   header("Location: http://index.php?id=$id");
}

现在,无论何时$_GET['id'],它都会生成一个新页面。如果您没有在 URL 中提供 ID,您将获得纯页面。

然而,这将导致无限循环。为什么要使用header呢?就这样吧:

 $id = rand(0,50);
 // use your ID to do whatever you want to do
于 2013-07-19T06:58:25.313 回答
0

您可以使用会话变量来存储加载的最后一页的 id。如果您不跟踪 $_GET['id'],您将面临无限重定向的风险。

<?php
session_start();
$con = mysql_connect("localhost","","");
if (!$con){
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("abcdatabase", $con);

$ids = intval($_GET['id']);
if ($ids==0 || (isset($_SESSION['last_loaded']) && $_SESSION['last_loaded'] == $ids)){
    $id = rand (0,50);
    $_SESSION['last_loaded'] = $id;
    header("Location: http://index.php/?id=$id");
    exit;
}
?>
于 2013-07-19T06:58:35.377 回答
0

exit()之后添加header("Location: http://index.php/?id=$id");

header("Location: http://index.php/?id=$id");
exit();
于 2013-07-19T07:00:26.117 回答
0

免责声明:这就是我在喝了太多朗姆酒后会在凌晨 2 点这样做的方式。

<?php
// If I don't have an id or the current uri == referrer uri then redirect
if (!isset($_GET["id"]) ||
    (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] ==
                                        $_SERVER["REQUEST_URI"])){

        header("Location: http://index.php/?id=".rand(1,50));
        exit();        
}

$con = mysql_connect("localhost","","");
if (!$con){
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("abcdatabase", $con);

// query and show the goods here
?>

这应该在地址栏中保留一个可导航的 uri,并在刷新时显示一个新的随机值。评论中引用的许多优化也被集成。

于 2013-07-19T07:37:23.470 回答