引导表单未将值传递给php

引导表单未将值传递给php,php,forms,twitter-bootstrap,Php,Forms,Twitter Bootstrap,我无法理解为什么输入字段“name”没有被传递给PHP。我试着注释掉“name”代码,但“company”也出现了同样的问题。我正在两个输入标记上设置id和name属性 修订版 HTML <form name="createAccount" role="form" method="POST" action="php/AddNewAccount.php" > <div data-toggle="buttons"> <div class="bt

我无法理解为什么输入字段“name”没有被传递给PHP。我试着注释掉“name”代码,但“company”也出现了同样的问题。我正在两个输入标记上设置id和name属性

修订版

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>
错误

[03-May-2016 21:41:44 UTC]PHP致命错误:未捕获异常 “例外”并显示消息“您必须输入您的公司名称。” /home/deje/public_html/writers-tryst/php/AddNewAccount.php:18

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

请尝试以下操作:

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

据我所见,您的代码应该可以工作……但我无法发现任何错误。但是,为什么在异常消息中有一个额外的(“”?您是否在页面上使用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_转储($_POST)的结果

正如您所看到的,您的代码仍然是一致的,现在您的数据列表中有了该公司。。。。因此,您可能希望注释掉var_dump();出口部分

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

信不信由你,问题在于输入标记以“>”而不是“/>”结尾。我一直在测试Chrome。我现在在IE中测试,它也在那里工作。谢谢大家的输入。

如果删除
trim
调用会发生什么?这段代码对我来说就是这样,只不过将
表单操作
,以及
try
更改为
if(!empty($\u POST))
,所以在这个简化的示例中,肯定还有一些我们没有看到的事情,我无法复制这个问题:一切似乎都按预期运行。感谢您的评论和努力。如果有帮助的话,我在网站上添加了一个链接——至少在HTML上是这样。谢谢,但是表单的更改没有任何效果。这应该很简单。请参阅提供网页链接的修订版。转储返回“array(1){[“user type”]=>string(7)“enabler”}”。有趣。查看修订-我包含了一个指向该网页的链接。当我测试你的应用程序时,转储还会返回该公司。。。看到我的更新后的视觉…我完全困惑。我做了您建议的更改,但我尝试时仍然只转储第一个字段-“用户类型”。+1表示努力。@ron tornambe您对垃圾场进行了注释吗?无论如何,我现在已经在代码中取消了注释。。。因此,现在请尝试在没有转储的情况下重新运行代码,看看您得到了什么……问题不大可能出现。见下面我的答案。你关于垃圾场的建议对解决这个问题至关重要。非常感谢。
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.');       
        }

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