Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема в php 5.3 
:(
    Опции темы
Zmiuko
  Дата 24.5.2010, 12:29 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Народ, есть следующий класс:

Код

class txtt
{


# фильтр переменных (убираем спец символы и обрезаем длину до 32 символов в переменных)
FUNCTION filter_get($a) {
$a = str_replace('/', '',$a);
$a = str_replace("%00", '', $a);
$a = str_replace('\0', '', $a);
$a = preg_replace('/\0/s', '', $a);
$a = str_replace("%", '',$a);
$a = str_replace('script', '',strtolower($a));
$a = str_replace('..', '',$a);
$a = str_replace('<', '',$a);
$a = str_replace('>', '',$a);
$a = str_replace("&quot;", '',$a);
$a = str_replace("'", '',$a);
$a = str_replace('"', '',$a);
$a = str_replace('%', '',$a);
$a = str_replace('(', '',$a);
$a = str_replace(')', '',$a);
$a = str_replace('http', '',strtolower($a));
$a = str_replace('ftp', '',strtolower($a));
$a = str_replace("&lt;", '',$a);
$a = str_replace("&gt;", '',$a);
$a = substr($a, 0, 32);
$a = str_replace("/[^(\w)|(\x7F-\xFF)|(\s)]/",'',$a);
if($a==''){$a=NULL;}
return $a;
}


}




# инициализация класса
$GENERIC = new txtt;

$url_addr=array();
foreach ($_GET as $var => $secvalue) {
$url_addr[$var]=$GENERIC->filter_get($secvalue);
}


Данный класс исправно работает в php 5.2.

Но!

Ставим 5.3. Даем скрипту скушать ?url_addr=123&post=555, допустим.. Вывод массива $url_addr делаем через print_r(); скрипт нормально все выдает.

Ага.

Лезем в скрипт и $url_addr заменяем на $get . Заменили. Даем скушать ?get=123&post=555 , выводим $get как массив.... иии...

Кто-нить в курсе отчего и почему так? Объясните, пожалуйста, буду признателен.

Скрипт и все действия произведены в познавательных целях. Столкнулся с подобным - не до понимаю. Заранее спасибо.


PM MAIL WWW ICQ Skype Jabber   Вверх
bars80080
Дата 24.5.2010, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Zmiuko @  24.5.2010,  12:29 Найти цитируемый пост)
выводим $get как массив.... иии...

что "иии"?

ты везде (в обоих местах) заменил url_addr на get?
и зачем это вообще было делать?
PM MAIL WWW   Вверх
Zmiuko
Дата 24.5.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Ну писал класс. Потом вздумалось мне изменить название массива. Менял естественно в двух местах. И столкнулся с тем, что имя массива $get имеет какое-то своеобразное значение. Просто интересно. Кто-нибудь знает в чем причина. Все туториалы пролистал по php 5.3 но ничего не нашел про это. Помогите разобраться.

Дело в том что стоит переименовать массив url_addr на get ну пускай он хоть какой, просто меняем на get и массив "перестает быть массивом". Было бы разумнее предположить, что get либо определенная константа, либо переменная по умолчанию.
PM MAIL WWW ICQ Skype Jabber   Вверх
bars80080
Дата 24.5.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



нет, единственное, что можно предположить, так это что $get уже используется где-то и получила какой-то тип, который не является массивом. а у тебя возможно выключены ошибки

а что даёт var_dump($get); перед $url_addr=array(); ?

ну и если вздумалось поменять имя на другое, то почему бы не попробовать поменять на $get1 ?
PM MAIL WWW   Вверх
Zmiuko
Дата 24.5.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Да в том и дело что $get нигде и не юзалось - скрипт-то весь перед тобой. Осталось только запустить, проверить массив $get и также задаться вопросом.

Я просто понять хочу в чем дело, так-то код давно написан и работает.

Добавлено через 1 минуту и 5 секунд
Прошу прощения не могу var_dump($get); проверить - в данный момент негде. 
PM MAIL WWW ICQ Skype Jabber   Вверх
bars80080
Дата 24.5.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



в пхп 5.2 работает всё нормально. конечно же я не буду переставлять пхп ради проверки одного примера.

судя по всему глючная версия, либо пробуй переставить её, либо возвращайся на 5.2. всё равно я ещё не видел хостингов с 5.3
PM MAIL WWW   Вверх
Zmiuko
Дата 26.5.2010, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Все испробовал. Поднял denwer 5.3 даже для проверки. Боле того проверил на хостинге с 5.3 : не дает $get массив и все тут.
PM MAIL WWW ICQ Skype Jabber   Вверх
ksnk
Дата 26.5.2010, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



в параметрах этого самого 5.3 случайне не затесался register_global? Если поменять параметры URL  и использовать  
?url_addr=123&post=555 будет такая-же фигня?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Zmiuko
Дата 26.5.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Нет. ?url_addr=123&post=555 да какие угодно все нормально, но если мы присваиваем массиву имя $get и используем в передаче ?get=... то вместо $get['get'] какой-то мусор идет, вообще $get перестает быть массивом и странно перевирает все переданные данные в строке. То есть вместо массива данных формирует строку, в которой данные попадают под какой-то загадочный формат и значения переданных переменных перетасовываются между собой. Проверьте, убедитесь сами.

Добавлено через 3 минуты и 41 секунду
Не могу сказать, что я такой всех и вся профи, читающий каждый день rtfm и прочее. Но за всю практику своих и чужих ошибок - подобного не встречал. Скрипт тем боле до нельзя прост, а тем боле, что бы там еще ошибок по-наделать.

Просто пытаюсь понять, что упустил. А то опущу из внимания $get этот, казалось бы ну и что. Достаточно взять другое имя. Но.. для общего развития не мешало бы, дабы в дальнейшем не "спотыкаться".
PM MAIL WWW ICQ Skype Jabber   Вверх
Fortop
Дата 26.5.2010, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Zmiuko, 
Все работает с твоим кодом. Добавил лишь в самом низу var_dump
Код

fortop@linux-jf1s:~/work/test> php -v
PHP 5.3.1 (cli) (built: Feb 22 2010 13:51:10)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies


localhost/zm.php?get=123&post=555

Код

// var_dump
array
  'get' => string '123' (length=3)
  'post' => string '555' (length=3)


разбирайся

Добавлено через 49 секунд
Код

$get=array();
foreach ($_GET as $var => $secvalue) {
$get[$var]=$GENERIC->filter_get($secvalue);
}
var_dump($get);



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Zmiuko
Дата 27.5.2010, 05:33 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Хм. Выдать денвер собран криво. Спасибо, ребят. Помогли.
PM MAIL WWW ICQ Skype Jabber   Вверх
SickFxck
Дата 28.5.2010, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 16.4.2010

Репутация: нет
Всего: 1



Ага, Denwer виноват, ага.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.