Что мне здесь не хватает? Это мой 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, чтобы сделать это.