【问题标题】:HTML/PHP Form Submitting to 404 EorrorHTML/PHP 表单提交到 404 错误
【发布时间】:2017-08-30 12:08:04
【问题描述】:

所以。我在这个 Wordpress 网站上工作。相信我这太烦人了。所以我有大量的代码,它是 PHP 和 HTML 的组合。在提交表单之前,一切看起来都很好。当页面刷新时,它会加载到同一页面(具有相同的确切 URL)但出现 404 错误。

<center>
  <code>
    [insert_php]
      // Info to connect to the Wishlist database
      $servername = "eggcavity.com";
      $dbusername = "******";
      $password = "*******";
      $dbname = "EggcavityTravelIndex";

      try {
        // To connect to the database please
        $conn = new mysqli($servername, $dbusername, $password, $dbname);

        if ($conn->connect_error) {
          die('Connect Error (' . $conn->connect_errno . ') ' . $conn->connect_error);
        }

        // Get current user's username
        $current_user = wp_get_current_user();
        $username = $current_user->user_login;
        $allowed_roles = array('moderator', 'administrator');

        if ($username == "") {
          // If person is not logged in
          echo "Please login to see if you have moderator privileges.";
        } else if (array_intersect($allowed_roles, $current_user->roles )) {
          // If person is logged in and has moderator privileges, show the page

          $page = 1;

          if($_SERVER['QUERY_STRING'] != ""){
            $page = $_SERVER['QUERY_STRING'];
          }

          if(isset($_POST['submit'])){
            $ids = $_POST['ids'];
            $theCount = 0;

            // Prepare and bind the udpate statement
            $sql2 = "UPDATE Travels SET Name = ?, Picture = ?, Price = ?, " .
              "Description = ?, Rarity = ?, Status = ? WHERE ID = ?";
            $stmt2 = $conn->prepare($sql2);
            $stmt2->bind_param('ssssssi', $name, $picture, $price, $description, $rarity, $status, $id);

            foreach($ids as $id){
              $namecode = $id . "name";
              $picturecode = $id . "picture";
              $pricecode = $id . "price";
              $raritycode = $id . "rarity";
              $descriptioncode = $id . "description";
              $statuscode = $id . "status";
              $name = $_POST[$namecode];
              $picture = $_POST[$picturecode];
              $price = $_POST[$pricecode];
              $rarity = $_POST[$raritycode];
              $description = $_POST[$descriptioncode];
              $status = $_POST[$statuscode];
              $stmt2->execute();
            }

            if(isset($_POST['delete'])) {
              $delete=!empty( $_POST['delete'] ) ? $_POST['delete'] : false;
                if($delete && !is_array($delete) ){
                  $delete=explode(',',$delete);
                }

                foreach($delete as $id){
                  $sql = "DELETE FROM Travels WHERE ID = ?";
                  $stmt = $conn->prepare($sql);
                  $stmt->bind_param('i', $id);
                  $stmt->execute();
                  $theCount++;
                }
              }
              echo "<font size='3'>The travel database has been updated, and " . $theCount . 
                " travels(s) has/have been removed.";
            } else {
              // Just display the form
              $start = 0;
              $stop = 100;
              if ($page == "2") {
                $start = 100;
                $stop = 100;
              } else if ($page == "3") {
                $start = 200;
                $stop = 100;
              } else if ($page == "4") {
                $start = 300;
                $stop = 100;
              } else if ($page == "5") {
                $start = 400;
                $stop = 100;
              } else if ($page == "6") {
                $start = 500;
                $stop = 100;
              } else if ($page == "7") {
                $start = 600;
                $stop = 100;
              } else if ($page == "8") {
                $start = 700;
                $stop = 100;
              } else if ($page == "9") {
                $start = 800;
                $stop = 100;
              } else if ($page == "10") {
                $start = 900;
                $stop = 100;
              } else if ($page == "11") {
                $start = 1000;
                $stop = 100;
              } else if ($page == "12") {
                $start = 1100;
                $stop = 100;
              } else if ($page == "13") {
                $start = 1200;
                $stop = 100;
              } else if ($page == "14") {
                $start = 1300;
                $stop = 100;
              } else if ($page == "15") {
                $start = 1400;
                $stop = 100;
              }
              $sql = 'SELECT * FROM Travels LIMIT ' . $start . ',' . $stop;
              $result = mysqli_query($conn, $sql);
              $sql11 = 'SELECT * FROM Travels';
              $result11 = mysqli_query($conn, $sql11);
              $numtravels = mysqli_num_rows($result11);
              if ($numtravels > 0) {
                $numpages = ceil($numtravels / 100);
                $cnt = 1;
                echo 'Pages: ';
                while ($cnt <= $numpages){
                  echo '<a style="border-style:solid;border-radius:5px;border-width:1px;padding:2px;" href="?' . $cnt . '">' 
                    . $cnt . '</a> ';
                  $cnt++;
                }
                echo '<br><br>';
                $begin = $start + 1;
                $end = $begin + 99;
                echo '<form method="POST"><table style="border-collapse: collapse";>' .
                  'Travels ' . $begin . ' to ' . $end;

                while($row = $result->fetch_assoc()) {
                  $name = $row["Name"];
                  $id = $row["ID"];
                  $picture = $row["Picture"];
                  $price = $row["Price"];
                  $rarity= $row["Rarity"];
                  $description = $row["Description"];
                  $status= $row["Status"];
                  echo '<tr>';
                  echo '<td rowspan="2" style="border:1px solid gray;text-align:center;"><br><img src="' . $picture . '"></td>';
                  echo '<td style="border:1px solid gray;text-align:center;">' .
                    '<strong>Name: </strong><input type="text" name="' . $id . 'name" value="' . $name . '"></td>';
                  echo '<td style="border:1px solid gray;text-align:center;">' .
                    '<strong>Image URL: </strong><input type="text" name="' . $id . 'picture" value="' . $picture . '"></td>';
                  echo '<td style="border:1px solid gray;text-align:center;">' .
                    '<strong>Price: </strong><input type="text" name="' . $id . 'price" value="' . $price . '"></td>';
                  echo '<td style="border:1px solid gray;text-align:center;">' .
                    '<strong>Rarity: </strong><input type="text" name="' . $id . 'rarity" value="' . $rarity . '"></td>';
                  echo '</tr>';
                  echo '<td colspan="2" style="border:1px solid gray;text-align:center;">' .
                    '<strong>Description: </strong><br><input style="width:300px" type="text" name="' . $id . 'description" value="' . $description . '"></td>';
                  echo '<td style="border:1px solid gray;text-align:center;"><strong>Status: </strong><br><select name="' . $id . 'status">' .
                    '<option value ="' . $status . '" selected>' . $status . '</option>';
                  if ($status == "Available") {
                    echo '<option value ="Retired">Retired</option>';
                  } else if ($status == "Retired") {
                    echo '<option value ="Available">Available</option>';
                  } else if ($status == "") {
                    echo '<option value ="Retired">Retired</option>';
                    echo '<option value ="Available">Available</option>';
                  }
                  echo '</select></td>';
                  echo '<td style="border:1px solid gray;text-align:center;">' . '<strong>Delete</strong><br>' . 
                    '<input type="checkbox" name="delete[]" value="' . $id . '"></td>';
                  echo '</tr>';
                }
              echo '</table><br><input name="submit" type="submit" id="submit" value="Update">' .
                '</form><br><br>';
            } else {
              echo "<br>There are no travels in the database.";
            }
          }

        } else {
          // If person is logged in but does not have mod privileges
          echo "Sorry, you're not a moderator!";
        }

      } catch (mysqli_sql_exception $e) { 
        throw $e; 
      }
      // Close the connection to the database
      $conn->close();
    [/insert_php]
  </code>
