0

エラー(400、404、403など)がある場合は、phpスクリプトを使用して、何が試行されているかをメールで通知します。

400エラーで、「from」と「to」にドメイン名が含まれていませんでしたが、別のドメイン名が含まれていることに気付きました。これは私が使用するコードの一部です。

PHPコード:

$http_host = $_SERVER["HTTP_HOST"]; 
$http_host = str_replace("www.", "", $http_host); 
$from = "From: webmaster@" . $http_host . "\r\n"; 
$to = "From: webmaster@" . $http_host . "\r\n";  

変数$http_hostには、他のドメイン名がありました。幸い、メールが返送されたので、問題に気づきました。これがWebアクセスログのエントリです

94.102.51.246 - - [23/Feb/2013:16:17:49 +1100] "GET http://24x7-allrequestsallowed.com/?...RWJWS_FA%40FQN HTTP/1.1" 400 2815 "-" "Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0"

$_SERVER["HTTP_HOST"]'24x7-allrequestsallowed.com'に評価されたようです

これがURLとしてどのように解析されたかは不思議ですが、$ _SERVER["HTTP_HOST"]が「適切な」ドメイン名に設定されていないことに不安を感じています。

4

1 に答える 1

2

変化する:

 $http_host = $_SERVER["HTTP_HOST"]; 
 $http_host = str_replace("www.", "", $http_host); 

...に...

 $http_host = $_SERVER["SERVER_NAME"]; 
 $http_host = str_replace("www.", "", $http_host); 

「現在のスクリプトが実行されているサーバー ホストの名前。スクリプトが仮想ホストで実行されている場合、これはその仮想ホストに定義された値になります。」を返します。

ソース: http://php.net/manual/en/reserved.variables.server.php

于 2013-02-26T12:14:59.880 に答える