Регистрация
Вход через соцсети
Восстановление пароля

Warning: stripslashes()

Новый топик
Страницы: 1  |  2
22.03.2013, 04:45
Ответить | Цитировать
Сергей
ВебКей

Зарегистрирован:
2010-12-31
Сообщений: 27

Здравствуйте!
При регистрации на сайте, если данные введены неправильно и выводится $WarnText, появляется ошибка
Код:
Warning: stripslashes() expects parameter 1 to be string, array given in ...\netcat\add.php on line 146
Я понимаю что функция ожидает параметр и предназначена для удаления обратных слэшей. Но почему ей вдруг понадобился какой-то параметр? Раньше ошибки такой небыло..
23.03.2013, 12:35
Ответить | Цитировать
Сергей
ВебКей

Зарегистрирован:
2010-12-31
Сообщений: 27

Ошибка из-за строчки в форме добавления:
Код:
";
if ($_GET['ref']) $f_Ref = $ref; //убираю строку и ошибка больше не появляется
$addForm .= "
<form>
<input type='text' name='f_Ref' value='$f_Ref'>
</form>

Почему?
24.03.2013, 14:13
Ответить | Цитировать
Гость
Гость

потому что в функцию вместо строки передается массив. посмотрите, каким образом эта функция применяется в случае ошибки при заполнении формы. и тогда станет все ясно.
24.03.2013, 17:18
Ответить | Цитировать
Сергей
ВебКей

Зарегистрирован:
2010-12-31
Сообщений: 27

А при чем тут массив?
Методом GET передали число 123 в переменную $ref, и подставили это число в HTML-форму в поле Ref (типа целое число), созданное средствами НетКэт.
Ну попало в этот массив число 123. В чем ошибка не пойму?
25.03.2013, 22:09
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Попробуйте так:
Цитата:
";

if ($_GET['ref']) $f_Ref = $ref; //убираю строку и ошибка больше не появляется

echo "

<form>

<input type='text' name='f_Ref' value='$f_Ref'>

</form>


Temet nosce...
26.03.2013, 10:40
Ответить | Цитировать
Сергей
ВебКей

Зарегистрирован:
2010-12-31
Сообщений: 27

Ничего не помогает, как я только не изворачивался. В итоге сделал так:
Код:
if ($ref) $f_Ref = $ref;
Стоит написать $_GET['ref'], так сразу ошибка выскакивает.
Это в Extra 5.03, в системной таблице 4.0 "Пользователи" в альтернативной форме добавления.
26.03.2013, 18:26
Ответить | Цитировать
Гость
Гость

написано же, что функция ожидает в качестве параметра строку, а на самом деле получает массив, поэтому и выскакивает предупреждение.
смотрим код в файле netcat/add.php
Код:

145. if ($_REQUEST[$template_variable] == $$template_variable) {
146. $$template_variable = stripslashes($$template_variable);
147. }

$$template_variable -- берется из формы добавления.
значит в шаблоне есть переменная типа массив и она пропускается через stripslashes, которая убирает обратный слэш (чтобы в элементах формы не было его)
27.03.2013, 02:15
Ответить | Цитировать
Сергей
ВебКей

Зарегистрирован:
2010-12-31
Сообщений: 27

url - site.ru/reg/?ref=123
В форму передается переменная $ref.
Код:
1) if ($_GET['ref']) $f_Ref = $ref; // ошибка есть
2) $f_Ref = $ref; // ошибки нет
Вы хотите сказать, что в первом случае $ref - массив, а во втором $ref - строка? улыбка
Я же писал выше, причина в буковках $_GET. Даже если взять вымышленную переменную $fff, которая вообще нигде не используется, и прописать:
Код:
$fff = $_GET['ref'];
то вылезет ошибка!
Это какой-то глюк NetCat, обычное дело...
27.03.2013, 08:17
Ответить | Цитировать
Гость
Гость

посмотрите, что содержится в переменных $_REQUEST и $template_variables. откуда то появляется же массив в переменной $$template_variable.
27.03.2013, 11:22
Ответить | Цитировать
Сергей
ВебКей

Зарегистрирован:
2010-12-31
Сообщений: 27

Нет там ничего. Вы сами попробуйте, вставьте в альтернативную форму системной таблицы 4.0 "Пользователи" код:
Код:
";
$fff = $_GET['ups'];
$addForm .= "
Можете метом GET ничего не передавать, в форму ничего не передается. УРЛ: site.ru/регистрация-пользователя/
Вообще никакие поля не заполняйте. Вместе с $warnText вылезет ошибка Warning: stripslashes().

Более того, попробуйте строку закомментировать:
Код:
";
// $fff = $_GET['ups'];
$addForm .= "
Ошибка все равно есть! Повторюсь, что переменная $fff нигде не используется.

Теперь попробуем сделать так:
Код:
";
$addForm .= "
Удалили строку и ошибки больше нет.
27.03.2013, 12:47
Ответить | Цитировать
sparton
Шекера Евгений

Зарегистрирован:
2010-03-16
Сообщений: 141

а если написать $_GET["ref"] или $_GET[ref] ?
198 196 2013-03-28 03:11:59 12963
Страницы: 1  |  2
Описание проекта