Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не работает выражение eregi
 
 автор: ivanov_max   (11.08.2009 в 16:58)   письмо автору
 
 

здравствуйте установил один скрипт там есть такой код
<?
foreach ($_GET as $check_url) {
if ((
eregi('<[^>]*script*\"?[^>]*>'$check_url)) || (eregi('<[^>]*object*\"?[^>]*>'$check_url)) ||
(
eregi('<[^>]*iframe*\"?[^>]*>'$check_url)) || (eregi('<[^>]*applet*\"?[^>]*>'$check_url)) ||
(
eregi('<[^>]*meta*\"?[^>]*>'$check_url)) || (eregi('<[^>]*style*\"?[^>]*>'$check_url)) ||
(
eregi('<[^>]*form*\"?[^>]*>'$check_url)) || (eregi('\([^>]*\"?[^)]*\)'$check_url)) ||
(
eregi('\"'$check_url)) || (eregi('\''$check_url)) || (eregi('\./'$check_url)) || 
(
eregi('//'$check_url)) || (eregi('<'$check_url)) || (eregi('>'$check_url))) {

echo 
'ошибка'; exit;
}}


у меня php ругается на него
Deprecated: Function eregi() is deprecated in много раз так написано
мне сказали что нужно переделать под preg, а как не соображу

  Ответить  
 
 автор: heed   (11.08.2009 в 17:22)   письмо автору
 
   для: ivanov_max   (11.08.2009 в 16:58)
 

у Вас какая версия php ?

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

  Ответить  
 
 автор: ivanov_max   (11.08.2009 в 17:30)   письмо автору
 
   для: heed   (11.08.2009 в 17:22)
 

версия 5.3.0
там к примеру чтобы нельзя было ввести что-то типа ../ ну и так далее

  Ответить  
 
 автор: ivanov_max   (11.08.2009 в 17:43)   письмо автору
 
   для: ivanov_max   (11.08.2009 в 16:58)
 

я вот сделал примерно так сильно упростил

<?php
foreach ($_GET as $check_url) {
if (!
preg_match('|^[a-z0-9_\.\-/]+$|i'$check_url)){

но надо чтобы отдельно точку или / пропустило а вместе типа ../ или ./ не пропускало

  Ответить  
 
 автор: heed   (11.08.2009 в 18:07)   письмо автору
 
   для: ivanov_max   (11.08.2009 в 17:43)
 

'#^(?:[a-z0-9_\-/]+|\.+(?!/))+$#i' както так можно сделать

  Ответить  
 
 автор: ivanov_max   (11.08.2009 в 18:18)   письмо автору
 
   для: heed   (11.08.2009 в 18:07)
 

вроде работает, это нормальное выражение?

  Ответить  
 
 автор: heed   (11.08.2009 в 18:41)   письмо автору
 
   для: ivanov_max   (11.08.2009 в 18:18)
 

смотря что считать нормальным выражением.
пропустит то что должно , любое ненулевое колличество точек сразу за которыми не следует слэш
и любое колличество тех символов что в []

не пропустит пустую переменную из $_GET и то что не входит в описание того что пропустит

Вопрос только ещё в том нужна-ли такая проверка вообще.
В $_GET может быть нужно передавать не только подходящее под такое
, может быть нужно в скрипте реагировать на то что передали или не передали,
заменять значением по умолчанию при несоответствии .................
а тут просто exit() и все дела

  Ответить  
 
 автор: ivanov_max   (11.08.2009 в 21:31)   письмо автору
 
   для: heed   (11.08.2009 в 18:41)
 

а как сделать чтобы пропустило пустую?

  Ответить  
 
 автор: heed   (11.08.2009 в 21:55)   письмо автору
 
   для: ivanov_max   (11.08.2009 в 21:31)
 

'#^(?:[a-z0-9_\-/]+|\.+(?!/))*$#i'

  Ответить  
 
 автор: ivanov_max   (11.08.2009 в 22:31)   письмо автору
 
   для: heed   (11.08.2009 в 21:55)
 

спасибо, все работает

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования