本以為一個登陸注冊功能十來分鐘就寫好了,沒想到thinkPHP用久了,原生的php不會寫了
最開始我直接寫了類和方法,在前台傳遞參數給類的login方法(action="index.php/login"),嘗試幾次發現無法訪問,這才意識到,這種方式是mvc模式,原生php不具有
然後,把登陸注冊的php代碼沒有寫類和方法直接放到對應的php文件裡,前端放在相應的HTML文件裡(還是習慣HTML 和php分開來寫)
這時候action直接填對應的文件就好了,具體代碼如下
login.php
<?php
$un = $_POST['username'];
$pd = $_POST['password'];
$mysqli = new mysqli('localhost', 'root', '', 'java');
$result = $mysqli->query("SELECT password FROM user WHERE username = "."'$un'");//第一個容易出錯的地方
$rs=$result->fetch_row();//第二個容易出錯的地方
if ($rs!==null) {
if ($pd != $rs[0]) {
$arr = array('status' => 2, 'b' => '密碼錯誤');
echo json_encode($arr);
}
else {
$arr = array('status' => 1, 'b' => 'success');
echo json_encode($arr);
}
}
else{
$arr = array('status' => 0, 'b' => '沒有此用戶');
echo json_encode($arr);
}
?>
register.php
<?php
$un = $_POST['username'];
$pd = $_POST['password'];
$pd2 = $_POST['password2'];
$mysqli = new mysqli('localhost', 'root', '', 'java');
$result = $mysqli->query("SELECT password FROM user WHERE username = "."'$un'");
$rs=$result->fetch_row();
if ($pd != $pd2) {
$arr = array('status' => 2, 'b' => '兩次輸入密碼不一致');
echo json_encode($arr);
}
elseif($rs!=null){
$arr = array('status' => 3, 'b' => '用戶已存在');
echo json_encode($arr);
}
else {
$mysqli = new mysqli('localhost', 'root', '', 'java');
$sql = "INSERT INTO user (username,password) VALUES ('$_POST[username]', '$_POST[password]')";
$rs = $mysqli->query($sql);
if (!$rs) {
$arr = array('status' => 0, 'b' => 'falied');//插入失敗
echo json_encode($arr);
}
else {
$arr = array('status' => 1, 'b' => 'success');//插入成功
echo json_encode($arr);
}
}
?>
第一處容易出錯的地方 因為傳入的un變量替換成字符串之後也是要加引號,所以應該加兩個
第二處 要熟悉連接數據庫的面向對象的各種輸出函數的用法,mysqli->query返回的是一個對象
對於數據庫處理這一部分 看的太不仔細了,一定要在看一遍,跟著敲一遍