$ _POST崩溃网站

时间:2017-05-04 21:32:29

标签: php html

我有下面的php页面,这是一个包含联系表单的保留页面:

    <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="author" content="">

    <!--<link rel="icon" href="../../favicon.ico">-->


    <title>Coming Soon</title>

    <!-- Bootstrap -->
    <link href="assets/css/bootstrap.css" rel="stylesheet">
    <link href="assets/css/bootstrap-theme.css" rel="stylesheet">
    <link href="assets/css/font-awesome.css" rel="stylesheet">

    <!-- siimple style -->
    <link href="assets/css/style.css" rel="stylesheet">

  </head>

  <body>

    <div id="wrapper">
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <h1>TEST</h1>
                    <h2 class="subtitle">We're working hard to improve our website and we'll be ready to launch soon
                    <h2 class="subtitle">Feel free to contact us below with any enquiries</h2>

                    <p>

                    <?php
                        $name = $_POST["contactname"];
                    ?>

                    <form class="Contact" method="post" action="">

                        <label class="alignleft">Name</label>
                        <input type="text" name="contactname" id="contactname" placeholder="Enter Name">

                        <label class="alignleft">Email</label>
                        <input name="Email" placeholder="Email Address">

                        <label class="alignleft">Enquiry</label>
                        <textarea name="Enquiry" placeholder="Your enquiry"></textarea><br>

                        <input id="submit" name="submit" type="submit" value="Submit!" class="btn btn-theme">

                    </form>

                <div class="social">
                        <a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a>
                         <a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a>
                         <!--<a href="#"><i class="fa fa-google-plus" aria-hidden="true"></i></a>
                         <a href="#"><i class="fa fa-linkedin" aria-hidden="true"></i></a>-->
                    </div>
                </div>

            </div>

        </div>
    </div>
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>

</body>
</html>

在php部分,我试图读取输入框的值,但即使只有

$_POST["contactname"]; 

网站返回500内部服务器错误。如果我删除该行并替换为简单的:

echo "Test";

然后该网站工作并显示&#34;测试&#34;

如果从输入框中分配变量,我有什么遗漏?

4 个答案:

答案 0 :(得分:3)

您应确保设置POST数组的键,然后在显示之前验证您的值,并确保处理错误和无效值!

   if(isset($_POST["contactname"])){
       // Do validation, like making sure its not a empty string
       if (!empty($_POST["contactname"])) {
           echo $_POST["contactname"];
       } else {
           echo "A validation error";
       }
    }

还启用PHP错误输出,这将极大地帮助您调试这样的问题:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

你的php.ini中的display_errors = on使PHP显示解析错误。

答案 1 :(得分:1)

您应该先验证它

if(isset($_POST['contactname'])){
  // Do your post handling
}

答案 2 :(得分:1)

我建议使用第二个文件来处理表单,而不是将其全部放在一个页面上。它不仅使您的代码看起来更干净,而且我发现它也可以帮助调试。所以它看起来像这样:

<强>的index.php:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="author" content="">

    <!--<link rel="icon" href="../../favicon.ico">-->


    <title>Coming Soon</title>

    <!-- Bootstrap -->
    <link href="assets/css/bootstrap.css" rel="stylesheet">
    <link href="assets/css/bootstrap-theme.css" rel="stylesheet">
    <link href="assets/css/font-awesome.css" rel="stylesheet">

    <!-- siimple style -->
    <link href="assets/css/style.css" rel="stylesheet">

  </head>

  <body>

    <div id="wrapper">
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <h1>TEST</h1>
                    <h2 class="subtitle">We're working hard to improve our website and we'll be ready to launch soon
                    <h2 class="subtitle">Feel free to contact us below with any enquiries</h2>

                    <form class="Contact" method="post" action="form_process.php">

                        <label class="alignleft">Name</label>
                        <input type="text" name="contactname" id="contactname" placeholder="Enter Name">

                        <label class="alignleft">Email</label>
                        <input name="Email" placeholder="Email Address">

                        <label class="alignleft">Enquiry</label>
                        <textarea name="Enquiry" placeholder="Your enquiry"></textarea><br>

                        <input id="submit" name="submit" type="submit" value="Submit!" class="btn btn-theme">

                    </form>

                <div class="social">
                        <a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a>
                         <a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a>
                         <!--<a href="#"><i class="fa fa-google-plus" aria-hidden="true"></i></a>
                         <a href="#"><i class="fa fa-linkedin" aria-hidden="true"></i></a>-->
                    </div>
                </div>

            </div>

        </div>
    </div>
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>

</body>
</html>

<强> form_process.php:

<?php
    if(isset($_POST['contactname'])
    {
        $name = $_POST['contactname'];
        if(empty($name))
        {
            die("contact name is empty")
        }
        else
        {
            echo $name;
        }   
    }
    // Continue processing form data
?>

我还会遵循其他用户关于显示PHP错误的建议。

答案 3 :(得分:0)

Firstable,你需要检查是否定义了 $ _ POST ,而不是空的:

if(isset($_POST["contactname"]) && !empty($_POST["contactname"])){

echo $_POST["contactname"];
}

第二个,我认为您需要配置您的服务器以显示错误,而不是将您重定向到500错误: 只需使用以下行修改 php.ini

display_errors = on