我已经创建了一个文件目录系统。这里有一个函数来创建目录,我想阻止用户在../即在一个文件夹中创建目录,因此我创建了一个带有strpos的if语句来搜索它。这是代码:
<div class="FormElement">
<form method="post">
<input type="text" name="newFolder" id="newFolder" class="newFolder"/>
<input type="submit" value="Create">
</form>
<?php
$uniqueUserPath = $_SESSION['userPath'];
$folderName = $_POST['newFolder'];
$makeFolder = $uniqueUserPath . "/" . $folderName;
// mkdir($uniqueUserPath . "/" . $folderName);
if (strpos($folderName, "../") == true) {
echo 'there is a slash.';
} else {
mkdir($uniqueUserPath . "/" . $folderName);
echo 'there isnt a slash';
}
?>
</div>
如果你在那里键入“../”它stil echo没有斜杠,更重要的是它会开始在users文件夹之外的文件夹中创建目录。
任何帮助将不胜感激 亲切的问候,
答案 0 :(得分:1)
strpos($folderName, "../") == true
必须为strpos($folderName, "../") !== false
原因是因为如果找到匹配项,则返回匹配项的字符索引(例如5),然后将其评估为true,因为5 == true
为真。
如果没有匹配则返回布尔值false
,因此你应该寻找它。