【发布时间】:2020-10-08 05:34:24
【问题描述】:
我在 php 中创建了一个用于文件上传的表单,但是当添加文件并刷新页面时,用户仍然可以看到之前操作的结果。我只创建了一个简单的表单,如下所示:
<form method="POST" action="add-photo.php" enctype="multipart/form-data">
<div class="form-group">
<label for="form-control-file">Dodawanie zdjęcia</label>
<input type="file" name="file" class="form-control-file" id="form-control-file" required>
</div>
<button class="btn btn-lg btn-primary" name="submit" type="submit">Dodaj zdjęcie</button>
</form>
提交表单时,我使用 php 代码:
if (isset($_POST['submit'])) {
$photo = new Photo();
$photo->setFile($_FILES['file']['tmp_name']);
$photo->setFileName($_FILES['file']['name']);
if ($photo->hasCorrectFileExtension() && $photo->hasCorrectSize()){
$photo->uploadPhoto();
}
header('add-photo.php');
}
我创建了名为 Photo 的类,我有函数 hasCorrectFileExtension() 和 hasCorrectSize() 在上传前检查文件。
public function hasCorrectFileExtension()
{
if (in_array(pathinfo($this->fileName, PATHINFO_EXTENSION), $this->extensions)) {
return true;
} else {
$_SESSION["errors"] = "Niepoprawne rozszerzenie przesyłanego pliku!";
return false;
}
}
public function hasCorrectSize(){
if (filesize($this->path . $this->fileName) < 100000000)
return true;
else
$_SESSION["errors"] = "Zbyt duży rozmiar przesyłanego pliku!";
return false;
}
public function uploadPhoto()
{
move_uploaded_file($this->file, $this->path . $this->fileName);
$_SESSION["success"] = "Plik został przesłany!";
}
在 HTML 代码中,我创建了 PHP 脚本来打印警报或成功消息。
<?php
if(isset($_SESSION["errors"])){
echo '<div class="alert alert-danger" role="alert">';
echo $_SESSION["errors"];
echo '</div>';
unset($_SESSION["errors"]);
}
else if (isset($_SESSION["success"])){
echo '<div class="alert alert-success" role="alert">';
echo 'Zdjęcie zostało wysłane!';
echo '</div>';
unset($_SESSION["success"]);
}
?>
在表单提交上传后总结工作正常并且警报/成功消息正确显示但是当我刷新页面后我仍然看到警报/成功消息尽管我使用了unset($_SESSION["errors")/unset($_SESSION["success"])
【问题讨论】:
-
header('add-photo.php');不正确 - 我认为您应该尝试header('Location: add-photo.php'); -
我试过了,但现在我什至在刷新页面之前都没有看到警报/成功消息
标签: php