PHP не будет работать по какой-то причине - PullRequest
0 голосов
/ 08 сентября 2011

Ну, я пытаюсь получить iframe из URL такого типа: http://mydomain.com/frame.php?q=http://someotherdomain.com

По какой-то причине я получаю ошибку сервера с этим кодом и не могу понять, почему. Кто-нибудь видит что-то не так?

Спасибо!

<?php

$q = $_GET('q');

function getTitle($Url){
        $str = file_get_contents($Url);
        if(strlen($str)>0){
                preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
                return $title[1];
        }
};

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo getTitle($q) ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>

<?php echo "<iframe src='".$q."' style='width:100%;height:100%;border:0;'></iframe>" ?>

</body>
</html>

Ответы [ 3 ]

3 голосов
/ 08 сентября 2011

Ну, для начала, это

$q = $_GET('q');

должно быть

$q = $_GET['q'];

ОБРАТИТЕ ВНИМАНИЕ
Этот метод выиспользование крайне небезопасно.Представьте, что злоумышленник делает следующий запрос.

http://mydomain.com/frame.php?q=..%2F..%2F..%2F..%2Fetc%2Fapache2%2Fhttpd.conf

Предоставляя различные значения q, злоумышленник может потенциально прочитать любой файл, читаемый пользователем веб-сервера.

1 голос
/ 22 ноября 2012

Попробуйте это:

<?php

$URL = parse_url($_SERVER['REQUEST_URI'];

/* make sure the title is the first parameter and only param passed, otherwise include a ltrim to get rid of everything starting with & */
$q = rtrim('=', $URL['query']);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php=$q?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body style="margin: 0;">

<?php='<iframe src="' . $whateverURL . '" style="width: 100%; height: 100%; border: 0px;" />'?>

</body>
</html>
0 голосов
/ 08 сентября 2011

взгляните на ошибку в журнале apache, которая обычно находится по адресу:

tail -f /var/log/apache2/error.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...