引导表单未将值传递给php
我无法理解为什么输入字段“name”没有被传递给PHP。我试着注释掉“name”代码,但“company”也出现了同样的问题。我正在两个输入标记上设置id和name属性 修订版 HTML引导表单未将值传递给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
<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