ios mysql注册登录界面_iOS+PHP实现登录功能

本文介绍了如何在iOS应用中实现登录功能,结合PHP和MySQL进行后端处理。首先讨论了在Mac OS环境下搭建后台服务器的挑战,最终选择了Windows系统作为后台,并详细阐述了数据库的创建、表的结构以及PHP代码的编写,包括账号验证逻辑。同时,文章提到了iOS客户端的MVC架构实现,解释了为什么将Model独立出来以及如何处理网络请求和通知以确保正确同步数据。
摘要由CSDN通过智能技术生成

近期在做app开发的时候,因为要用到app登录功能,就自己写了个简单的iOS+PHP实现登录功能的demo,经过运行能够通过登录测试。

在开发过程中,也是碰到了各种各样的问题,经过不断的调试和改变方法,终于将所有的坑都基本上填满了,因此,将最终完整版的代码及相关流程记录在此,供自己及其它需要的人查阅使用。

一、一些约定条件

Mac OS真的是一个太太太封闭的系统环境了,封闭到我已经测试了N中办法,都没办法成功搭建后台服务器——不管是使用集成软件(如MAMP或者XAMPP),还是自行下载MySQL和MyAdmin客户端安装。有的时候Apache无法正常启动,有时候MySQL又故障掉了,更悲哀的是,真机测试时,客户端上输入内容后,无法正常与服务器通信!逼不得已,就只能放弃了,最终采用Windows的WIN7系统的电脑做后台服务器,然后与测试用的手机、编程用的Mac电脑处于同一无线局域网下。==如果哪位同仁能告知如何在MacBook上搭建后台服务器且能正常工作,欢迎不吝赐教,鄙人万分感激!==

当在装有WIN 7系统的电脑上配置服务器时,我使用的是WAMP集成软件,数据库和表的编辑操作使用的是SQLyog软件,这样可以有效的创建、修改表的内容。==注意,在WIN7的电脑上搭建完后台并创建好数据库之后,还需要进行局域网的配置工作,这样才能让处于同一局域网下的设备(如手机)连接到这台电脑及后台==。这个方法我也忘了,所以需要您和其他做PHP后台开发的同仁咨询。==如果您已经知道怎么做了,也欢迎不吝赐教,我好记录在本文章中,供更多人的来学习==。

一些约定条件如下

[x] 手机客户端能成功连接后台服务器,并与后台服务器进行数据交互

[x] 密码为原始输入的字符串,不经过MD5等加密方式的加密(正常开发时,请务必进行加密处理)

[x] 传输方式选择GET传输(为了安全起见,最好使用POST传输方式)

[x] 登录账号只选择手机号(正常开发时,登录的账号可能还有email或者用户名)

二、数据库和表的创建及初始化

使用SQLyog或者phpMyAdmin创建一个名为testAppDatabase的数据库,“基字符集”选择“utf8”,“数据库排序规则”选择“utf8_general_ci”,如下图所示(图像截取的是使用SQLyog软件创建数据库的情况,使用phpMyAdmin类似):

c636ff293e643ba5aebe41139eef3f21.png

然后,在testAppDatabase数据库下,新建一个名为userInformationTable的表,“引擎”选择“InnoDB”,“字符集”选择“utf8”,“核对”选择“utf8_general_ci”,最后创建列名及每一列对应的数据类型以及是否可以为空等,并设置userID为主键、正数、自增,如下图所示(图像截取的是使用SQLyog软件创建表的情况,使用phpMyAdmin类似):

5d3782ed0dd1f9fddcf63c53baabf2b2.png

正常情况下,每一列都最好设置为“非空”,如果用户没有输入,那么可以默认使用“N/A”等填充,等用户输入了当前列对应的内容了,再替换掉“N/A”即可。

因为我们是做登录模块的验证,没有经过注册,因此,数据库中是没有信息的。我们可以手动先填写一些信息,供测试使用。填写好的内容如下图所示(使用的phpMyAdmin客户端插入的数据)

812388f622169c689623447dc6d8bfeb.png

==注意,此时的密码是完全的明文密码,未进行任何加密,这主要是为了测试方便使用,正常开发时,请务必将保存到数据库中的密码进行加密处理。==

至此,数据库相关的“配置”就处理完了,下面是php代码相关的内容。

三、php代码

在php代码中,我们主要完成的是接收客户端传输过来的数据,并将数据与数据库进行匹配验证,一般验证的内容有两点:

[x] 用户输入的账号是否存在

