2012-03-02 13 views
0

私の登録システムはユーザ名、パスワード、電子メールをデータベースに正しく挿入しますが、他のフィールドは正しく挿入しません。最初に値をSQLクエリに直接入れて、隠れたテキストフィールドとしてフォームに配置しようとしました。直接値によってSQL構文エラーが発生し、隠しテキストには何も挿入されませんが、ユーザー、パス、電子メールは正常に追加されます。すべてのMYSQLフィールドタイプはLONG​​TEXTです。ここにコードがあります。登録PHP/SQLはlongtextフィールドを挿入しません

Register.php

<form name="register" method="post" action="register2.php"><br /> 

Username<br><input name="username" type="text" size="20" /><br /><br /> 

Password<br><input name="password" type="password" size="20" /><br /><br /> 

E-mail<br><input name="email" type="text" size="20" /><br /><br /> 

<input="hidden" id="status" type="text" value=Waiting for a request size="100" /> 
<input="hidden" id="request" type="text" value="None sent" size="100" /> 
<input="hidden" id="paid" type="text" value="Please pay for an instant spot" size="100" /> 
<input="hidden" id="priority" type="text" value="To be determined by your web designer" size="100" /> 
<input="hidden" id="files" type="text" value="None" size="100" /> 
<input="hidden" id="filespass" type="text" value=None" size="100" /><div id="captcha2"> 
<img id="captcha" src="securimage/securimage_show.php" alt="CAPTCHA Image" /><br><br>Please re-write the security code below<br><input type="text" name="captcha_code" size="10" maxlength="6" size="20"/></div> 

<br> 
<input type="submit" name="submit" value="Register" /><br><br> 
<a href='forgot.php'>Forgot</a> your password?<br> 

</form> 

Register2.php

<?php 
include_once 'securimage/securimage.php'; 
$securimage = new Securimage(); 
if ($securimage->check($_POST['captcha_code']) == false) { 
// the code was incorrect 
// you should handle the error so that the form processor doesn't continue 

// or you can use the following code if there is no validation or you do not know how 
echo "The security code entered was incorrect.<br /><br />"; 
echo "Please go <a href='javascript:history.go(-1)'>back</a> and try again."; 
exit; 
}else{ 

$con = mysql_connect(secret); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("dylanmediagroup", $con); 

$username = htmlspecialchars($_POST['username']); 
$password = htmlspecialchars($_POST['password']); 
$email = htmlspecialchars($_POST['email']); 
$status = htmlspecialchars($_POST['status']); 
$priority = htmlspecialchars($_POST['priority']); 
$paid = htmlspecialchars($_POST['paid']); 
$files = htmlspecialchars($_POST['files']); 
$filespass = htmlspecialchars($_POST['filespass']); 

$checkuser = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
$checkemail = mysql_query("SELECT * FROM users WHERE email='$password'"); 

if(mysql_num_rows($checkuser) > 0) { //check if there is already an entry for that username 

echo "<img src='http://www.myhealthguardian.com/wp-content/uploads/2010/01/sad-face.gif' width='25%' height='21%'><br><br>Account already registered.<br> <a href='forgot.php'>Forgot</a> your password?<br><br>"; 

} else { 

$sql="INSERT INTO `users` (username, password, email, status, priority, paid, files, filespass) VALUES ('$username', '$password', '$email', '$status', '$priority', '$paid', '$files', '$filespass')"; 

} 

if (!mysql_query($sql,$con)) 
    { 

    }else{ 

echo "<img src='http://3.bp.blogspot.com/-vpsc13PCfc0/TaLCGaq2SjI/AAAAAAAACTA/hw2MDzTk6mg/s1600/smiley-face.jpg' height='21%' width='25%'><br><br>Your registration was successful, please <a href='login.php'>login</a> to continue."; 

} 
} 

mysql_close($con) 
?> 
+0

挿入前に 'var_dump($ sql)'を試して、そのクエリの様子を見てください。また、私は 'LONGTEXT'型の全てを使うことを再考したいと思います。代わりに 'VARCHAR'を考慮してください。 – drew010

+0

あなたの入力をサニタイズするために 'htmlspecialchars'を使うべきではありません。代わりに 'mysql_real_escape_string'を使用してください。 –

答えて

1

あなたの隠された入力の代わりにidの名前を使用しています。 そして、この構文を使用してください:

<input type="hidden" name="name" value="value" /> 

また、自分の価値観の一つは、それはそれで引用符を持っているので、文字列を破るように見えます。

関連する問題