【问题标题】:PHP header location - keeps refreshing - with exit() it won't show the page (blank page)PHP 标头位置 - 不断刷新 - 使用 exit() 它不会显示页面(空白页面)
【发布时间】:2016-07-15 15:04:11
【问题描述】:

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

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

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

我想要什么

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

问题

exit(); 函数返回一个空白页。如果我删除它,页面将继续循环遍历不同的唯一键,仍然会导致空白页面(由于 2 个 include 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();

【问题讨论】:

  • 只是为了澄清-此代码(带有header())也在您的document.php文件中?
  • 好吧,如果你需要帮助,我也会发布 search.phpdatabaseconn.php,因为一切似乎都在进行中
  • 谢谢大家,抱歉耽搁了,已经更新了!
  • @mitkosoft 是的,标题也在我的 document.php 文件中
  • @JoseManuelAbarcaRodríguez 它基于单击一个按钮,它会显示另一个随机文档(所以我手动猜测?)

标签: php mysql ajax url http-headers


【解决方案1】:

只需使用 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 参数将根据您的需要有所不同。

【讨论】:

    【解决方案2】:

    接下来是一个如何每次用不同的key刷新页面的例子,大家可以自己比较一下(每次刷新后地址栏都会显示随机key),如你所说,刷新必须发生在点击按钮:

    zzz.php

    <html>
      <head>
      </head>
      <body>
        Current key :
    <?php
    // CHECK IF PAGE IS RETURNING FROM YYY.PHP.
    if ( isset( $_GET[ "key" ] ) )
         echo $_GET[ "key" ];
    else echo "No key";
    ?>
        <form action="yyy.php">
          <input type="submit" value="Refresh"/>
        </form>
      </body>
    </html>
    

    yyy.php

    <?php
    // REPLACE NEXT ARRAY WITH THE SQL QUERY.
    $keys = array( "111","222","333","444","555","666","777","888","999" );
    $index = rand( 0,count( $keys )-1 );
    header( "Location: zzz.php?key=" . $keys[ $index ] );
    ?>
    

    将之前的代码复制到具有给定名称的文件中(“zzz.php”和“yyy.php”,抱歉文件名缺乏创意),然后在浏览器中打开“zzz.php”。

    我们看不到您的所有代码,因此很难准确指出问题出在哪里。

    【讨论】:

      猜你喜欢
      • 2013-11-17
      • 1970-01-01
      • 2021-09-23
      • 2020-02-20
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 2023-03-26
      • 2019-02-11
      相关资源
      最近更新 更多