PHP将memberid与目录匹配

时间:2017-03-04 06:25:50

标签: php mysql

因此,在基本的php帐户系统中,当用户注册时,我会自动为该用户创建文件夹和文件。

'1000'和'954V045'只是混淆,其中memberID位于中间并且自动递增,因此它对每个帐户都是唯一的。

mkdir("1000" . $id . "954V045");
        $myfile = fopen("1000" . $id . "954V045/usersfile.php", "w") or    die("Unable to open file!");

现在我遇到问题的下一步是,每个文件必须只允许其帐户持有人打开,或者任何拥有帐户的人都可以打开任何其他人档案。

所以我需要在用户目录中每个文件顶部的代码类似于会话成员ID不等于目录而不是重定向回通用页面。

所以memberID为32的人应该只能访问目录100032954V045中的文件。而memberID为42的人应该只能访问目录100042954V045中的文件。

if($_SESSION['memberID'] != ) {
 header ('Location: memberpage.php');
}

我猜答案会涉及到basename( DIR ),但我不知道如何剥离'1000'和'954V045'

1 个答案:

答案 0 :(得分:0)

这样做:

<?php
   $parent = trim(strrchr(__DIR__, DIRECTORY_SEPARATOR), DIRECTORY_SEPARATOR);//stores folder name
   $id = substr($parent, 4, -7);
   // 4 = length of "1000"
   // 7 = length 954V045, it should be negative always!
   if($_SESSION['memberID'] != $id) {
        header ('Location: memberpage.php');
        exit();//do not forget to add this
    }
?>

substr中的否定第三个参数省略了字符串末尾的许多字符。在此处阅读更多相关信息:http://php.net/manual/en/function.substr.php

您还需要在标题之后放置exit()以停止执行当前脚本,否则它将继续执行!