当页面通过HREF链接时,PHP不会重新加载

时间:2017-06-25 20:32:14

标签: php html

我之前尝试过解释这个问题,但这很奇怪。

我有一个依赖于数据库变量的页面,可以在页面上进行更改。每次运行页面上的代码时都会得到这个。但是,在更改变量后立即访问此页面时,它不会刷新。

所以我做了一些调试并将时间输出到屏幕上。因此,当我在页面上更改变量时,它会重定向到另一个页面。我通过索引页面上的href链接进入。时间还在以前。为什么每次加载页面时都不刷新PHP代码?

<?php
session_start();
require($_SERVER['DOCUMENT_ROOT']."/testing/ticketsystem/server/databaseconfig.php");

$username = $_SESSION['username'];
$clientstatus = $_SESSION['status'];

$id = $_GET['id'];

function statusBadge($status)
{
    switch($status)
    {
        case "user":
            return $status = "<span class='badge badge-user badge-pill badge-default'>User</span>";
            break;
        case "admin":
            return $status = "<span class='badge badge-user badge-pill badge-success'>Admin</span>";
            break;
        case !$status:
            return $status = "<span class='badge badge-user badge-pill badge-danger'>Error</span>";
            break;
    }
}

?>

<!doctype html>
<html>
    <?php $pagetitle = "Ticket System"; require($_SERVER['DOCUMENT_ROOT']."/testing/ticketsystem/includes/head.php"); ?>

    <?php require($_SERVER['DOCUMENT_ROOT']."/testing/ticketsystem/includes/navbar.php"); ?>

    <body>
        <?php
        $sql = "SELECT * FROM tickets WHERE id = '$id'";
        $result = mysqli_query($conn, $sql);

        if (mysqli_num_rows($result) > 0) 
        {

            while ($row = mysqli_fetch_assoc($result))
            {
                $active = $row['active'];
                echo (date("H-i-s",time()));
                echo $active;

                $ticketnav = "<ul class='nav nav-pills nav-justified'><li class='nav-item'><a class='nav-link' href='../../admin.php'>Go Back</a></li><li class='nav-item dropdown'><a class='nav-link dropdown-toggle' data-toggle='dropdown' href='#'>Admin Actions</a><div class='dropdown-menu'><a class='dropdown-item' href='activeticket.php?id=$id&active=1'>Close Ticket</a><a class='dropdown-item' href='activeticket.php?id=$id&active=0'>Open Ticket</a></div></li></ul>";

                if($active == 0)
                {
                    $ticketreply = "<div class='card'><div class='card-header'><p>Reply</p></div><div class='card-block'><form method='post' action='replyticket.php?id=$id'><div class='form-group'><label class='mr-sm-2' for='message'>Message</label><textarea name='message' class='form-control' rows='4'></textarea></div><button class='btn btn-success' type='submit'>Reply to this Ticket</button></form></div></div>";
                }
                elseif($active == 1)
                {
                    !$ticketreply;
                }
                $subject = $row['subject'];
                $department = $row['department'];
                $message = $row['message'];
                $created = $row['created'];
                $userid = $row['userid'];
                $createdformat = date('d-m-Y H:i:s', strtotime($created));

                $tickethead = "<div class='card'><div class='card-header''><p>Support Ticket - #$id</p></div><div class='card-block'><p>Subject: $subject</p><p>Department: $department</p><p>Date: $createdformat</p></div></div>";

                $sql3 = "SELECT * FROM users WHERE id = '$userid'";
                $result3 = mysqli_query($conn, $sql3);
                while ($row3 = mysqli_fetch_assoc($result3))
                {
                    $username2 = $row3['username'];
                    $messagestatus = $row3['status'];

                    $ticketinital = "<div class='card'> <div class='card-header'><p><strong>Initial Message</strong></p><p>$username2 - " . statusBadge($messagestatus) . "</p><p>Date: $createdformat</p></div><div class='card-block'><p>Message: $message</p></div></div>";
                }

            }
            echo $ticketnav;
            echo $tickethead;
            echo $ticketreply;
            echo $ticketinital;

            $sql = "SELECT * FROM comments WHERE ticketid = '$id' ORDER BY created DESC";
            $result = mysqli_query($conn, $sql);
            if (mysqli_num_rows($result) > 0) 
            {
                while ($row = mysqli_fetch_assoc($result))
                {
                    $userid = $row['userid'];
                    $message = $row['message'];
                    $created = $row['created'];
                    $createdformat = date('d-m-Y H:i:s', strtotime($created));

                    $sql2 = "SELECT * FROM users WHERE id = '$userid'";
                    $result2 = mysqli_query($conn, $sql2);
                    while ($row2 = mysqli_fetch_assoc($result2))
                    {
                        $username2 = $row2['username'];
                        $commentstatus = $row2['status'];

                        $ticketcomment = "<div class='card'><div class='card-header'><p>$username2 - ". statusBadge($commentstatus) ."</p><p>Date: $createdformat</p></div><div class='card-block'><p>Message: $message</p></div></div>";
                        echo $ticketcomment;
                    }
                }
            }
        }
        ?>
    </body>
</html>

1 个答案:

答案 0 :(得分:1)

听起来像浏览器上的缓存问题。您始终可以尝试使用标头来阻止缓存:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

(我确定现在有更好的方法可以做到这一点,请随时谷歌找到正确的方法来实现这一目标。)

或者,添加&#34;?rand =&#34;更改数据库ID时链接回的URL - 浏览器通常会尝试重新获取页面,因为随机ID可能已更改:)