Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-使用isset($_文件),但它';它总是回归真实?_Php_Forms - Fatal编程技术网

php-使用isset($_文件),但它';它总是回归真实?

php-使用isset($_文件),但它';它总是回归真实?,php,forms,Php,Forms,我想知道,每次刷新页面时,我是否必须以某种方式清除$\u文件,或者为什么它会回想起变量已设置且不为空?当我第一次加载或重新加载页面时,通过使用print\r,页面显然至少是空的 <html> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="fi

我想知道,每次刷新页面时,我是否必须以某种方式清除$\u文件,或者为什么它会回想起变量已设置且不为空?当我第一次加载或重新加载页面时,通过使用print\r,页面显然至少是空的

<html>   
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>   
</html>

<?php 


if(isset($_FILES["file"]) && !empty($_FILES["file"])){
  echo 'You have just uploaded '. $_FILES["file"]["name"];

}
?>

文件名:


检查表单是否已发布,否则请在页面加载时输入您的代码

<?php 

if($_POST['submit']=="submit"){
if(isset($_FILES["file"]) && !empty($_FILES["file"])){
  echo 'You have just uploaded '. $_FILES["file"]["name"];

}
}
?>

action=“”
表示您将数据发布到当前页面,但发布数据后,当您刷新页面时,浏览器将询问您是否重新发布数据,如果您按“是”,则数据将再次发布


正确的解决方案是在发布后重定向到当前页面。

实际上,您正面临这个问题,因为一旦您通过选择文件提交,浏览器会缓存页面响应&当您通过
F5
右键单击->重新加载
刷新页面响应时,它只会返回缓存的结果。您可以通过一个虚拟的
GET
request重新加载旧代码来尝试它,它将正常工作。例如: 如果此页面的url为:
http://localhost/file.php
然后在地址栏中键入:
http://localhost/file.php/?dummy=abc
然后您会发现您的代码工作正常。。。因此,您不仅必须验证$\u文件,而且还必须验证$\u文件[“文件”][“名称”]是否正常

试试这个,你不会有任何麻烦

    <html>


<form action="" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>


</html>

<?php 


if(isset($_FILES["file"]) && !empty($_FILES["file"]["name"])){
  echo 'You have just uploaded '. $_FILES["file"]["name"];

}
?>

文件名:


不是问题的解决方案,但您只能使用
!empty()?