X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> регулярка для url
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 8.4.2011, 19:53; Ответить: Salikhoff_hb
Сообщение #1


помогите пожалуйста сделать регулярку для проверки url приведу пару ссылок раз два [PHP]eregi("^(http|https|ftp)://*[a-z0-9]*([-_.]?[a-z0-9])*.[a-z]{2, 4}", $_POST['url'])[/PHP] вот такая у меня выдает ошибку Warning: eregi() [function.eregi]: REG_BADBR in T:\home\virtual\amiso\url.php on line 29 помогите исправить и максимально обезопасить сайт от попадания в него кривых ссылок, хотелось бы учесть чтобы в конце был слеш или не было в зависимости от того как пользователь ввел, ну в смысле был или не был чтобы регулярка принимала в конце со слешем или без него!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
NiKON_hb
NiKON_hb
сообщение 8.4.2011, 20:59; Ответить: NiKON_hb
Сообщение #2


[PHP]filter_var($url, FILTER_VALIDATE_URL);[/PHP]

Не пойдет?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 9.4.2011, 1:08; Ответить: Mulder_hb
Сообщение #3


FICO-077), вам учебник по пхп дедушка подарил? Функции ereg* считаются устаревшими и в любой последующей версии пхп могут быть выпилены.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 9.4.2011, 6:45; Ответить: Salikhoff_hb
Сообщение #4


Mulder, нет, на оф. сайте написано что php5 поддерживает! Ну а что предложите использовать!? мне проще регуляркой, только я не могу ее правильно составить!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 9.4.2011, 11:19; Ответить: Apay
Сообщение #5


на том же php.net вроде читал что рекомендуется для регулярок использовать preg_*
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 9.4.2011, 11:57; Ответить: Salikhoff_hb
Сообщение #6


вот смотри вот код [PHP]<?php
require_once ('main/config.php');

if(isset($_POST['ok'])) {
if(!empty($_POST['url']) && !empty($_POST['mail']) && !empty($_POST['title']) && !empty($_POST['category']) && !empty($_POST['description']) && !empty($_POST['keywords'])) {
if(preg_match("|^(http|https|ftp)://+[a-z0-9]+([-_.]?[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['url'])) {
if(preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['mail'])) {
$category = intval($_POST['category']);
$date = date('Y-m-d');
$mail = $_POST['mail'];
$title = trim($_POST['title']);
$title = htmlspecialchars($title);
$description = trim($_POST['description']);
$description = htmlspecialchars($description);
$keywords = trim($_POST['keywords']);
$keywords = htmlspecialchars($keywords);
$url = parse_url($_POST['url']);
$badurl = mysql_query("SELECT `url` FROM `catalog` WHERE (`url` LIKE '%".$url['host']."%')", $db);

if (mysql_num_rows($badurl)==0) {
$result = mysql_query("INSERT INTO `catalog` (`category`, `date`, `mail`, `title`, `description`, `keywords`, `url`) VALUES ('$category', '$date', '$mail', '$title', '$description', '$keywords', '$url')");

if (!$result) {
echo ("URL-адрес не добавлен!");
}
else {
echo ("URL-адрес добавлен!");
}
}
else {
echo ("URL-адрес уже зарегистрирован в системе!");
}
}
else {
echo ("Проверьте корректность E-mail!");
}
}
else {
echo ("Поверьте корректность URL-адреса!");
}
}
else {
echo ("Все поля должны быть заполнены!");
}
}
?>[/PHP] постоянно выдает ошибка на 29 строку а она [PHP]if(preg_match("|^(http|https|ftp)://+[a-z0-9]+([-_.]?[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['url'])) { [/PHP] как сделать чтобы проходил только правильный адрес, и не слишком ли много условий? есть ли какие предположение по улучшению?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 9.4.2011, 12:00; Ответить: Salikhoff_hb
Сообщение #7


вот сам текст ошибки
Warning: preg_match() [function.preg-match]: Unknown modifier 'h' in T:\home\virtual\amiso\url.php on line 29
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Salikhoff_hb
Salikhoff_hb
Topic Starter сообщение 9.4.2011, 15:25; Ответить: Salikhoff_hb
Сообщение #8


сделал [PHP]if(preg_match("|^(http(s?))\://[-0-9a-z_^\.]*\.[a-z]{2,6}(/?)$|i", $_POST['url'])) {[/PHP] есть какие предложения по улучшению?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 9.4.2011, 22:58; Ответить: Mulder_hb
Сообщение #9


(' post='108770 @ 9.4.2011, 15:00)
Unknown modifier 'h'

Кто вас учил в качестве ограничителей использовать '|'? Поэтому вам и выдает, что h является неизвестным модификатором
preg_match("|^(http|https|ftp)://+[a-z0-9]+([-_.]?[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['url'])
Итого ваш код сейчас выглядит так:
preg_match('/^(http/hi);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Maksimchik
Maksimchik
сообщение 21.2.2013, 12:53; Ответить: Maksimchik
Сообщение #10


FILTER_VALIDATE_URL использует http://www.faqs.org/rfcs/rfc2396.html... Тут и регулярки есть.

Рылся, и нашел: ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
Но врятли это то что надо.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4078 Вчера, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
1 Rebex 683 17.4.2024, 11:50
автор: Rebex
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2819 16.4.2024, 12:48
автор: diviner99
Горячая тема (нет новых ответов) Betatransfer.net - прием платежей для HIGH RISK проектов, интернет эквайринг и мерчант онлайн оплат
54 arendator 34836 15.4.2024, 15:16
автор: arendator
Горячая тема (нет новых ответов) ⭕Антидетект браузер AdsPower для эффективной работы с мультиаккаунтами!
83 AdsPower 24425 14.4.2024, 22:52
автор: AdsPower


 



RSS Текстовая версия Сейчас: 19.4.2024, 23:55
Дизайн