如果文件已存在,如何使表单重新调整出错以防止文件被编辑或覆盖?
如果文件已存在,我不确定如何编辑此代码以重新调整错误,以防止文件被编辑或覆盖。
<?php if( $_POST["potus"] || $_POST["data"] ){ $name = $_POST['potus']; $data = $_POST['data']; static $ext = ".php"; if(file_exists($name)){ //rename exist file with random string $n = rand(); $filename = $name.$n.$ext; } else { $filename = $name.$ext ; // Creates file if it doesn't exist } file_put_contents($filename , $data); } else { echo "successfully posted"; exit(); } ?>
P粉8951872662023-09-14 15:59:48
当前,当 $name 已经存在时,你的代码将使用重命名的目标文件名来保存数据,只需更改这部分,使其显示错误并通过 exit() 结束执行;
另一方面,为什么您的代码会在 else 块中回显“成功发布”?您应该告诉用户并未输入所有必需的数据,并要求他/她重新提交。
顺便说一句,您允许用户输入一些内容,然后另存为 xxxx.php,这可能是一个严重的安全威胁!!!请再考虑一下是否要这样做它(或不是)
对于上面的(1)和(2),请将代码修改为:
<?php if( $_POST["potus"] || $_POST["data"] ){ $name = $_POST['potus']; $data = $_POST['data']; static $ext = ".php"; // Checking the file exists with extn .php if(file_exists($name.$ext)){ echo "<script>alert('Filename already exists ! Cannot proceed !');history.go(-1);</script>"; exit(); //$n = rand(); //$filename = $name.$n.$ext; } else { $filename = $name.$ext ; // Creates file if it doesn't exist } file_put_contents($filename , $data); } else { //echo "successfully posted"; echo "You have not entered all the required data ! Please re-submit the data"; exit(); } ?>