2015-09-24 367 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代码错误的名称,如电话号码,多个值,主要等等。请让他们正确,你的代码应该可以工作。