我无法理解为什么输入字段“name”没有传递给PHP。我试着评论出“名称”代码,但“公司”也出现了同样的问题。我在两个输入标签上设置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>
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
请注意正确传递“用户类型”。
答案 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)的结果。
正如您所看到的,您的代码仍然一致,您现在已将公司列入您的数据列表....因此您可能希望注释掉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中测试过,它也在那里工作。感谢大家的投入。