PHP header 位置 - 不断刷新 - 使用 exit() 它不会显示页面(空白页面)

标签 php mysql ajax url http-headers

我正在使用 PHP header 位置通过 MySQL 数据库中的参数更改 URL。

<?php
    include ('databaseconn.php');
    include ('search.php'); 
    header('Location: http://localhost:8888/docs/document.php?UniqueKey='.$row['UniqueKey']);
    exit();
?>

我的数据库中有大约 1000 行,每行都包含一个 UniqueKey,例如:46fF5。每次刷新浏览器时,它都会从数据库中调用随机行,包括与该行对应的 UniqueKey。

我想要什么

我想刷新页面,并且浏览器中的链接会自动更新。所以我可能有:localhost:8888/docs/document.php?UniqueKey=12dF2。如果我刷新 (F5),我希望新行在地址栏中显示其 UniqueKey。

问题

exit();函数返回一个空白页。如果我删除它,页面将继续循环通过不同的唯一键,仍然会导致空白页面(由于 2 个 包含 php 文件不断刷新新行)。

我使用了 IF 语句:

if(!isset($_GET['UniqueKey'])) { header loc code }

但是它只改变一次,当我刷新页面时,它将保留它找到的第一个UniqueKey。

我不知道该怎么办。我尝试了“一切”。有什么想法吗?

编辑

显然我需要包含连接和 search.php 文件,所以这里是:

databaseconn.php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "mydatabase";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

search.php

很多代码,但这是重要的部分(我认为):

$sql = "SELECT * FROM documents order by RAND()";
$result = $conn->query($sql);
$row = $result->fetch_assoc();

最佳答案

只需使用SESSION即可。下面的例子只是展示了想法,您可以根据需要轻松更改代码:

<?php
    session_start();
    error_reporting(E_ALL);
    if($_GET['rand'] == $_SESSION['rand'] || !$_GET['rand']){
        $rand = mt_rand(1,1111111);
        header("Location: ".$_SERVER['PHP_SELF']."?rand=".$rand);
    }else{
        $_SESSION['rand'] = $_GET['rand'];
    }
    print_r($_SESSION);
?>

每次刷新后,GET 参数都会根据您的需要而不同。

关于PHP header 位置 - 不断刷新 - 使用 exit() 它不会显示页面(空白页面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399421/

相关文章:

php - 向自身添加数字的更好方法?

php - 如何解决 Google 日历的链接重定向通知?

php - Codeception:生成验收测试在并行虚拟机上引发异常

php - 通过id获取内容并通过url显示php mysql

php - 这是一次将多个文本字段添加到 mysql 中的正确方法吗?

javascript - 日志中的 ValidationError 项

mysql - 使用自定义逻辑删除重复行

javascript - 如果需要,ajaxForm 重新提交

javascript - JQuery:使用 Google-Ajax-Feed-API 异步加载 DIV 标记(仅)与最新的 feed

php - 从 jQuery AJAX 调用的列表项中获取值和名称