2013-08-03 67 views
-1

我剛開始使用php和html,我正在創建一個供個人使用的小遊戲。不管怎麼說,我寫了一個腳本中,你只需輸入數據,創建一個帳戶,然後將其提交:

<?php include 'header.php'; 
?> 


<br> 
<br> 
<br> 
<table border="1" align="center" cellpadding='25'> 
<tr> 
<td align='middle'> 
<form method='POST' action='insertuser.php' align= 'right'> 
Username: <input type='username' name='username'> <br> 
Password: <input type='password' name='password'> <br> 
Confirm Password: <input type='Password'> <br> 
Email: <input type='username'> <br> 
<input type='submit' name='submit' align = 'center'> 

</td> 
</tr> 
</table> 

    < 
<table align='right'> 
<tr> 
<td> 
<image src='stillneedimage(square).jpg'> 
</td> 
</tr> 
</table> 


<table align='left'> 
<tr> 
<td> 
<image src='stillneedimage(square).jpg'> 
</td> 
</tr> 
</table> 



</body> 
</html> 

然後我創建withh phpmyadmin的數據庫和裏面我有一個表稱爲成員。目前數據庫中有4個表,id,用戶名,密碼和等級。最後我創造了另一個腳本插入數據輸入到數據庫中的用戶:

<?php 

include_once "mysqlconnecter.php"; 
$username1 = $_POST ['username']; 
$password1 = $_POST ['password']; 


mysql_query("INSERT INTO members Values ('','$username1','$password1','' ") or 
    die('could not insert member, please try again'); 



?> 

它沒有這樣做,但它的任務是將數據插入到數據庫中。當我運行腳本它給了我這個錯誤:

Notice: Undefined index: username in E:\PortableApps\xampp- 
portable\htdocs\xampp\insertuser.php on line 4 

Notice: Undefined index: password in E:\PortableApps\xampp- 
portable\htdocs\xampp\insertuser.php on line 5 
could not insert member, please try again 

我可能做錯了什麼?

+0

首先,你忘了關閉你的''。它不在你的代碼中,或者你離開/忘記了它?只有這一點會導致你的問題。 –

+0

