【问题标题】:Why does the submit button just reload my page instead of sending the information?为什么提交按钮只是重新加载我的页面而不是发送信息?
【发布时间】: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


【解决方案1】:

查看您的 index.php 页面method='enctype='mltipart/form-data'

  <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      
        }

【讨论】:

  • 虽然这是一个错误,但它会导致页面向 includes/upload.inc.php 提交 GET 请求。这并不能解释问题所询问的行为。
  • 将method='enctype='multipart/form-data' 更改为method='post' enctype='multipart/form-data'
  • 感谢您的帮助。该方法是在复制代码时发生的错字。因此它在我的原始代码中是正确的。我将添加我的 upload.inc.php 文件的代码,也许有错误。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多