因此,在基本的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'
答案 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()
以停止执行当前脚本,否则它将继续执行!