如果文件已存在,如何使表单重新调整出错,以防止文件被编辑或覆盖?
P粉949848849
P粉949848849 2023-09-13 22:06:46
0
1
613

如果文件已存在,如何使表单重新调整出错以防止文件被编辑或覆盖?

如果文件已存在,我不确定如何编辑此代码以重新调整错误,以防止文件被编辑或覆盖。

<?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粉949848849
P粉949848849

全部回复(1)
P粉895187266
  1. 当前,当 $name 已经存在时,你的代码将使用重命名的目标文件名来保存数据,只需更改这部分,使其显示错误并通过 exit() 结束执行;

  2. 另一方面,为什么您的代码会在 else 块中回显“成功发布”?您应该告诉用户并未输入所有必需的数据,并要求他/她重新提交。

  3. 顺便说一句,您允许用户输入一些内容,然后另存为 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();     
} 
?>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!