Heim > Fragen und Antworten > Hauptteil
Wie mache ich einen Fehler bei der Größenänderung des Formulars, wenn die Datei bereits vorhanden ist, um zu verhindern, dass die Datei bearbeitet oder überschrieben wird?
Ich bin mir nicht sicher, wie ich diesen Code bearbeiten soll, um den Fehler erneut zu beheben und zu verhindern, dass die Datei bearbeitet oder überschrieben wird, wenn die Datei bereits vorhanden ist.
<?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(); } ?>