最近在能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 传值 中如果有+号 在获取时会变成空格 使用替换函数解决。