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(「マイドメインからではない」)を返します。

明らかな構文エラーやその他のロジックの問題がありますか?

私の新しいページ(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をオンにします。実際には、次のような警告が表示されます。これは、(特にミニテックの回答と組み合わせると)役立つはずです。

警告:preg_match()[function.preg-match]:不明な修飾子'/' in

于 2012-04-06T14:25:20.740 に答える