2016-01-10 88 views
0

创建的表单显示单击提交时在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); 
+0

你在哪里关闭'

'? –

回答

2

如果你想与POST发送的形式,改变方法,如默认为GET

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

或者你可以检查$_GET超全球而不是

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

谢谢,解决了它。 – Will

1

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

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`。如果未设置,则将表单所在的文件作为操作。