這個(gè)是一個(gè)簡單的基于ios的 從服務(wù)器上實(shí)現(xiàn)登陸注冊(cè)的小demo。
首先要安裝mamp 前面的文章應(yīng)該有把,然后寫兩個(gè)php文件用于服務(wù)器判定登陸注冊(cè)功能。創(chuàng)建一個(gè)數(shù)據(jù)庫存儲(chǔ)用戶數(shù)據(jù)。
我前面的文章有提到怎么弄,有點(diǎn)亂,見諒見諒。
先看下效果把。
image.png
image.png
提示已存在需要在數(shù)據(jù)庫中將user_name這列設(shè)定為唯一,這樣用戶名就不會(huì)重復(fù)
下面我再貼一下php的代碼,然后上項(xiàng)目的github地址
config.php
<?php
$DBHOST="localhost";
$DBUSER="root";
$DBPWD="root";
$DBNAME="ioslogin";
$PORT=8889;
?>
index.php
<?php
header("Content-type:text/json;charset=utf-8");
require_once "config.php";
$con = new mysqli($DBHOST,$DBUSER,$DBPWD,$DBNAME);
if (mysqli_connect_error()) {
die('Connect Error ('.$con->connect_errno.')'.$con->connect_error);
}
$con->query('set names utf8;');
$sql = "SELECT * FROM users";
$result = $con->query($sql);
$data=array();
while ($tmp=mysqli_fetch_assoc($result)) {
$data[]=$tmp;
}
//打印數(shù)據(jù)庫數(shù)據(jù)
// var_dump($data);
$action = $_GET['action']; //用來區(qū)分是登錄還是注冊(cè)
$user_name = $_GET['user_name']; //GET方法方便用于調(diào)試
$user_pwd = $_GET['user_pwd'];
switch ($action) {
case "login":
$str = "select * from users where user_name='$user_name' and user_pwd='$user_pwd'";
$result = $con->query($str);
@$rows = mysqli_num_rows($result);
if($rows) {
$loginFlag = "1"; //登錄成功
}
else {
$loginFlag = "0"; //登錄失敗
}
$returnArr = array("loginFlag" => $loginFlag);
echo json_encode($returnArr); //輸出json格式
break;
case "regist":
$str = "INSERT INTO users (user_name,user_pwd) values ('$user_name','$user_pwd')";
$result = mysqli_query($con,$str);
if($result) {
$registFlag = "1"; //注冊(cè)成功
}
else {
$registFlag = "0"; //注冊(cè)失敗
}
$returnArr = array("registFlag" => $registFlag);
echo json_encode($returnArr);
break;
default :
echo "登錄方式錯(cuò)誤";
return false;
break;
}
mysqli_close($con);
?>
項(xiàng)目中將原始ios代碼中的NSURLConnection和UIAlertView替換成了最新的NSURLSession和UIAlertController。項(xiàng)目還是有點(diǎn)問題的,注冊(cè)即使是空的用戶名也能成功,是PHP代碼的問題,暫時(shí)不弄了。先這樣了。
還有數(shù)據(jù)庫中的user_id是自增長的 每次注冊(cè)成功之后都會(huì)加一,但是我在數(shù)據(jù)庫中刪除幾條之后,id還是會(huì)按照沒刪除之前述職增長,暫時(shí)不清楚如何修改。