php无限遍历目录-修正版

最近在能php目录操作,搞了一个目录无限遍历:

使用的函数有:

isset()判断某个变量是否定义

chdir() 将当前目录改变为指定的目录。

opendir() 打开目录。

readdir()读取目录。

getcwd()。获取当前目录。

还用到了for  if  GET传值 大概就这些东东:

下面是代码:

 
   
 
   
<?php if(isset($_GET['id']))//判断是否传值

{ $s=str_replace(' ','+',$_GET['id']); $s=base64_decode($s);//接受传递的值 值一般是要打开的目录的绝对路劲

        chdir($s);//切换到要打开的目录

 } $a=opendir('.');//打开当前目录

while(false!==($c=readdir($a)))//循环遍历目录内容的文件名

{ if(is_dir($c))//判断是目录还是文件

 { if($c=='.') { } else { if($c=='..') { $w=base64_encode(substr(getcwd(),0,strrpos(getcwd(),'\\')));//当前路径加上目录名 就是目录的绝对路径

           echo "上一级"."<a href='6.php?id=$w'>打开</a><br />";//当点击打开时将要打开的绝对路径传递出去 用chdir 切换到要打开的目录下

           }else { $w=base64_encode(getcwd().'\\'.$c);//当前路径加上目录名 就是目录的绝对路径

           echo "$c"."<a href='6.php?id=$w'>打开</a><br />";//当点击打开时将要打开的绝对路径传递出去 用chdir 切换到要打开的目录下

 } } } else { echo "$c 不是目录<br />"; } } ?>
 
   

 

 

 比上一次代码 修正了 。  和 。。  两个系统目录问题 修正了  get传值  中午错误问题   修正方法  。  和。。  通过 if 判断修正    get 传值使用的是 base64_encode   base64_decode  编码和解码  在修改时 发现 get 传值 中如果有+号  在获取时会变成空格  使用替换函数解决。

大家如果有什么建议可以提出来!!谢谢!!

你可能感兴趣的:(PHP)