找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 63|回复: 9

求助一段php代码

[复制链接]

338

主题

3926

回帖

8978

积分

论坛元老

积分
8978
发表于 2014-9-23 05:22:23 | 显示全部楼层 |阅读模式
本帖最后由 Ruclinux 于 2014-9-24 01:31 编辑
[ol]
  •     $aip = comment_author_IP(); /** 得到ip地址 */
  •     $txt = file_get_contents("../spam.log"); /** 对比ip地址是否存在文件内,防止重复输入 */
  •     if (strpos($txt,$aip) === false) /** 如果文件内找不到这个ip地址 */
  •     {
  •     $handle = fopen("../spam.log","a+"); /** 打开文件并得到一个句柄,据说a+是写入? */
  •     fwrite($handle,$aip."/n"); /** 将获得的ip地址添加到文件中 */
  •     }
  •     fclose($handle); /** 关闭句柄 */
  • [/ol]复制代码

    以上的是我写的一段代码,但不知道有没有写对,初学者,高手别见笑. 我是在根目录下创建一个spam.log文件用来保存获取到的IP地址,不知道代码对不对,流程对不对.好像没办法获得ip 谢谢大家了.

    谢谢所有回复的朋友,问题解决了. 问题出在 $aip = comment_author_IP(); 这行代码,不知道为什么在这里的 comment_author_IP(); 没办法获得IP地址,但它默认的就可以. 将 $aip = comment_author_IP(); 改成 $aip = get_comment_author_IP(); 就可以了.

  • 回复

    使用道具 举报

    2

    主题

    287

    回帖

    632

    积分

    高级会员

    积分
    632
    发表于 2014-9-23 07:54:49 | 显示全部楼层
    你这个函数没有定义
    comment_author_IP()
    回复

    使用道具 举报

    338

    主题

    3926

    回帖

    8978

    积分

    论坛元老

    积分
    8978
     楼主| 发表于 2014-9-23 07:56:23 | 显示全部楼层

    mulao 发表于 2014-9-23 07:54

    你这个函数没有定义
    comment_author_IP()

    comment_author_IP()
    这个是wordpress的内置函数,我的代码就是跟着这个下面的.
    回复

    使用道具 举报

    338

    主题

    3926

    回帖

    8978

    积分

    论坛元老

    积分
    8978
     楼主| 发表于 2014-9-23 07:54:00 | 显示全部楼层
    现在写入的文本里全都是空白符.没有任何文字.
    回复

    使用道具 举报

    127

    主题

    434

    回帖

    1335

    积分

    金牌会员

    积分
    1335
    发表于 2014-9-23 07:57:59 | 显示全部楼层
         $fp = fopen ($filename, a);
         fwrite($fp, $info);
    回复

    使用道具 举报

    338

    主题

    3926

    回帖

    8978

    积分

    论坛元老

    积分
    8978
     楼主| 发表于 2014-9-23 08:03:09 | 显示全部楼层

    Polymer_dg 发表于 2014-9-23 08:03

    $fp = fopen ($filename, a);
         fwrite($fp, $info);

    这个和我那个没有什么区别吧.
    回复

    使用道具 举报

    180

    主题

    1719

    回帖

    4080

    积分

    论坛元老

    积分
    4080
    发表于 2014-9-23 08:06:24 | 显示全部楼层
    你的代码没问题。
    我没有comment_author_IP这个函数,自己写了个getIP来代替你的函数。

    function getIP(){
    global $ip;
    if (getenv("HTTP_CLIENT_IP"))
    $ip = getenv("HTTP_CLIENT_IP");
    else if(getenv("HTTP_X_FORWARDED_FOR"))
    $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if(getenv("REMOTE_ADDR"))
    $ip = getenv("REMOTE_ADDR");
    else $ip = "Unknow";
    return $ip;
    }

    $aip = getIP();
    echo $aip;
    $txt = file_get_contents("spam.log");
    if (strpos($txt,$aip) === false)
    {
    $handle = fopen("spam.log","a+");
    fwrite($handle,$aip."\n");
    fclose($handle);
    }

    本地测试没问题,
    回复

    使用道具 举报

    2

    主题

    287

    回帖

    632

    积分

    高级会员

    积分
    632
    发表于 2014-9-23 08:03:00 | 显示全部楼层
    一步一步排查呗
    先确定comment_author_IP()能不能获取ip
    如果可以
    指定一个ip
    看能不能写入
    blabla
    回复

    使用道具 举报

    3

    主题

    129

    回帖

    293

    积分

    中级会员

    积分
    293
    发表于 2014-9-23 08:27:36 | 显示全部楼层
    换行是\n, 不是/n

    还有个很大问题, file_get_contents配strpos处理太糙.

    如果访客IP是1.2.3.4
    你的文件里有一行是11.2.3.4
    猜猜会发生什么?
    回复

    使用道具 举报

    87

    主题

    573

    回帖

    1471

    积分

    金牌会员

    积分
    1471
    发表于 2014-9-24 02:27:00 | 显示全部楼层
    本帖最后由 zhuzhenyu 于 2014-9-23 08:59 编辑
    [ol]
  •     $aip = comment_author_IP(); /** 得到ip地址 */
  •     $txt = file_get_contents("../spam.log"); /** 对比ip地址是否存在文件内,防止重复输入 */
  •     if (strpos($txt,$aip) === false) /** 如果文件内找不到这个ip地址 */
  •     {           file_put_contents('../spam.log',$aip,FILE_APPEND);
  •     }[/ol]复制代码
    你当是写C呢,除了切割大文件或者写入大文件和写流的时候使用fopen,PHP中简单文件操作不要使用fopen
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-6-10 13:10 , Processed in 0.021774 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表