Gride
Новичок
Как засунуть массив в сессию?
Всем привет,
Недавно на этом форуме была очень интересная и познавательная тема, касающаяся проверки рефереров при обработке формы. Окромя проверки рефереров был подсказан другой вариант, предположительно более надежный:
При генерации формы в хидден вставляется рандомное число. Оно же сразу пишется в сессию. При обработке формы число из хиддена сверяется с числом из сесси, и если такое число есть, то продолжить обработку формы, иначе hacker? he-he.
Но при попытке сделать в скрипте
$rand = mt_rand();
$_SESSION["control"][] = $rand;
или чего-нить в этом же роде, получаю ворнинг:
Warning: Cannot use a scalar value as an array in D:\Internet\icegroup\forum\newpost.php on line 153
print_r($_SESSION) выводит $_SESSION["control"] = 12345.
При попытке сделать $_SESSION["control"]["рандомная строка"] = 1; выводится тот же ворнинг.
Что такое scalar? Почему сессия не хавает двумерный массив?
Использовать $_SESSION["control"] = $rand, т.е. хранить в сессии только одно рандомное число, не подходит, т.к. тогда в форуме пользователь сможет заполнять только одну форму на отправку сообщения.
В качестве возможного варианта решения видится сериализация:
В $_SESSION["control"] хранить засериализованный массив с этими самыми рандомными числами.
При генерации новой формы десериализовывать переменную, добавлять новое число и засериализовать ее обратно.
Существуют ли другие решения? Попроще, покрасивше, поаккуратней...
Всем привет,
Недавно на этом форуме была очень интересная и познавательная тема, касающаяся проверки рефереров при обработке формы. Окромя проверки рефереров был подсказан другой вариант, предположительно более надежный:
При генерации формы в хидден вставляется рандомное число. Оно же сразу пишется в сессию. При обработке формы число из хиддена сверяется с числом из сесси, и если такое число есть, то продолжить обработку формы, иначе hacker? he-he.
Но при попытке сделать в скрипте
$rand = mt_rand();
$_SESSION["control"][] = $rand;
или чего-нить в этом же роде, получаю ворнинг:
Warning: Cannot use a scalar value as an array in D:\Internet\icegroup\forum\newpost.php on line 153
print_r($_SESSION) выводит $_SESSION["control"] = 12345.
При попытке сделать $_SESSION["control"]["рандомная строка"] = 1; выводится тот же ворнинг.
Что такое scalar? Почему сессия не хавает двумерный массив?
Использовать $_SESSION["control"] = $rand, т.е. хранить в сессии только одно рандомное число, не подходит, т.к. тогда в форуме пользователь сможет заполнять только одну форму на отправку сообщения.
В качестве возможного варианта решения видится сериализация:
В $_SESSION["control"] хранить засериализованный массив с этими самыми рандомными числами.
При генерации новой формы десериализовывать переменную, добавлять новое число и засериализовать ее обратно.
Существуют ли другие решения? Попроще, покрасивше, поаккуратней...