php警告的原因

php中文网
发布: 2016-06-06 20:20:47
原创
1827人浏览过

<code><form action="index.php" method="post">
    <input type="text" name="user"/>
    <input type="text" name="password"/>
    <input type="submit" value="submit"/>
</form></code>
登录后复制
<code><?php
    $user=trim($_POST['user']);
    $password=trim($_POST['password']);

    if(!$user || !$password){
        echo 'please make sure no empty input';
        exit;
    }
    //write to test.txt
    $handle=fopen('test.txt','rb+');
    if($handle){
        while(($buffer=fgets($handle))!==false){
            preg_match('/.*:(.*?)-/',$buffer,$array);
            if($array[1]===$user){
                echo 'user exist';
                exit;
            }
            fwrite($handle,'$user:'.$user.'------'.'$password:'.$password."\r\n");
            fclose($handle);
        }
    }else{
        echo 'fail to open file';
    }

?>


</code>
登录后复制

写的这个程序是向txt写入文字。可以实现功能,但会有警告。
warning: fgets(): 5 is not a valid stream resource in c:\xampp\htdocs\index.php on line 13
这个警告什么意思。怎么消除?

回复内容:

<code><form action="index.php" method="post">
    <input type="text" name="user"/>
    <input type="text" name="password"/>
    <input type="submit" value="submit"/>
</form></code>
登录后复制
<code><?php
    $user=trim($_POST['user']);
    $password=trim($_POST['password']);

    if(!$user || !$password){
        echo 'please make sure no empty input';
        exit;
    }
    //write to test.txt
    $handle=fopen('test.txt','rb+');
    if($handle){
        while(($buffer=fgets($handle))!==false){
            preg_match('/.*:(.*?)-/',$buffer,$array);
            if($array[1]===$user){
                echo 'user exist';
                exit;
            }
            fwrite($handle,'$user:'.$user.'------'.'$password:'.$password."\r\n");
            fclose($handle);
        }
    }else{
        echo 'fail to open file';
    }

?>


</code>
登录后复制

写的这个程序是向txt写入文字。可以实现功能,但会有警告。
warning: fgets(): 5 is not a valid stream resource in c:\xampp\htdocs\index.php on line 13
这个警告什么意思。怎么消除?

你这个写法就由问题,
把 fgets 写在 while 条件里,第一次读还是正常,但是正常读了之后你在 while 里把 $handle 就 close 了,那循环之后再次判断 while 的时候 fgets 读一个已经关闭的文件资源 当然就报这个警告了……

把 fclose 放在 while 之外

ThinkPHP v6.0框架源码
ThinkPHP v6.0框架源码

主要考虑到新的架构调整变化较大以及不支持无缝升级这两大原因,官方正式宣布ThinkPHP5.2RC版本的版本号由原来的5.2变更为6.0(这一规划此前在核心成员中曾多次提及),不过PHP版本要求暂时没有变化(依然还是7.1+)。

ThinkPHP v6.0框架源码 4125
查看详情 ThinkPHP v6.0框架源码

fclose($handle);
把这个放到while外面,你读了一次就关闭了,当然报错了

立即学习PHP免费学习笔记(深入)”;

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号