表单数据未发送到服务器

时间:2016-01-10 15:56:32

标签: php html

创建的表单显示单击提交时在URL中发送的数据,但发送到服务器的唯一部分是用户名/ $ un。所有表单输入都被忽略。

HTML表单:

<form action="CharacterAdd.php">
<legend>Add Character</legend>
Character Name:<br>
<input type="text" name="Name" >
<br>
Gender:<br>
<input type="text" name="Gender" >
<br>
Age:<br>
<input type="text" name="Age" >
<br>
Hobbies:<br>
<input type="text" name="Hobby" >
<br>
Home:<br>
<input type="text" name="Home" >
<br>
Job:<br>
<input type="text" name="Job" >
<br>
<input type="submit" value="Submit">
<p>
<br>
</form>

PHP代码:

$un = $_SESSION["gatekeeper"];

$a = htmlentities($_POST['Name']);
$b = htmlentities($_POST['Gender']);
$c = htmlentities($_POST['Age']);
$d = htmlentities($_POST['Hobby']);
$e = htmlentities($_POST['Home']);
$f = htmlentities($_POST['Job']);
$g = htmlentities($_POST['$un']);

{
    $statement = $conn->prepare("INSERT INTO Characters(Name,Gender,Age,Hobby,Home,Job,username) VALUES (?,?,?,?,?,?,?)");
    $statement->bindParam(1,$a);
    $statement->bindParam(2,$b);
    $statement->bindParam(3,$c);
    $statement->bindParam(4,$d);
    $statement->bindParam(5,$e);
    $statement->bindParam(6,$f);
    $statement->bindParam(7,$un);
    $statement->execute();
    $conn->query ($charac);

3 个答案:

答案 0 :(得分:2)

如果您要使用POST发送表单,请更改方法,默认为GET

<form action="CharacterAdd.php" method="POST">

或者您可以检查$_GET超全局

$a = htmlentities($_GET['Name']);
$b = htmlentities($_GET['Gender']);

答案 1 :(得分:1)

请在表格标签中声明method =“POST”。

答案 2 :(得分:0)

您可能正在包装PHP代码,如:

if(isset($_POST['submit'])){
  ...
}

开发人员常常犯了这个错误,因为为了实现这一点,您需要将提交按钮命名为提交,例如<input name="submit" value="Submit form">。 此外,您需要设置一些表单属性,例如方法和操作。默认方法是get。如果您希望隐藏在浏览器地址栏中的值,请确保将方法设置为post,如<form method="post">. You also need to specify a file that will be called using action`。如果未设置,则将表单所在的文件作为操作。