iOS+PHP实现登录功能

  近期在做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类似):
使用SQLyog创建新数据库.PNG

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

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

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

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

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

三、php代码

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

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

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

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

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

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

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

connectionToDB.php

<?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文件均采用这种编码格式,将不再赘述。==

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

登录的php文件路径.png

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

login.php

<?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,登录成功
                    $loginOKOrNotFlag = "1";  



                }else {

                    //行数是0,说明账号和密码不匹配,设置标签值为0,登录失败
                    $loginOKOrNotFlag = "0";  

                }


            }else {

                //行数是0,说明账号不存在,设置标签值为0
                $accountBeingOrNotFlag = "0";  


            }

            //将标签值保存到数组中,然后将其传递给客户端,客户端根据标签值判断对应的操作逻辑
            $returnArr = array("accountBeingOrNotFlag" => $accountBeingOrNotFlag, "loginOKOrNotFlag" => $loginOKOrNotFlag);


            //下面的两行代码是方便测试使用,即将我们测试的一些内容保存到一个.log文件中,然后通过查看这个文件,看结果是否是我们想要的
            $dccc = print_r($returnArr, true);
            file_put_contents('C://Users/Administrator/Desktop/zj.log', $dccc);

            //关闭数据库连接
            mysqli_close($dbc);

            //将要传递给客户端的结果信息通过json编码的形式输出
            echo json_encode($returnArr);  

            break;

            //下面的代码注释和上面的这个case里面的类似,不再赘述
        case "EmailAddress":

            $q = "SELECT * FROM userinformationtable WHERE UserEmailAddress = $userAccount";

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

            @$rows = mysql_num_rows(
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS 分发系统是一种用于将开发者创建的iOS应用程序发送到广大用户手中的工具。而PHP是一种常用的服务器端脚本语言,可以用来处理服务器端的业务逻辑。在iOS应用程序的分发过程中,PHP可以发挥重要作用。 首先,iOS 分发系统可以使用PHP来处理用户访问的请求。当用户在应用商店中下载应用时,会向服务器发送一个请求,PHP可以通过解析这些请求来判断用户的需求,并返回相应的应用程序给用户。PHP可以根据用户的信息进行一些处理,如验证用户的身份、判断用户所在的地区等。 其次,PHP可以用来管理应用程序的版本控制。开发者在更新应用程序时,可以通过PHP将新版本的应用程序上传到服务器,并管理各个版本的应用程序。当用户需要下载应用程序时,PHP可以根据用户的设备信息和版本号来选择合适的应用程序版本供用户下载,以确保用户使用的是最新版本的应用程序。 此外,PHP还可以用来处理应用程序的付款功能。在一些应用中,开发者可能会提供付费的服务或应用内购买的功能。用户要进行付款时,PHP可以通过调用第三方支付接口来实现支付功能,并进行相应的逻辑处理,如确认支付结果、生成订单等。 综上所述,iOS 分发系统和PHP是紧密相关的。PHP可以用来处理用户请求、管理应用程序的版本控制并处理付款功能等,使得iOS应用程序的分发过程更加高效、便捷和安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值