|
|
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
Зарегистрирован: 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, которая вообще нигде не используется, и прописать:то вылезет ошибка!
Это какой-то глюк 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 нигде не используется.
Теперь попробуем сделать так:Удалили строку и ошибки больше нет.
|
|
|
27.03.2013, 12:47
|
|
sparton
Шекера Евгений
Зарегистрирован: 2010-03-16
Сообщений: 141
|
а если написать $_GET["ref"] или $_GET[ref] ?
|