這些只是通知,這是不是一個問題,將您的數據插入表...你可以分享我們的輸出mysql_error(http://www.php.net/manual/en/function.mysql-error.php) 。我認爲你的桌子定義可能會有問題。 – tanaydin

+0

再加上你在'<

''中有一個流浪'<''' –

回答

0

爲了避免出現問題表單中,添加</form> - 標籤並更改類型=「文本」。類型屬性告訴什麼類型的元素,而不是元素被標識爲什麼名稱。你有名稱屬性。

<table border="1" align="center" cellpadding='25'> 
<tr> 
<td align='middle'> 
<form method='POST' action='insertuser.php' align= 'right'> 
Username: <input type='text' name='username'> <br> 
Password: <input type='text' name='password'> <br> 
Confirm Password: <input type='text' name='confirmPassword'> <br> <!-- changed name --> 
Email: <input type='text' name='username'> <br> 
<input type='submit' name='submit' align = 'center'> 
</form> <!--added here --> 
</td> 
</tr> 
</table> 

看着你insertuser.php

<?php 
include_once "mysqlconnecter.php"; 
$username1 = $_POST ['username']; 
$password1 = $_POST ['password']; 

mysql_query("INSERT INTO members Values ('','$username1','$password1','' ") or 
    die('could not insert member, please try again'); 
?> 

我注意到一些事情。第一個是memberID用戶的qutoes?我想這是和INt(可能是自動增量),在這種情況下,你根本不必包含該字段。其次,你在實際的插入語句中遺漏了一個括號。

<?php 
include_once "mysqlconnecter.php"; 
$username1 = $_POST ['username']; 
$password1 = $_POST ['password']; 

mysql_query("INSERT INTO members Values ('$username1','$password1','')") or 
    die('could not insert member, please try again'); 
?> 

也許最重要的部分是,您必須清理數據,以防止不需要的數據進入數據庫。該easisest檢查,你可以做(​​和應該做)是至少檢查元素分配:

<?php 
include_once "mysqlconnecter.php"; 
$username1 = $_POST ['username']; 
$password1 = $_POST ['password']; 

if (isset($username1) && isset($password1)) { //Execute query only if username and password are given/exists 
    /* PUT IN CODE HERE 
    for sanizting username and password with certain rules 
    and comparing field password with confirmPassword 
    */ 
    mysql_query("INSERT INTO members Values ('$username1','$password1','')") or 
    die('could not insert member, please try again'); 
} 
?> 

這樣,你不應該得到你所描述的那些錯誤。同時檢查confirmPassword的值與密碼,看看它們是否相等(如果你不這樣做confirmPassword字段是無用的)

我真的會推薦從mysql_ *函數切換到PDO或mysqli,因爲mysql_ *函數已被棄用(意味着這些功能將來無法使用)。

1

您正在使用name="username"而不是username1像在您的PHP中一樣。

$username1 = $_POST['username']; 
$password1 = $_POST['password']; 

也是type是錯誤的。

+0

即使我更改它時也會出現此錯誤。 – FireRaven101

+0

您是否將輸入字段的類型更改爲文本/密碼? – pajaja

+0

是的,但它仍然無效。 – FireRaven101

2

您在$ _ POST

$username1 = $_POST ['username']; 
$password1 = $_POST ['password']; 
+0

即使當我改變它給我那個錯誤。 – FireRaven101

1

你輸入你的輸入標籤訪問了錯誤的名稱應爲「文本」:

Username: <input type='text' name='username'> <br> 

,並正在從$_POST得到名稱必須一致在您的形式名稱:

$username1 = $_POST ['username']; 
1

更改此:

$username1 = $_POST ['username1']; 
$password1 = $_POST ['password1']; 

進入這個

$username1 = $_POST['username']; 
$password1 = $_POST['password']; 

HTML表單的輸入被稱爲「用戶名」和「密碼」,這些名稱傳遞給$_POST變量。

現在,您不需要清理數據庫輸入。嘗試創建一個名爲bobby'); DROP TABLE members;--的用戶。一定要備份成員表。 (擾流板:它會降低你的表)

有關如何防止這種情況的更多信息,請參閱How can I prevent SQL injection in PHP?

0

首先,

沒有input type="username"。你應該使用的是input type="text"

其次,HTML表單中沒有元素的名稱屬性設置爲「username1」或「password1」。我希望你已經注意到了。所以相應地修改PHP文件。

即使在此之後,您仍然會遇到很多錯誤。這是因爲在執行MySQL查詢之前,您需要實際連接到數據庫。

所以讀了一點點,然後才嘗試了這一點。

乾杯!

+2

可能使用'include_once「mysqlconnecter.php」'連接。但是,我會同意OP需要對許多事情「閱讀」和「研究」。 –

+0

我正在包括連接到數據庫的頁面(mysqlconnecter.php)。 – FireRaven101

0

除了表單的結束標記之外,您的發佈代碼中沒有錯誤。我複製了相同的代碼,並且工作完美。我改變的是,

<html> 

<head> 
<title>Althaf</title> 
</head> 

<body bgcolor="gray"> 
<b>Welcome to <i>html</i></b><br> 
<?php include 'header.php'; 
?> 
<br> 
<br> 
<br> 
<table border="1" align="center" cellpadding='25'> 
<tr> 
<td align='middle'> 
<form method='POST' action='insertuser.php' align= 'right'> 
Username: <input type='username' name='username'> <br> 
Password: <input type='password' name='password'> <br> 
Confirm Password: <input type='Password'> <br> 
Email: <input type='username'> <br> 
<input type='submit' name='submit' align = 'center'> 

</td> 
</tr> 
</table> 

    </form><!-- Here was the missing tag--> 
<table align='right'> 
<tr> 
<td> 
<image src='stillneedimage(square).jpg'> 
</td> 
</tr> 
</table> 


<table align='left'> 
<tr> 
<td> 
<image src='stillneedimage(square).jpg'> 
</td> 
</tr> 
</table> 



</body> 
</html> 

而且在insertuser.php,

<?php 


$username1 = $_POST ['username']; 
$password1 = $_POST ['password']; 


echo $username1; 
echo $password1; 


?> 

我越來越領域。所以,DBconnecting php內部可能會有更多的錯誤。

+0

您確實應該在表單的實際單元格中包含結束標記,而type-attributes屬性不正確。 – bestprogrammerintheworld

+0

我複製粘貼你的表單,仍然有相同的錯誤。 – FireRaven101