Jquery プラグイン カラーボックスを使用して、Create User フォームを表示しています。送信ボタンをクリックすると、アカウントが作成されましたというメッセージが表示されます。(正当な値を入力する場合) ただし、データベース内の fname と lname (名と姓) の値は定義されていません。ユーザー名とパスワードの値は正しいですが。
これがHTMLコードです。
<h2>Enter Account Details</h2>
<form>
<div id='fname1'>
First Name: <br>
<input type='text' required name="fname"></input>
</div>
<div id='lname1'>
Last Name: <br>
<input type='text' required name="lname"></input>
</div>
<div id='username1'>
UserName: <br>
<input type='text' required name="username" id="username"></input>
<span id="message"></span>
</div>
<br>
<div id='password'>
Password:
<input type='password' required name="password"></input>
<label >Retype Password: </label>
<input type='password' required name="repassword"></input>
</div>
<div id='submitid'>
<input type='button' value='submit' id="button"> </div>
<div id="info"></div>
</form>
これがAjaxリクエストです。
<script type="text/javascript">
$(document).ready(function(){
$("#button").click(function(){
var fname=$("#fname").val();
var lname=$("#lname").val();
var username=$("#username").val();
var password=$("#password").val();
var repassword=$("#repassword").val();
$.ajax({
type:"post",
url:"process.php",
data:"fname="+fname+"&lname="+lname+"&username="+username+"&password="+password+"&repassword="+repassword,
success:function(data){
$("#info").html(data);
}
});
});
});
</script>
そしてPHPコード、
<?php
$dbc=mysqli_connect('localhost', 'root', '', 'message') or die("Error");
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$username=$_POST['username'];
$password=$_POST['password'];
$repassword=$_POST['repassword'];
$password_hash=sha1($password);
$query="SELECT * from user where username='$username'";
$result=mysqli_query($dbc, $query);
if(mysqli_num_rows($result)==0)
{
$query='INSERT INTO user (fname, lname, username, password) '.
'VALUES("'.$fname.'", "'.$lname.'", "'.$username.'", "'.$password_hash.'")';
$result=mysqli_query($dbc, $query);
echo "Account Created!";
mysqli_close($dbc);
}
else
{
echo "Username exists, select a different username.";
}
?>
ここに写真があります、
データベースの未定義の値を理解できません。SQL インジェクションが簡単であることはわかっています。後でコードを変更します。