为什么我的代码 运行 和 session_start 两次?

Why is my Code running twice with session_start?

我创建了两个文件(test.php & test2.php)。

test.php 应该增加数据库中的计数器。然后它应该重定向到 test2.php

一切正常,但现在我设置了一个 $_SESSION,现在它的计数器增加了 2。没有 session_start 它工作完美,但它没有设置我的 $_SESSION。

test.php

<?php
    if (!isset($_SESSION)) { session_start(); }

    include_once("dbtest.php");
    $id = mysqli_real_escape_string($conn, $_GET["id"]);

    mysqli_query($conn, "update users set clicks = clicks + 1 where id = ".$id);
    $_SESSION['test_id'] = $id;

    header("Location: test2.php");
?>

test2.php

<?php
    if (!isset($_SESSION)) { session_start(); }

    if(isset($_SESSION['test_id'])) {
       echo $_SESSION['test_id'];
    }
?>

它应该将计数器加 1。

好像是关于浏览器或客户端发送的OPTIONS方法

我认为他们称之为 "pre flight" browser/client 的内部检查,以查看 request 是否有效 HEADERS

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS

要调试, 输入您的 browser/client 的网络调试并启用日志持久性。

回答问题:

您的一些代码甚至在 OPTIONS 发送 HTTP 方法时执行。即使您使用的是 PHP 框架,也可能会发生同样的情况,因此这也可能是由于您使用的客户端或浏览器所致。