Что мне здесь не хватает? Это мой PHP-файл:
<? session_start(); echo print_r($_SESSION); echo "<br>"; echo print_r($_POST); // Save input in session $_SESSION = $_POST; echo "test1"; ?> <br> test2
Доступ к этому файлу осуществляется из формы submit, и я уверен, что данные публикации существуют. Выход:
Массив ([login] => 1) 1
Array ([name] => test [type] => test) 1
test2
- Может ли PHP включать работу только для определенной части файла?
- Модуль по умолчанию Zend Framework 2
- Получить цену товара на рынке сообщества Steam с помощью PHP и Regex
- Асинхронная обработка или очереди сообщений в PHP (CakePHP)
- PHP не загружает php_pgsql.dll в Windows
- Обновление цены автоматически при изменении количества на странице продукта Magento
и это не имеет никакого смысла для меня. Содержимое session
содержимое post
печатаются без проблем.
Но $_SESSION = $_POST;
кажется, терпит неудачу, а остальная часть скрипта до ?>
не дает никакого ответа, что очевидно, потому что текст test1
не печатается.
Я не могу узнать, что происходит с $_SESSION = $_POST;
, Все вопросы, которые я нахожу в SO и в других местах, дают такой способ хранения данных в сеансе.
Я знаю, что session_start();
необходимо до выхода. Есть ли что-то еще, что также необходимо в этом случае?
Что мне не хватает?
Обновление – тестовый файл
Точный код полного тестового файла ( ссылка удалена ):
<? session_start(); ?> <html> <head> </head> <body> <? echo print_r($_SESSION); echo "<br>"; echo print_r($_POST); // Save input in session $_SESSION = $_POST; echo "test1"; ?> <p>test2</p> <form method="post" action="test.php"> Type something to test: <input type="text" name="testfield" id="testfield"> <input type="submit" value="Submit"> </form> </body> </html>
Обновление – решено?
Хорошо, теперь это решено. Но это СТРАЖНО …
Проблема, по-видимому, вызвана комментарием. //
останавливает выполнение скрипта в скобках <?..?>
. Когда я удаляю комментарий // Save input in session
, тогда он работает …?
Теперь ЧТО я здесь пропал? Это должно быть какая-то настройка php или что-то в этом роде. Или, возможно, некоторые файлы или данные сценария, которые были изменены. Я думаю, что, поскольку @CodeCaster работал, на моем компьютере что-то происходит, но это работает где-то еще? Кто-нибудь видел это раньше?
Пробовали ли вы использовать $_SESSION['name'] = $_POST['name'];
вместо?
Я никогда не использовал $_SESSION = $_POST;
, и ни разу не видели его, за все время я программировал на PHP.
Надеюсь это поможет.
я бы вместо этого выделил $ _POST и добавил его в $_SESSION['mypostvars']
. Имейте в виду, что вы должны проверить и проверить $ _POST перед их сохранением.
это возможно дублирование PHP-слияния $ _POST в $ _SESSION
Работая с Xampp, этот пример отлично работает. «Test1» печатается до и после успешного поста. Использование PHP 5.3.8.
Протестировано на Linux с PHP 5.3.6, также отлично работает печать «test1» в обоих случаях.
Итак, кажется, что PHP не проблема.
Вы можете изменить $ _SESSION, но я не думаю, что вам разрешено переназначить его так. Вместо этого скопируйте в него элементы $ _POST. Попробуйте использовать array_merge (), но если это не сработает, напишите цикл foreach, чтобы сделать это.