Почему мой код выполняется дважды с session_start? - PullRequest
0 голосов
/ 16 апреля 2019

Я создал два файла (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.

1 Ответ

0 голосов
/ 19 апреля 2019

Похоже, речь идет о методе OPTIONS, отправленном браузером или клиентом.

Я думаю, они называют его "pre flight" внутренней проверкой браузера / клиента, чтобы выяснить, имеет ли requestдействительный HEADERS.

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

Для отладки введите отладку сети вашего браузера / клиента с включенным сохранением журнала.

Чтобы ответить на вопрос:

Часть вашего кода выполняется даже при OPTIONS HTTP-методе отправляются.То же самое может случиться, даже если вы используете PHP-фреймворки, поэтому это может быть связано с тем, какой клиент или браузер вы используете.

...