2016-01-10 122 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`。如果未設置,則將表單所在的文件作爲操作。