PHP表单上的500内部服务器错误

时间:2015-09-24 04:40:47

标签: php html twitter-bootstrap-3 html-form

我是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="name@domain.com">
        </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不太熟悉。

2 个答案:

答案 0 :(得分:1)

为您提供一些解决方案 -

1)给表格方法标签 - method =&#34; post&#34;

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代码中访问了许多名称错误的值,如电话号码,专业等。请使它们正确无误,您的代码应该有效。

答案 1 :(得分:0)

您的所有str_replace功能都不正确。你永远不会终止他们所在的行,也不会在任何地方设置替换(不是替换不是错误,但是如果不使用它就没有意义)。

你可以这样做:

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

将从$中删除-$phoneNumber

此外,您的表单正在处理为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。