【发布时间】:2019-06-23 00:23:51
【问题描述】:
当我按下提交按钮时,页面会重新加载,但不会将我发送到“upload.inc.php”文件。单击提交按钮后,我只是到达 index.php 文件,没有发生任何事情。
我复制了代码并在另一个文件中尝试了 html 部分,它在那里工作。因此,错误必须在 index.php 文件的其余部分中。我已经在“upload.inc.php”文件的开头添加了回声,它并没有改变任何东西。因此错误在 index.php 文件中的某个地方,但我没有找到它。我感谢你的帮助!找了4-5个小时没找到。。。
Index.php(html部分)
<form action="includes/upload.inc.php" method='post' enctype='multipart/form-data'>
<input type='file' name='file'>
<input type='hidden' name='userId' value="<?php echo $id; ?>" >
<button type='submit' name='submit'>UPLOAD</button>
</form>
Index.php(完整文件)
<?php
require "header.php";
require "includes/dbh.inc.php";
?>
<main>
<?php
if (isset($_GET['login'])) {
//Login Bereich der Hilfe suchenden
if ($_GET['login'] == "successHelpSeeker") {
echo "<p> Hello help seeker. </p>";
}
//Login Bereich der Helfenden
elseif ($_GET['login'] == "successHelper") {
echo "<p> Hello Helper.</p>";
}
//Login Bereich für beide gleich
//Profilbild
$id = $_SESSION['userId'];
$sqlImg = "SELECT * FROM profileimg WHERE userid='$id'";
$resultImg = mysqli_query($conn, $sqlImg);
$rowImg = mysqli_fetch_assoc($resultImg);
echo "<div>";
//existiert schon ein Profilbild? bei 0 ja bei 1 nein
if ($rowImg['status'] == 0) {
echo "<img src='uploads/profile".$id.".jpg'>";
} else{
echo "<img src='uploads/profiledefault.jpg'>";
}
echo "<p>".$row['userid']."</p>";
echo "</div>";
//enctype specifies how the form data should be encoded --> ?>
<form action="includes/upload.inc.php" method='enctype='multipart/form-data'>
<input type='file' name='file'>
<input type='hidden' name='userId' value="<?php echo $id; ?>" >
<button type='submit' name='submit'>UPLOAD</button>
</form>
<?php
}
if(isset($_SESSION['userId'])){
echo '<p>You are logged in!!</p>';
}
else{
echo '<p>You are logged out!</p>';
}
?>
</main>
通常它应该将选择的文件发送到upload.inc.php文件,但它只是重新加载页面而不发送信息。
非常感谢您的帮助!
上传.inc.php:
<?php
session_start();
require 'dbh.inc.php';
$id = $_POST['userId'];
if (isset($_POST['submit'])) {
$file = $_FILES['file'];
$fileName = $file['name'];
$fileTmpName = $file['tmp_name'];
$fileSize = $file['size'];
$fileError = $file['error'];
$fielType = $file['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$allowed = array('jpg', 'jpeg', 'png');
if (in_array($fileActualExt, $allowed)) {
if ($fileError === 0) {
if ($fileSize < 10000000) {
$fileNameNew = "profile".$id.".".$fileActualExt;
$fileDestination = '../uploads/'.$fileNameNew;
move_uploaded_file($fileTmpName, $fileDestination);
$sql = "UPDATE profilimg SET status=0 WHERE userid= '$id';";
$result = mysqli_query($conn, $sql);
header("Location: ../index.php?uploadsuccess");
}
} else {
echo "Your file is too big. Please upload a file which isn't bigger than 10 mb.";
}
} else {
echo "There was an error uploading your file.";
}
} else {
echo "Please upload only jpg, jpeg, png or pdf files.";
}
疯狂的是,我将“动作”更改为一个新文件,其中几乎没有任何内容。提交按钮仍然没有将我发送到新文件,只是重新加载页面。这可能是与我正在使用的会话有关的问题吗? :O
【问题讨论】:
-
你的PHP部分的HTML代码不正确,
method='enctype='multipart/form-data',缺少方法,是错字吗? -
我看不出有任何方式无法提交给
includes/upload.inc.php。也许includes/upload.inc.php重定向回index.php......但你没有包含代码。创建一个minimal reproducible example 来追踪问题所在 - 简单的事情就是输出一个静态字符串开始,然后在此基础上构建。 -
感谢这个想法。我将创建一个示例来追踪错误!无论如何,我添加了我的 upload.inc.php 文件的代码。当我发现错误时,我会更新我的帖子。
标签: php html button input submit