Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Странное поведение $_POST
Все просто, да?
В этом же файле принимаем $_POST, проверяем всякими разными способами (всякие надписи - это я уже для наглядности самому себе выводил).
Все отлично, все в наличии.
Можно сделать echo $_POST['z1'], все будет показываться
var_dump выводит содержимое массива, ничего не теряется, не ломается.
Чудеса начинаются в том случае, если делается попытка записать данные из $_POST в файл или базу. Он просто записывается пустым.
Например
то длина строки выводится, причем неважно, ДО записи в файл этот код поставить или ПОСЛЕ.
Записывать значение $_POST пробовал и в переменные, навроде $a1 = $_POST['z1']; ... Объявлял их global, никакого толку. Все одно - при записи в БД или в файл пишется пустота, а в браузер выводится.
Но самое смешное не в этом. Самое смешное, что в этом же файле есть очень похожая форма, которая работает и пишет в БД, без всяких нареканий.
Вынес в отдельный файл свою форму, обработчк $_POST в другой файл - результат тот же, в браузер выводит, в файл\базу - нет.
Замечу, что этот участок кода когда-то давно работал, а вот когда прекратил... Этот момент я упустил и обнаружил случайно, когда посетители стали жаловаться на то, что их данные при обновлении через форму исчезают.
PHP обновлял последовательно с 5.2.17 до 5.3\5.3.3\5.4 - результата нет. Апач обновил с 2.1.х до 2.2 - результата нет.
OS - CentOS 6.5, в контейнере Virtuozzo.
Имеется .htacess с rewrite (заменяет расширения .php на htm). Выключение оного никаких изменений не дает.
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
Herr Direktor, у меня ошибка не воспроизводится
Видимо, с путями к файлу что-то...
Попробуйте такой кусок кода использовать (взамен 19-21 строк из вышеприведённого):
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2015
Помог: 0 раз(а)
Да не... Проблема не в путях, файл-то создается и в него записывается все, кроме данных из POST.
Код выше, увы, делает все то же самое, т.е. пишет только явно указанное (т.е. строки "post:" и т.п.)
Как я уже отмечал, если снести вообще ВЕСЬ код (его много) и оставить ТОЛЬКО файл скрипта, то все работает.
Непонятно, почему вывод в консоль работает нормально, а записываться никуда не желает, ни в файл, ни в БД.
В общем, к такому жизнь меня не готовила
ЗЫ
Кстати, если POST поменять на GET, то все работает. Но как-то негламурно через GET передавать логин и пароль из формы.
Подозрение на двойной вызов кода. Первый методом POST и вы видите все echo, затем дублирующий без поста, перезаписывает файл.
Точно! При таком подходе в файле появляется 2 записи, одна с данными, вторая уже известная, пустая.
Спасибо, товарищ! Осталось только отловить, где это происходит.
esterio
Отправлено: 13 Мая, 2015 - 14:25:57
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Эта функция не возвращает значения после выполнения.
Что записивать то собираетесь? Она только виводит на екран. А так как ничего не возвращаеться, то пустое место в строке (ибо NULL привести к стрингу будет ""). Так что никакой магии. Используйте либо
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2015
Помог: 0 раз(а)
Спасибо всем участникм, проблема решена. Как обычно она (проблема) была в кривых ручОнках (моих), неверно прописавших условие проверки POST в головном скрипте.
Особое спасибо камраду Мелкий за подсказку к решению проблемы, честно говоря не догадался использовать такое простое решение.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.