PHP获取动态IP并记录到文件(改进版)
前面的部分参见PHP获取动态IP并记录到文件 | arya142!
最近公司换了个千兆路由器,闲着蛋疼把公司的动态IP也弄上去了。本来复制粘贴一下弄好了,又觉得不想记网址,所以想整到一个文件里。之前的一些小问题也改了改。文件中记录条目的顺序啥的懒得弄。
2021年8月13日二改:发现不知道哪里有问题会导致数据错误,虽然只出现过一次,但还是改了一下结构,顺便加了一些代码。
传入url形式: https://www.***.com/test.php?ddnsurl=****.gicp.net&ddnsip=111.111.111.111
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
<?php if(is_array($_GET)&&count($_GET)>0) { if(isset($_GET["ddnsip"])&&isset($_GET["ddnsurl"])) { $ddnsip = $_GET['ddnsip']; $ddnsurl = $_GET['ddnsurl']; $ddnstext = $ddnsurl . " - " . $ddnsip . " - [".date('Y-m-d H:i:s')."]<br>\n"; $fp = file("ddnsip.htm"); $file = fopen("ddnsip.htm","a"); if(flock($file , LOCK_EX)) { for ($x=(count($fp)-1);$x>=0;$x--) { if(substr($fp[$x],0,strpos($fp[$x]," -")) == $ddnsurl) { if($ddnsip != substr($fp[$x],strpos($fp[$x]," -")+13,strrpos($fp[$x]," -")-strpos($fp[$x]," -")-13)) { fwrite($file,$ddnstext); echo("ddnsip updated<br>"); } break; } } if($x==-1) { fwrite($file,$ddnstext); echo("ddnsip added<br>"); } } flock($file , LOCK_UN); fclose($file); ############shift if lines max########### $fp = file("ddnsip.htm"); if(count($fp)>50) { while(count($fp)>50){array_shift($fp);} $file = fopen("ddnsip.htm","w"); if(flock($file , LOCK_EX)) { for($n=0;$n<count($fp);$n++) { fwrite($file,$fp[$n]); } flock($file , LOCK_UN); } fclose($file); echo("ddnsip.htm shifted<br>\n"); } } else echo("parameters is not set<br>\n"); } else echo("no parameters<br>\n"); echo("contents of ddnsip.htm:<br>\n——————————————————————————————<br>\n"); $fp = file("ddnsip.htm"); for($n=count($fp)-1;$n>=0;$n--) { echo($fp[$n]); } ?> |