Ошибка при использовании «http» в строке запроса PHP - PullRequest
1 голос
/ 11 сентября 2011

когда я использую строку *http://*foo на моей странице, я получаю сообщение об ошибке.

Например:

http://www.myadress.com/process.php?url=http://foo

Когда я сокращаю http: //, это работает. Что я должен сделать, чтобы использовать http: // в строках запроса?

Я использую URL следующим образом:

$address = @$_GET['url'];
$source = file_get_contents($url);
//bla bla

отображается 404 ошибка.

Без изменений с кодированием.

Всегда перенаправлять на страницу ошибки 404. Но когда я стираю http: //, это работает. Интересно, это из-за файла .htaccess?

вот коды .htaccess (wordpress classic):

RewriteEngine Off
#test
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# Use PHP 5.3
Action application/x-hg-php53 /cgi-sys/php53
AddHandler application/x-hg-php53 .php 

Ответы [ 5 ]

4 голосов
/ 11 сентября 2011

В зависимости от содержимого может потребоваться кодировать его с помощью urlencode()

$url = urlencode("http://foo");
echo "http://www.example.com/process.php?url=$url;

// prints 
http://www.example.com/process.php?url=http%3A%2F%2Ffoo
4 голосов
/ 11 сентября 2011

Как и для всех специальных символов в URL, вам нужно кодировать их.

0 голосов
/ 14 сентября 2013

Ваш хостинг-провайдер, HostGator, отклоняет запросы, где строка запроса содержит http:/ по соображениям безопасности.Для получения дополнительной информации см. этот поток.Чтобы обойти это, используйте частичные URL-адреса, поместите URL-адрес в хеш, примените некоторую кодировку или сделайте запрос POST-запросом и поместите URL-адрес в тело.

0 голосов
/ 11 сентября 2011

Если http кажется проблемой, попробуйте что-то вроде этого:

some.php?url=[s]something.com

А затем используйте php

$url = str_replace("[s]", "http://", $url);
$source = file_get_contents($url);
0 голосов
/ 11 сентября 2011

Вам необходимо заменить косую черту на %2F, например:
http://www.myadress.com/process.php?url=http:%2F%2Ffoo
Затем PHP преобразует ее обратно в http://:
echo $_GET["url"]; // echos <a href="http://foo" rel="nofollow">http://foo</a>

...