为什么首次加载或页面打开一段时间后,URL 的查询字符串会发生变化?

问题描述 投票:0回答:1

问题是;如果有人点击我网站上的文章、活动、帖子等的链接,URL 参数(在“content?data=”之后)就会中断。我在测试时使用 Google Chrome 作为我的主要浏览器,并使用 InfinityFree 作为我的网络主机。

例如,WhatsApp 上或我的网站以外的其他地方的人可能会点击链接。然后链接会暂时正确地转到网页。页面加载时,URL 将显示在 URL 栏中。然而,一旦加载,它会将 URL 内容更改为 0%0 个字符的混乱。根据研究,这些显然是“空”字符。为什么会出现这种情况?

已点击链接: https://clarity.rf.gd/i?i=test-invite

链接已打开: https://clarity.rf.gd/i?i= 0%00%00%00%00%00%00%00%00

为了进一步说明链接,最后的参数是正确的。该文件称为“i.php”而不是“invitation.php”,“GET”数据是“i”而不是“url”,以最小化 URL 长度(https://clarity.rf.gd/邀请?url=test-invite)。另外,忽略“...i=”和“0%0...”之间的单个空格,Stack Overflow 的输入会使尾随参数消失。

页面主要代码如下:

i.php:

$page_url = urlencode($_GET['i']);

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['i'])) {
    $myEvent = $mysqli->prepare('SELECT * FROM event WHERE url=?');
    $myEvent->bind_param('s', $page_url);

    if ($myEvent->execute()) {
        $result = $myEvent->get_result();
        if ($result->num_rows == 1) {
            $row = $result->fetch_assoc();
            // Fetch Primary Database Data
            $id = $row['id'];
            $account_id = $row['account_id'];
            $url = $row['url'];
            // Fetch Other Database Data
            $title = $row['title'];
            $desc = $row['description'];
            $date_time_start = $row['date_time_start'];
            $date_time_end = $row['date_time_end'];
            $location = $row['location'];
            $locationPin = $row['locationPin'];
            $colour = $row['bg_colour'];
            $image = $row['bg_image'];
        }
    }
    $myEvent->close();
}

我尝试过使用和不使用“urlencode”功能,希望它会有所帮助。在浏览网站时,每个页面都可以正常工作,只有当单击外部位置的链接或页面打开一段时间并刷新页面时才会出现这种情况。我知道这可能是某种缓存或重定向,但我不知道这是从哪里来的。

另外,一般来说,如果我做错了什么,请告诉我。我正在学习在每个页面上显示独特内容的不同方法,如果这是不正确的,请告诉我。

感谢您的支持,谢谢!

php html url
1个回答
0
投票

对疏忽表示歉意。我使用的虚拟主机实际上使用“?i=”来实现某种安全性;结果是“index.php?i=1”。它不断以意想不到的方式重写 URL。

此后,我将所有“i”重写为“l”,以使字符宽度保持最小,并且它似乎有效。现在会出现第一次加载时的 URL; “index.php?l=主页&i=1”。我在过去一周的测试中没有遇到任何问题。

~谢谢您的评论,我很感激。

© www.soinside.com 2019 - 2024. All rights reserved.