我有一个小脚本,应该获取脚本添加到当前页面的元标题。问题是,它在几个测试页面上工作正常,但不在我的CMS中。它会循环直到那里死亡,我无法访问我的服务器上的任何页面,直到我完全重新启动apache并关闭脚本。
是的,有人可以看看吗?这真是太棒了,因为我使用谷歌数小时确定,我找到了X线程和页面,但从来没有解决这种特殊的循环效果。<?php
function curPageURL() {
$pageURL = 'http';
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
<?php
if (!isset($_GET['ignore']))
{
$url = curPageURL();
$data = implode("", file("$url?ignore=this"));
preg_match ("/<title>([^`]*?)<\/title>/", $data, $match);
$urltitle = $match[1];
}
?>
<?echo $urltitle;?>
答案 0 :(得分:3)
$_SERVER["REQUEST_URI"]
还可以包含GET参数:
mysite.com?param1=1¶m2=2
然后你尝试附加一个字符串?ignore=this
,这样你就得到了
mysite.com?param1=1¶m2=2?ignore=this
由PHP翻译成像
这样的变量param1 = '1'
param2 = '2?ignore=this'
您必须在$ url变量
中检查?
符号
答案 1 :(得分:0)
我正在使用此功能获取当前页面网址:
function currentURL() {
$protocol = stripos($_SERVER['SERVER_PROTOCOL'], 'https') === FALSE ? 'http' : 'https';
$host = $_SERVER['SERVER_NAME'];
$port = $_SERVER["SERVER_PORT"];
$query = $_SERVER['REQUEST_URI'];
return $protocol.'://'.$host.($port != 80 ? ':'.$port : '').$query;
}
但你的问题来自这里:
if (!isset($_GET['ignore']))
{
$url = curPageURL();
$data = implode("", file("$url?ignore=this"));
/* ... */
}
这适用于“测试页”,但CMS可以使用网址重写,可以导致$_GET['ignore']
变量丢失:如果您已经有其他GET变量例如。
您应该查看.htaccess
文件,或阅读CMS文档以了解可以改变您的网址。
无论如何,似乎你正在构建一些不稳定的代码,这只是为了得到页面标题。我很确定你有另一种方法可以轻松地使用你的CMS。