-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、ブラウザの更新ボタンを押しても、同じページに残ります。ページが更新されるたびに、新しいページが random で読み込まれます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

セッション変数を使用して、読み込まれた最後のページの 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

$_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

免責事項:これは、ラム酒を飲みすぎた後の午前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 に答える