Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: redirect to url
Форумы портала PHP.SU » » Вопросы новичков » redirect to url

Страниц (1): [1]
 

1. implements - 18 Января, 2013 - 07:14:04 - перейти к сообщению
Здравствуйте, нужно сделать переход на сайт указанный пользователем
он может указать
http://site[dot]com
http://www[dot]site[dot]com
site.com

как тут правильно все это обработать и пере направить по ссылки?
делаю простым способом пока

но это не правильно
2. Toxa - 18 Января, 2013 - 07:25:26 - перейти к сообщению
Почему не правильно?
Что касается проверки
3. implements - 18 Января, 2013 - 07:29:14 - перейти к сообщению
Toxa пишет:
Почему не правильно?

вел я google.com
он пытает перенаправить
http://localhost/google[dot]com
и вылетает еррор Object not found!
если http://google[dot]com то все нормально
(Добавление)
Toxa пишет:
Что касается проверки

если также будет введен без http:// то эта функция вернет false
4. Toxa - 18 Января, 2013 - 07:32:07 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo filter_var('google.com', FILTER_VALIDATE_URL) ? 'valid' : 'not valid';
  2. // not valid

какие еще вопросы?
5. implements - 18 Января, 2013 - 07:34:14 - перейти к сообщению
Toxa пишет:
какие еще вопросы?
вопрос в том, что google.com посути валиден, тока нет http:// перед ним, и поэтому он определяет,что url not valid
6. Toxa - 18 Января, 2013 - 07:39:19 - перейти к сообщению
Хорошо, тогда добавляй его сам, предварительно обрезав, если он введен пользователем
PHP:
скопировать код в буфер обмена
  1. $url = 'http://google.com';
  2.  
  3. $url = preg_replace('#https?:\/\/(www\.)?#', '', $url);
  4. $url = 'http://'.$url;
  5.  
  6. echo filter_var($url, FILTER_VALIDATE_URL) ? 'valid' : 'not valid';
7. spsu - 18 Января, 2013 - 07:46:54 - перейти к сообщению
Я бы так написал дабы preg_replace не дергать.
PHP:
скопировать код в буфер обмена
  1. if ((strpos($url, "http://") !== 0) && (strpos($url, 'https://') !== 0))
  2.    $url = 'http://'.$url;
  3. echo filter_var($url, FILTER_VALIDATE_URL) ? 'valid' : 'not valid';
8. implements - 18 Января, 2013 - 07:50:36 - перейти к сообщению
Toxa ок, спс, вот это дело, а можно еще замену если введен не http/https а ftp
9. Toxa - 18 Января, 2013 - 08:32:51 - перейти к сообщению
можно и ftp
PHP:
скопировать код в буфер обмена
  1. $url = preg_replace('#(https?|ftp):\/\/(www\.)?#', '', $url);

 

Powered by ExBB FM 1.0 RC1