</center>

这是表格

这是提交后的页面。

代码与我正在使用的页面非常相似。如图所示:

<center>
  <code>
    [insert_php]
      // Info to connect to the Wishlist database
      $servername = "eggcavity.com";
      $dbusername = "********";
      $password = "*******";
      $dbname = "EggcavityTravelIndex";

      try {
        // To connect to the database please
        $conn = new mysqli($servername, $dbusername, $password, $dbname);
        if ($conn->connect_error) {
          die('Connect Error (' . $conn->connect_errno . ') ' . $conn->connect_error);
        }

        // Get current user's username
        $current_user = wp_get_current_user();
        $username = $current_user->user_login;

        if ($username == ""){
          echo "Please login to use wishlist feature.";
        } else {

        echo "<font size ='3'><br>Please click <strong>" .
          "<a href = 'http://eggcavity.com/add-wishlist'>here</a></strong>" .
          " to add creatures to your wishlist.<br><br>Please click <strong>" .
          "<a href='http://eggcavity.com/wishlists'>here</a></strong> to view your wishlist.<br>" .
          "<br>At the moment when you enter notes you cannot view them on the edit page." .
          "<br>Please go to the view wishlist page to see your notes.<br><br></font>";

        $page = 1;
        if($_SERVER['QUERY_STRING'] != ""){
          $page = $_SERVER['QUERY_STRING'];
        }

        if(isset($_POST['submit'])){
          $ids = $_POST['ids'];
          $theCount = 0;

          // Prepare and bind the udpate statement
          $sql2 = "UPDATE Wishlists SET Picture = ?, Stage = ?, Gender = ?, " .
            "Frozen = ?, Notes= ? WHERE ID = ?";
          $stmt2 = $conn->prepare($sql2);
          $stmt2->bind_param('sssssi', $picture, $stage, $gender, $frozen, $notes, $id);

          foreach($ids as $id){
            $stagecode = $id . "stage";
            $gendercode = $id . "gender";
            $frozencode = $id . "frozen";
            $notescode = $id . "notes";
            $namecode = $id . "creature";
            $stage = $_POST[$stagecode];
            $Stage = $stage;
            $gender = $_POST[$gendercode];
            $frozen = $_POST[$frozencode];
            $notes = $_POST[$notescode];
            $name = $_POST[$namecode];
            $sql1 = 'SELECT * FROM Creatures WHERE Name = "' . $name . '"';
            $result = mysqli_query($conn, $sql1);
            $row = $result->fetch_assoc();
            $picture = $row["$stage"];
            $stmt2->execute();
          }

          if(isset($_POST['delete'])) {
            $delete=!empty( $_POST['delete'] ) ? $_POST['delete'] : false;
              if($delete && !is_array($delete) ){
                $delete=explode(',',$delete);
              }

              foreach($delete as $id){
                $sql = "DELETE FROM Wishlists WHERE ID = ?";
                $stmt = $conn->prepare($sql);
                $stmt->bind_param('i', $id);
                $stmt->execute();
                $theCount++;
              }
            }
            echo "<font size='3'>Your wishlist has been updated, and " . $theCount . 
              " creature(s) has/have been removed from your wishlist.<br><br>Please click <u>" .
              "<strong><a href='http://eggcavity.com/edit-wishlist'>here</a></u></strong>" .
              " to return to the edit page.</href><br><br>";
          } else {
            // Just display the form
            $start = 0;
            $stop = 100;
            if ($page == "2") {
              $start = 100;
              $stop = 100;
            } else if ($page == "3") {
              $start = 200;
              $stop = 100;
            } else if ($page == "4") {
              $start = 300;
              $stop = 100;
            } else if ($page == "5") {
              $start = 400;
              $stop = 100;
            } else if ($page == "6") {
              $start = 500;
              $stop = 100;
            } else if ($page == "7") {
              $start = 600;
              $stop = 100;
            } else if ($page == "8") {
              $start = 700;
              $stop = 100;
            } else if ($page == "9") {
              $start = 800;
              $stop = 100;
            } else if ($page == "10") {
              $start = 900;
              $stop = 100;
            } else if ($page == "11") {
              $start = 1000;
              $stop = 100;
            } else if ($page == "12") {
              $start = 1100;
              $stop = 100;
            } else if ($page == "13") {
              $start = 1200;
              $stop = 100;
            } else if ($page == "14") {
              $start = 1300;
              $stop = 100;
            } else if ($page == "15") {
              $start = 1400;
              $stop = 100;
            }
            $sql = 'SELECT * FROM Wishlists WHERE Username = "' . $username .
              '" ORDER BY Creature LIMIT ' . $start . ',' . $stop;
            $result = mysqli_query($conn, $sql);
            $sql11 = 'SELECT * FROM Wishlists WHERE Username = "' . $username . '"';
            $result11 = mysqli_query($conn, $sql11);
            $numcreatures = mysqli_num_rows($result11);
            if ($numcreatures > 0) {
              $numpages = ceil($numcreatures / 100);
              $cnt = 1;
              echo 'Pages: ';
              while ($cnt <= $numpages){
                echo '<a style="border-style:solid;border-radius:5px;border-width:1px;padding:2px;" href="?' . $cnt . '">' 
                  . $cnt . '</a> ';
                $cnt++;
              }
              echo '<br><br>';
              $begin = $start + 1;
              $end = $begin + 99;
              echo '<form method="POST"><table style="border-collapse: collapse";><strong>' .
                'Creatures ' . $begin . ' to ' . $end .
                '<tr>' .
                  '<td>' . $numcreatures . ' creatures</td>' .
                  '<td style="border:1px solid gray;text-align:center;">Creature</td>' .
                  '<td style="border:1px solid gray;text-align:center;">Stage</td>' .
                  '<td style="border:1px solid gray;text-align:center;">Gender</td>' .
                  '<td style="border:1px solid gray;text-align:center;">Frozen</td>' .
                '</tr></strong>';

              while($row = $result->fetch_assoc()) {
                $creature = $row["Creature"];
                $id = $row["ID"];
                $picture = $row["Picture"];
                $stage = $row["Stage"];
                $sql3 = 'SELECT * FROM Creatures WHERE Name = "' . $creature . '"';
                $result2 = mysqli_query($conn, $sql3);
                $row2 = $result2->fetch_assoc();
                echo '<input name="ids[]" type="hidden" value="' . $id . '">' .
                  '<input name="' . $id . 'creature" type="hidden" value="' . $creature . '">' .
                  '<tr>' .
                    '<td rowspan="2" style="border:1px solid gray;text-align:center;"><img src="' . 
                      $picture . '"></td>' .
                    '<td style="border:1px solid gray;text-align:center;">' . $creature . '</td>' .
                    '<td style"border:1px solid gray;text-align:center;"><select name="' . $id . 
                      'stage">' .
                      '<option value ="' . $stage . '" selected>' . $stage . '</option>' . 
                      '<option value = "Stage1">Stage1(Egg)</option>' .
                      '<option value = "Stage2">Stage2</option>';

                if ($row2["Stage3"] != "") {
                  echo '<option value = "Stage3">Stage3</option>';
                }

                if ($row2["Stage4"] != "") {
                  echo '<option value = "Stage4">Stage4</option>';
                }
                echo '</select></td>' .
                  '<td style="border:1px solid gray;text-align:center;"><select name="' . $id . 
                    'gender">' .
                    '<option value ="' . $row["Gender"]. '" selected>' . $row["Gender"] . '</option>' . 
                    '<option value = "Unspecified">Unspecified</option>' .
                    '<option value = "Female">Female</option>' .
                    '<option value = "Male">Male</option>' . 
                  '</select></td>' .
                  '<td style="border:1px solid gray;text-align:center;"><select name="' . $id . 
                    'frozen">' .
                    '<option value ="' . $row["Frozen"] . '" selected>' . $row["Frozen"] . '</option>' . 
                    '<option value="Unspecified">Unspecified</option>' .
                    '<option value="Yes">Yes</option>' .
                    '<option value="No">No</option>' .
                  '</select></td>' .
                '</tr>' .
                '<tr>' .
                  '<td  style="border:1px solid gray;text-align:center;" colspan="3">Notes: ' . 
                    '<input type="text" name="' . $id . 
                    'notes" value="' . $row["Notes"] .'"></td>' .
                  '<td style="border:1px solid gray;text-align:center;">' . 'Delete<br>' . 
                    '<input type="checkbox" name="delete[]"
                    value="' . $id . '"></td>' .
                '</tr>';
              }
              echo '</table><br><input name="submit" type="submit" id="submit" value="Update">' .
                '</form><br><br>';
            } else {
              echo "<br>You have no creatures in your wishlist.";
            }
          }
        }
      } catch (mysqli_sql_exception $e) { 
        throw $e; 
      } 

      // Close the connection to the database
      $conn->close();
    [/insert_php]
  </code>
