|
|
|
| здравствуйте установил один скрипт там есть такой код
<?
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, а как не соображу | |
|
|
|
|
|
|
|
для: ivanov_max
(11.08.2009 в 16:58)
| | у Вас какая версия php ?
проверка конечно необычная
для чего-то массив $_GET на присутствие некоторых тегов определяется....
какие действия с $_GET-переменными после этого используются ? | |
|
|
|
|
|
|
|
для: heed
(11.08.2009 в 17:22)
| | версия 5.3.0
там к примеру чтобы нельзя было ввести что-то типа ../ ну и так далее | |
|
|
|
|
|
|
|
для: ivanov_max
(11.08.2009 в 16:58)
| | я вот сделал примерно так сильно упростил
<?php
foreach ($_GET as $check_url) {
if (!preg_match('|^[a-z0-9_\.\-/]+$|i', $check_url)){
|
но надо чтобы отдельно точку или / пропустило а вместе типа ../ или ./ не пропускало | |
|
|
|
|
|
|
|
для: ivanov_max
(11.08.2009 в 17:43)
| | '#^(?:[a-z0-9_\-/]+|\.+(?!/))+$#i' както так можно сделать | |
|
|
|
|
|
|
|
для: heed
(11.08.2009 в 18:07)
| | вроде работает, это нормальное выражение? | |
|
|
|
|
|
|
|
для: ivanov_max
(11.08.2009 в 18:18)
| | смотря что считать нормальным выражением.
пропустит то что должно , любое ненулевое колличество точек сразу за которыми не следует слэш
и любое колличество тех символов что в []
не пропустит пустую переменную из $_GET и то что не входит в описание того что пропустит
Вопрос только ещё в том нужна-ли такая проверка вообще.
В $_GET может быть нужно передавать не только подходящее под такое
, может быть нужно в скрипте реагировать на то что передали или не передали,
заменять значением по умолчанию при несоответствии .................
а тут просто exit() и все дела | |
|
|
|
|
|
|
|
для: heed
(11.08.2009 в 18:41)
| | а как сделать чтобы пропустило пустую? | |
|
|
|
|
|
|
|
для: ivanov_max
(11.08.2009 в 21:31)
| | '#^(?:[a-z0-9_\-/]+|\.+(?!/))*$#i' | |
|
|
|
|
|
|
|
для: heed
(11.08.2009 в 21:55)
| | спасибо, все работает | |
|
|
|