1

我有一个客户。假设他们的域是 www.mydomain.com。

我们正在 www.mydomain.com/newsection 创建一个新页面。

在 /newsection 页面上,仅当用户之前在主站点上时,客户才想添加一个链接,上面写着“返回主站点”(www.mydomain.com)。

因此,我设置了这样的 PHP 代码片段:

<?php
$referral = $_SERVER['HTTP_REFERER'];
if (preg_match('/http://www.mydomain.com/', $referral)) {
echo "from My Domain";
} else {
echo "not from My Domain";
}
?>

但是,即使用户来自 mydomain.com,这始终返回 false(“不是来自 My Domain”)。

是否有任何明显的语法错误或其他我没有得到的逻辑问题?

我的新页面 (www.mydomain.com/newsection) 是否仍在该主域上?

4

3 回答 3

2

表达式中的斜杠需要转义,因为它们也是分隔符。或者,您可以选择另一个分隔符:

preg_match('~http://www\.mydomain\.com~', $referral)

注意我还转义了.s,它们是正则表达式中的特殊字符。它们不会破坏正则表达式,但它们匹配任何字符——可能不是你想要的。

于 2012-04-06T14:21:25.300 回答
1

你可以只使用strpos

if (strpos($referral, 'http://www.mydomain.com') !== false) {
于 2012-04-06T14:22:44.693 回答
0

开发时开启error_reporting。您实际上收到了类似以下警告的信息,这应该对您有所帮助(尤其是结合 minitech 的回答):

警告:preg_match() [function.preg-match]: Unknown modifier '/' in

于 2012-04-06T14:25:20.740 回答