</center>

如果您有任何想法可能导致此问题,请提供帮助!

【问题讨论】:

  • 现在您已经公开发布了您的数据库用户名/密码,您应该更改它们。
  • 你有一些诡计。开始在 apache、php 和 wordpress 错误日志中寻找答案。
  • 表单如何知道在哪里发布?以防万一,确保您有一个指定 PHP_SELF 的操作,因为您希望该页面在那里发布。
  • @cosmoonot 默认情况下,表单会发布给自己。
  • 你说的很对。我已经习惯于指定它了。

标签: php html wordpress forms


【解决方案1】:

您的页面是否已保存并发布?

如果没有,这可能就是为什么它说找不到该页面的原因。

此外,还有一种比您编写的长 if else 语句更好的方法来处理页码生成(或分页)。

请仔细阅读:http://code.runnable.com/U8dzQWEzMxxqeQ_E/php-pagination-example-using-mysql-database-for-dbms

拥有一个自定义 Wordpress 插件也是明智之举,您可以在其中拥有所有这些逻辑而不是页面,因为任何拥有 Wordpress 管理员访问权限的人都可以更改代码,而您当然不希望这样做。

【讨论】:

  • Deff 已保存并发布。我会看的。但我只是希望首先让这个工作(:我从未涉足插件,所以也许我会试水
猜你喜欢
  • 1970-01-01
  • 2015-09-26
  • 2015-12-16
  • 2016-06-25
  • 2019-03-12
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
相关资源
最近更新 更多