2015-09-24 363 views
0

我對PHP很新。我在與我合作的表單中遇到問題。500 PHP內部服務器錯誤

這裏是我的HTML

<form class="form-horizontal" action="submit.php"> 
    <div class="form-group"> 
     <label for="name" class="col-sm-2 control-label">Name:</label> 
     <div class="col-sm-10"> 
      <input type="text" class="form-control" id="name" name = "name" placeholder="John Doe"> 
     </div> 
    </div> 
    <div class = "form-group"> 
     <label for="inputEmail3" class="col-sm-2 control-label">Email:</label> 
     <div class="col-sm-10"> 
      <input type="email" class="form-control" id="email" name = "email" placeholder="[email protected]"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="phoneNumber" class="col-sm-2 control-label">Phone:</label> 
     <div class="col-sm-10"> 
      <input type="text" class="form-control" id="phoneNumber" name = "phoneNumber" placeholder="555-555-5555"> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label for="major" class="col-sm-2 control-label">Major:</label> 
     <div class="dropdown"> 
      <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" name = "major" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 
       Dropdown 
       <span class="caret"></span> 
      </button> 
      <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"></ul> 
     </div> 
    </div> 

    <hr> 

    <div class="form-group"> 
     <label for="itemForSale" class="col-sm-2 control-label">Item for Sale:</label> 
     <div class="col-sm-10"> 
      <input type="text" class="form-control" id="itemForSale1" name = "itemForSale1" placeholder="My old video games, some chairs, some chicken, a pizza."> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label for="quantity" class="col-sm-2 control-label">Quantity:</label> 
     <div class="col-sm-10"> 
      <input type="text" class="form-control" id = "quantity1" name = "quantity1" placeholder="1,000,000"> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label for="major" class="col-sm-2 control-label">Price:</label> 
     <div class="col-sm-10"> 
      <input type="text" class="form-control" id="price1" name = "price1" placeholder="ex. $100.00"> 
     </div> 
    </div> 
</form> 

這是我的PHP

<?php 
    // Variables 
    $name; 
    $email; 
    $phone; 
    $major; 
    $itemForSale1; 
    $quantity1; 
    $price1; 
    $itemForSale2; 
    $quantity2; 
    $price2; 
    $itemForSale3; 
    $quantity3; 
    $price3; 

    ini_set('display_errors', 'On'); ini_set('html_errors', 0); error_reporting(-1); 

    if (isset($_POST["submit"])) 
    { 
     // Initiate the variables 
     $name   = $_POST["name"]; 
     $email  = $_POST["email"]; 
     $phone  = $_POST["phone"]; 
     $major  = $_POST["major"]; 
     $itemForSale1 = $_POST["itemForSale1"]; 
     $quantity1 = $_POST["quantity1"]; 
     $price1  = $_POST["price1"]; 
     $itemForSale2 = $_POST["itemForSale2"]; 
     $quantity2 = $_POST["quantity2"]; 
     $price2  = $_POST["price2"]; 
     $itemForSale3 = $_POST["itemForSale3"]; 
     $quantity3 = $_POST["quantity3"]; 
     $price3  = $_POST["price3"]; 

     // IF name is empty string 
     if($name == "") 
     { 
      // Alert the user 
      echo "Please enter your name."; 
     } 

     // IF email is invalid 
     if (!filter_var($email, FILTER_VALIDATE_EMAIL) === true) 
     { 
      // Alert the user 
      echo("$email is an invalid email address"); 
     } 

     // Strip any occurrences of '-' in phoneNumber 
     str_replace("-", "", $phoneNumber) 

     // IF phoneNumber does not equal 10 characters 
     if(strlen(phoneNumber) != 10) 
     { 
      // Alert the user 
      echo "Invalid phone number. Ex. 315-555-5555"; 
     } 

     // IF itemForSale is empty string 
     if($itemForSale == "") 
     { 
      // Alert the user 
      echo "You must enter at least one item."; 
     } 

     // IF quantity1 is less than 1 
     if($quantity1 < 1) 
     { 
      // Alert the user 
      echo "You can't sell anything less than one item."; 
     } 

     // Strip any occurrences of '$' in price 
     str_replace("$", "", $phoneNumber) 

     // IF price is less than 0.00 
     if($price1 < 0) 
     { 
      echo "What's less than free?"; 
     } 

     echo $name; 
     echo $email; 
     echo $phone; 
     echo $major; 
     echo $itemForSale1; 
     echo $quantity1; 
     echo $price1; 

    } 
?> 

當我按我的提交表單上我得到了500內部服務器錯誤。任何想法可能會造成這種情況?我不太熟悉PHP sooo。

+0

我試過只輸入名稱而沒有別的,我仍然得到它。 – trevordavies095

+3

錯誤在這裏'str_replace(「 - 」,「」,$ phoneNumber)'。它沒有顯示錯誤? – chris85

+0

^另外,你爲什麼要檢查一個名爲'submit'的表單元素是否已經被POST?你甚至沒有帶有所述名稱的表單元素。 –

回答

0

您所有的str_replace功能都不正確。你永遠不會終止他們所在的路線,也不會在任何地方設置替換(不是替換不是錯誤,可以說,但是如果不使用它就沒有意義)。

你可以這樣做:

$phoneNumber = str_replace(array('$', '-'), '', $phoneNumber); 

將從$phoneNumber剝離$ S和-秒。

此外,您的表單正在處理爲GET,因爲您尚未將其處理爲POST

變化:

<form class="form-horizontal" action="submit.php"> 

<form class="form-horizontal" action="submit.php" method="POST"> 

的缺省格式的方法是GETWhat is the default form HTTP method?

因此if (isset($_POST["submit"]))永遠不會是真的,你只是得到一個空白頁。如果你想測試這個,你可以在該條件的末尾添加一個else。

+0

謝謝!現在我改變了它,我不再收到500錯誤。但是,它們不是輸出。 – trevordavies095

+0

你檢查了你的服務器/ PHP日誌嗎?只測試了兩臺開發服務器上的錯誤代碼 - 沒有再現500錯誤。 –

+0

更新,成功? – chris85

2

爲你 -

1)給形式方法標記作爲一些解決方案 - 方法= 「POST」

2)嘗試改變

<input id="submit" name="submit" type="submit" value="submit" class="btn btn-primary"> 

<input id="btnsubmit" name="btnsubmit" type="submit" value="submit" class="btn btn-primary"> 

和訪問它作爲

isset($_POST["btnsubmit"]) 

3)你也錯過了分號後str_replace("$", "", $phoneNumber)str_replace("-", "", $phoneNumber)

4)改變if(strlen(phoneNumber) != 10)if(strlen($phoneNumber) != 10)

5)您也訪問過與PHP代碼錯誤的名稱,如電話號碼,多個值,主要等等。請讓他們正確,你的代碼應該可以工作。