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

Форум PHP

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

 

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

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

тема: Глюк при формировании url'a
 
 автор: Andron   (11.08.2004 в 01:40)   письмо автору
 
 

Не могу понять что за глюк :(
При проверке
<?php  echo $news['url']; ?>

выдаёт:
 www.example.ru 


Но вот если пишу
<?php echo "<a href=".$news['url']." target=_blank>".$news['url_text']."</a>"?>

выдаёт не ссылку на www.example.ru, а на http://example1.ru/news/www.example.ru

Где http://example1.ru - сайт, на котором обрабатывается страничка с php.

Что за дурь?

   
 
 автор: glsv (Дизайнер)   (11.08.2004 в 02:58)   письмо автору
 
   для: Andron   (11.08.2004 в 01:40)
 

Ага, есть такая штука :)

Это потому что URL написан, как www.example.ru, а не http://www.example.ru
Т.е. в первом случае, HTML считает, что это относительный путь и строит его от директории где этот скрипт работает. Т.е. от http://example1.ru/news

Тут есть 2 пути решения.
1 - так как это админ новостей (если я правильно понял), то просто администратор должен всегда писать полностью URL - с http://

2 - добавлять http:// автоматически, например вот так

if (trim($url)!="") { 
    if (strtolower((substr($url, 0, 7))!="http://") && (strtolower(substr($url, 0, 7))!="ftp://")) $url="http://".$url;
}    


Хотя лично я склоняюсь к первому способу. Ручной ввод URL-а в правильном формате. Потому что при автоматическом добавлении http:// есть исключения и их надо тоже обрабатывать, например.

1. пути могут быть относительными, т.е. href="../directory/news2.php" - без http://
2. вместо http:// может быть написан ftp://

   
 
 автор: Andron   (11.08.2004 в 13:06)   письмо автору
 
   для: glsv (Дизайнер)   (11.08.2004 в 02:58)
 

Ну это кусочек кода из "новостей". При добавлении новости в бд, есть строчка с этой проверкой. Значит не добавляется автоматически http:// (если например написать www.example.ru).
Что может быть?

Вот строчка кода из editnews.php:

  // Добавляем протокол в url, если пользователь забыл это сделать сам
  $_POST['url'] = strtr($_POST['url'], "HTTP", "http");
  if (!empty($_POST['url'])) {
        if (strtolower((substr($_POST['url'], 0, 7))!="http://") && (strtolower(substr($_POST['url'], 0, 7))!="ftp://")) $url="http://".$_POST['url'];
  }

   
Rambler's Top100
вверх

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