Bootstrap表单没有将值传递给php

时间:2016-05-03 21:55:03

标签: php forms twitter-bootstrap

我无法理解为什么输入字段“name”没有传递给PHP。我试着评论出“名称”代码,但“公司”也出现了同样的问题。我在两个输入标签上设置id和name属性。

website example

HTML

<form name="createAccount" role="form" method="POST" action="php/AddNewAccount.php" >
    <div data-toggle="buttons">
        <div class="btn-group">
            <label class="btn btn-primary">
                <input type="radio" name="user-type" id="writer" value="writer" class="sr-only" required >Writer
            </label>
            <label class="btn btn-primary">
                <input type="radio" name="user-type" id="enabler" value="enabler" class="sr-only" required>Enabler
            </label>
        </div>
    </div><br/>
    <div class="form-group">
        <label for="name">Name:</label>
        <input class="form-control" required id="name" name="name">
    </div>
    <div class="form-group">
        <label for="company">Company:</label>
        <input class="form-control" required id="company" name="company">
    </div>
...
</form>

PHP

function AddNewAccount() {
try {
    $acctType = $_POST["user-type"];
    if (!isset($acctType) || empty(trim($acctType))) {
        throw new Exception('You must select an account type."');       
    };
    echo "account-type=" . $acctType;
    $name = $_POST["name"];
    if (!isset($name) || empty(trim($name))) {
        throw new Exception('You must enter your name."');       
    };
    $company = $_POST["company"];
    if (!isset($company) || empty(trim($company))) {
        throw new Exception('You must enter your company name."');       
    };

...
}

错误

  

[03-May-2016 21:41:44 UTC] PHP致命错误:未捕获的异常   '例外',上面写着'您必须输入公司名称'。''   /home/deje/public_html/writers-tryst/php/AddNewAccount.php:18

请注意正确传递“用户类型”。

3 个答案:

答案 0 :(得分:2)

从我看到的;你的代码应该有效...但我无法发现任何错误。但是,为什么在您的例外消息中有额外的(&#34;)?你在网页上使用任何Javascript吗?如是;我建议您暂时禁用Javascript并尝试在没有JS的情况下再次发送表单。

你能尝试一下吗?

function AddNewAccount() {
    // IT MIGHT BE A GOOD IDEA (IF YOU WILL) TO DUMP THE ENTIRE $_POST GLOBAL VARIABLE
    // AND END THE SCRIPT...(TEMPORARILY)... JUST TO SEE WHAT COMES BACK
    // var_dump($_POST); exit; // BYPASSTHE DUMPING SINCE WE ARE SURE COMPANY MAKES IT THROUGH TO THIS POINT...
    try {
        $name      = isset($_POST["name"])      ?  htmlspecialchars(trim($_POST["name"]))       : null;
        $company   = isset($_POST["company"])   ?  htmlspecialchars(trim($_POST["company"]))    : null;
        $acctType  = isset($_POST["user-type"]) ?  htmlspecialchars(trim($_POST["user-type"]))  : null;

        if (!$acctType) {
            throw new Exception('You must select an account type.');       
        }

        if (!$name) {
            throw new Exception('You must enter your name.');       
        }

        if (!$company) {
            throw new Exception('You must enter your company name.');       
        }

...
}

这是您应用程序上var_dump($ _ POST)的结果。

enter image description here

正如您所看到的,您的代码仍然一致,您现在已将公司列入您的数据列表....因此您可能希望注释掉var_dump();出口;部分

<?php
    //....PREVIOUS CODE
    // var_dump($_POST); exit; //NOW COMMENTED OUT TO CONTINUE WITH THE PROGRAM

试试这个,让我们知道它是怎么回事...... 我真诚地希望它能与你相处现在,但是, - )

答案 1 :(得分:0)

尝试以下方法:

 <form name="createAccount" role="form" method="POST" action="php/AddNewAccount.php" enctype="application/x-www-form-urlencoded">

您也可以将其解析为JSON:

 $rest_json = file_get_contents("php://input");
 $_POST = json_decode($rest_json, true);

答案 2 :(得分:0)

信不信由其,问题在于输入标签以&#34;&gt;&#34;结尾?而不是&#34; /&gt;&#34;。我一直在Chrome测试。我现在在IE中测试过,它也在那里工作。感谢大家的投入。