[x] 用户输入的账号存在的情况下,账号和密码是否与数据库中的一一匹配

因此,我们的php代码主要就是围绕这两个逻辑来编写。

首先,编写数据库连接代码,并保存到其它用户读取不到的位置。

对php有一些了解的人应该知道,保存在htddoc路径(对于使用WAMP集成的环境来说,就是www文件夹下,如下图)下的文件,是可以被浏览器通过输入网址的方式读取到的,如果将登录数据库使用的账户和密码信息放到这个文件夹下,那么数据库是非常不安全的。

28fe899ece534fc7b95663ae24587323.png

因此,我们通常将连接数据库需要的php代码单独编写并保存为“.php”格式的文件,然后将这个文件放置在与“www”同级的位置,如下图所示的“connectionToDB.php”文件。

30ff391c802f039d610e742ff3ddf104.png

使用php编辑器编辑“connectionToDB.php”文件,写入的代码如下:

connectionToDB.php

$dbc = mysqli_connect('192.168.1.101', 'root', '你设置的登录数据库的密码', 'testAppDatabase') or die("连接失败:".mysql_error());

//连接数据库的格式通常为

//$dbc = mysqli_connect(hostname, 登录账号, 登录密码, 数据库的名称) or die("连接失败:".mysql_error());

//hostname:一般是localhost,也常设置为作为后台的电脑的IP地址,查询的方法是“运行->cmd->ipconfig /all”,在控制台中找到IPv4地址。

//对于局域网,这个IP地址可能会不断的变化,因此,如果没有做IP固化的操作,每次使用后台服务器时,最好都加纳差一下这个IP地址,然后将“connectionToDB.php”中的IP地址换为正在使用的地址

//登录账号:一般是根用户root。如果不使用根用户,就使用数据库拥有者为你开辟的用户名和密码

//登录密码:对应登录账号的密码

//数据库名称:要连接的数据库的名称。一般一个产品只有一个数据库,该数据库中有很多的表

?>

==注意:php代码的编写,一定要使用utf-8的编码格式,这点要切记。下面提到的php文件均采用这种编码格式,将不再赘述。==

接着,编写和登录验证相关的php代码,将其保存为“login.php”文件并保存到www目录下,如下图所示:

a70c001bb05644f8887883648d76ca27.png

“www”目录就想到于在浏览器中输入的localhost或者192.168.1.101这个IP地址,所以能看到,我们要编写的“login.php”在下两级目录下,知道这点这对于我们编写“login.php”文件中的某些代码是有必要的。

login.php

header('Content-type:text/html;charset=utf-8'); //代码的方式设置编码方式

require_once('../../../connectionToDB.php');

//一个"../"代表一级目录,

//因为我们的“connectionToDB.php”文件与“www”文件夹在同一级目录下

//从“login.php”追溯“connectionToDB.php”需要进过三级目录,所以需要三个"../"

$postedData = $_REQUEST; //$_REQUEST既可以获取到通过POST方式传输的数据,也可以获取到通过GET方式传输的数据

//获取用户输入的账号的形式:手机号、邮箱地址还是一般用户名

$userAccountType = $postedData['Account_Type'];

//获取用户输入的账号和密码

$userAccount = $postedData['User_Account'];

$userPassword = $postedData['User_Password'];

//根据账户形式获取对应的账号内容,用于后面的比对

//是否账号是否存在的标签以及是否登录成功的标签

$accountBeingOrNotFlag = "0"; //0代表账号不存在,1代表账号存在

$loginOKOrNotFlag = "0"; //0代表登录失败,1代表登录成功

switch ($userAccountType) {

case "Telephone": //账号是手机号

$q = "SELECT * FROM userinformationtable WHERE UserTelephoneNumber = $userAccount"; //查询数据库有没有这个手机号

$r = @mysqli_query($dbc, $q);

$rows = @mysqli_num_rows($r); //查询到的信息的行数,如果行数不是0,说明查询到了信息

if($rows) {

//行数不是0,说明有这个手机号,设置标签的值为1

$accountBeingOrNotFlag = "1"; //账号存在

//查询账号和密码是否匹配

$qA = "SELECT * FROM userinformationtable WHERE UserTelephoneNumber = '$userAccount' and UserPassword = '$userPassword'";

$rA = @mysqli_query($dbc, $qA);

$rowsA = @mysqli_num_rows($rA);

if($rowsA) {

//行数不是0,说明账号和密码匹配,设置标签值为1,登录成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值