ホームページ  >  記事  >  バックエンド開発  >  テキスト データベースには IP が記録されます。IP が既に存在する場合は追加されません。デバッグ エラーが常に発生します。

テキスト データベースには IP が記録されます。IP が既に存在する場合は追加されません。デバッグ エラーが常に発生します。

WBOY
WBOYオリジナル
2016-06-13 13:11:33809ブラウズ

テキスト データベースには IP が記録されます。IP が既に存在する場合は追加されません。専門家に相談してください。
ファイル 1:

$now_time=time ();//現在時刻
$ipfile="./images/ip.txt";//テキストデータ保存ファイル
$old=ファイル($ipfile);
$num=count($ old);
for ($i=0;$i<$num;$i++){
list($txtusre,$txtzzip,$) txttime)=explode("|",$old[$i] ; else{

//存在しない場合は記録します
if (get_magic_quotes_gpc()) {
if (!$fp = fopen($ipfile, "a+")) {
die(" ファイルの作成に失敗しました。権限があるか確認してください。");
}
$line = $now_time."|"。 $REMOTE_ADDR."|".$now_time."rn";
$old= file($ipfile);
$num=count($old);
$fp=fopen($ipfile, " w");
flock($fp,2);
if( $num<100){//100 レコードのみを記録します。100 レコードを超えると、最後の 100 レコードより前のレコードが削除されます
fputs($fp,$line);
for ($i=0;$i<$num; $i++){
fputs($fp,$old[$i]);
}}else{
fputs($fp,$line);
for($i=0;$ i<99;$i++){
fputs($fp,$old[$i] );
}}
fclose($fp);
}}}
?>


テキスト データ ファイル ip.txt:
1348308290|127.0 .0.1|1348308290
1348308289|127.0.0.1|1348308289
1348308275|127. 0.0.2|1348308275


レコードが 1 つしかない場合、 IPはすでにあります存在し、存在しない IP を追加し続けることができます

レコードが 2 つある場合、IP が既に存在すると判断して重複した IP を記録することは無効になります。
望ましい効果は、訪問者の IP データ ファイルが存在しない場合、エントリを追加することです。存在する場合は、追加しないでください。


専門家による修正にご協力ください。ありがとうございます。 🎜>


-----解決策----------------------------

変数 $REMOTE_ADDR の値を自分で取得する必要があります。
$now_time=time();//この行は削除できます。

------解決策------------------

PHP コード $ip = $_SERVER['REMOTE_ADDR']; $time = 時間(); $ipfile = "./images/ip.txt"; $s = ファイル_get_contents($ipfile); if(strstr($s, "|$ip|")) return; //存在すれば終了 $ar = preg_split("/[rn]+/", $s); $ar = array_slice($ar, 0, 99) //最初の 99 個の項目を取得します。 $ar[] = "$time|$ip|$time"; // 新しいデータを追加します file_put_contents($ipfile, join(PHP_EOL, $ar)) //ファイルを書き戻す

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。