Почему $ globals ['name'] отличается в другом файле php

Итак, что я делаю, я устанавливаю переменную $ GLOBALS ['me] в File1.php, а в File2.php я пытаюсь получить и установить новую переменную с этими данными, но это не работает, когда я передаю ее затем он становится нулевым, ... но если вы проверите, установлен ли он, он говорит, что он установлен. Я вызываю File2.php с помощью ajax XMLHttpRequest, который, как мне кажется, может быть причиной этого.

--- File1.php ---

$raceid = 2;
$wpm = 1;
$char = 3;
$me = 4;
...
$GLOBALS['me'] = $me;
$content = "char: " . $char . "\n" . "wpm: " . $wpm . "\n" . "me: " . $GLOBALS['me'] . "\n" . "raceId: " . $raceid . "\n";
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/myText.txt","wb");
fwrite($fp,$content);
fclose($fp);
//End of php File1.php

Как видите, он выводит результаты в файл, поэтому я могу видеть, что такое $ GLOBALS ['me']. Итак, вот myText.txt после этого запуска.

--- myText.txt ---

char: 3
wpm: 1
me: 4
raceId: 2

Итак, это отличный $GLOBALS['me'], равный 4 (только в этом файле он равен 4) Итак, вот PHP File2.php (он запускается при выполнении функции javascript)

--- File2.php ---

//wpm char and race id are defined above in this file.
if (isset($_POST['char']) && isset($_POST['wpm'])){
    $char = $_POST['char'];
    $wpm = $_POST['wpm'];
    if(isset($GLOBALS['raceid'])){
        $raceid = $GLOBALS['raceid'];
    }
    if (isset($GLOBALS['me'])){
        $me = $GLOBALS['me'];
        $content = "char: ".$char."\n"."wpm: ".$wpm."\n"."me: ".$GLOBALS['me']."\n"."raceId: ".$raceid."\n";
        $fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/myText.txt","wb");
        fwrite($fp,$content);
        fclose($fp);
    }
//Other stuff that only executes if $me is a value
}

Как вы можете видеть в этом файле, если установлен $GLOBALS['me'], я устанавливаю этот файл $ me равным ему. Затем я снова устанавливаю данные в файл, но на этот раз файл выглядит так:

--- myText.txt ---

char: 3
wpm: 1
me: 
raceId: 2

теперь у меня пусто (ноль), и я все еще использую $ GLOBALS ???
теперь вот мой javascript для вызова File2.php с помощью метода post и выполняется нажатием кнопки html.

--- Javascript ---

function ClickMe(){
    $.post("update.php", {
        char: 72,
        wpm: 123
    }, function(data, status){
        alert("done!");
    });
}

Любая помощь в том, почему $ GLOBALS ['me'] не сохраняет свое значение между этими php-файлами, будет полезна, и как вы могли бы получить переменную $ me из php File1 в php File2. Между этими php-файлами больше ничего не вызывается, кроме сценария, который отправляет в File2, спасибо за помощь. Извините за длинный вопрос, который хотел быть как можно более описательным и показать, что в File1 установлено значение $ GLOBALS ['me'], а в File2 оно пустое или нулевое. Спасибо!

Переменные (даже глобальные) действительно нет сохраняются от страницы к странице. Вам нужно либо использовать сеансы для сохранения состояния, либо передать клиенту значения, которые будет использовать страница.

Alex Howansky 10.08.2018 17:08

@ B001 ᛦ спасибо, за предложение заставило меня подумать о $ _SESSION ['me'], и (At) Alex Howansky благодарит за сеансы предложений, помогает понять, что это правильный путь. Спасибо за помощь вам обоим.

SharpIncTechAndProgramming 10.08.2018 17:12

Хорошо, что помогло .... Удачи :)

B001ᛦ 10.08.2018 17:13

Работает! Большое спасибо за помощь.

SharpIncTechAndProgramming 10.08.2018 17:18

Вы можете рассматривать файлы cookie, поскольку они не записывают файлы tmp на сервер, поэтому меньше чтения-записи, немного быстрее, на несколько строк меньше кода для этого типа простых задач.

anonymous 10.08.2018 17:18

a.k.a "Интернет без гражданства" - каждый раз, когда вы запускаете URL-адрес, вы загружаете новый экземпляр приложения. Файлы cookie, локальное хранилище и сеансы - это обходной путь.

CD001 10.08.2018 17:20
1
6
43
0

Другие вопросы по теме