ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルでの検索キーワードの取得に関する問題
PHPでの検索キーワード取得の問題
検索キーワードを取得するためのコードをインターネット上で見つけました。テストしたところ、コードが無効でしたか、バグがありましたか?
//検索元のキーワードを取得します関数get_keyword($url,$kw_start)
{
$start=stripos($url,$kw_start);
$url=substr($url,$start+strlen($kw_start));
$start=stripos($url,'&');
if ($start>0)
{
$start=stripos($url,'&');
$s_s_keyword=substr($url,0,$start);
}
その他
{
$s_s_keyword=substr($url,0);
}
$s_s_keyword を返す;
}
$url=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'';//受信 URL を取得します。
$search_1="google.com.hk" //q= utf8
$search_2="baidu.com" //wd= gbk
;
$search_3="yahoo.cn"; //q= utf8$search_4="sogou.com" //query= gbk
;
$search_5="soso.com" //w= gbk;
$search_6="bing.com"; //q= utf8$search_7="youdao.com" //q= utf8
$search_8="so.com" //q= utf8
$google=preg_match("/b{$search_1}b/",$url);//インバウンド判定用のマッチング状況を記録します。
$baidu=preg_match("/b{$search_2}b/",$url);
$yahoo=preg_match("/b{$search_3}b/",$url);
$sogou=preg_match("/b{$search_4}b/",$url);
$soso=preg_match("/b{$search_5}b/",$url);
$bing=preg_match("/b{$search_6}b/",$url);
$youdao=preg_match("/b{$search_7}b/",$url);
$so=preg_match("/b{$search_8}b/",$url);
$s_s_keyword="";
// $bul=$_SERVER['HTTP_REFERER'];
$bul=$_REQUEST["カムリンク"];
//パラメータなしでドメイン名を取得します
preg_match('@^(?:http://)?([^/]+)@i',$bul,$matches);
$burl=$matches[1];
//ドメイン名設定の一致
$curl="www.hcyf07.com";
if($burl!=$curl){
if ($google)
{//グーグルより
$s_s_keyword=get_keyword($url,'q=');//キーワードの前の文字は「q=」です。
$s_s_keyword=urldecode($s_s_keyword);
$urlname="Google:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
//$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
}
else if($baidu)
{//百度より
$s_s_keyword=get_keyword($url,'wd=');//キーワードの前の文字は「wd=」です。
$s_s_keyword=urldecode($s_s_keyword);
$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
$urlname="百度:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
else if($yahoo)
{//Yahooより
$s_s_keyword=get_keyword($url,'q=');//キーワードの前の文字は「q=」です。
$s_s_keyword=urldecode($s_s_keyword);
//$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
$urlname="Yahoo:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
else if($sogou)
{//ソウゴウより
$s_s_keyword=get_keyword($url,'query=');//キーワードの前の文字は「query=」です。
$s_s_keyword=urldecode($s_s_keyword);
$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
$urlname="総合:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
else if($soso)
{//ソソより
$s_s_keyword=get_keyword($url,'w=');//キーワードの前の文字は「w=」です。
$s_s_keyword=urldecode($s_s_keyword);
$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
$urlname="そうそう:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
else if($bing)
{//Bing より
$s_s_keyword=get_keyword($url,'q=');//キーワードの前の文字は「q=」です。
$s_s_keyword=urldecode($s_s_keyword);
//$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
$urlname="Bing:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
else if($so)
{//360 から
$s_s_keyword=get_keyword($url,'q=');//キーワードの前の文字は「q=」です。
$s_s_keyword=urldecode($s_s_keyword);
//$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
$urlname="360:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
else if($youdao)
{//Youdao より
$s_s_keyword=get_keyword($url,'q=');//キーワードの前の文字は「q=」です。
$s_s_keyword=urldecode($s_s_keyword);
//$s_s_keyword=iconv("GBK","UTF-8",$s_s_keyword);//エンジンはgbkです
$urlname="ヨウダオ:";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
その他{
// $urlname=$burl;
$urlname="直接アクセス";
$s_s_keyword="";
$_SESSION["urlname"]=$urlname;
$_SESSION["s_s_keyword"]=$s_s_keyword;
}
$s_urlname=$urlname;
$s_urlkey=$s_s_keyword;
}
その他{
$s_urlname=$_SESSION["urlname"];
$s_urlkey=$_SESSION["s_s_keyword"];
}
------解決策---------------------
エラーメッセージはありますか?
------解決策---------------------
あなたのコードは N 年以上前に書かれました。
$_SERVER['HTTP_REFERER'] は https:// ウェブサイトを取得できません。
セキュリティ上の理由から、現在、ほぼすべての検索エンジンは http:// ではなく https:// を使用しています。