美文网首页
iOS 与XAMPP的交互

iOS 与XAMPP的交互

作者: CarsonChen | 来源:发表于2016-04-15 22:37 被阅读242次

一. XAMPP for Mac组件环境搭建

XAMPP = Apache + PHP + MySQL
XAMPP支持多个操作系统:Windows,Linux,Mac OS X
Code2 是一款试用与Mac电脑的网页编程工具,具有多语言支持(HTML,PHP,JavaScript,CSS等)

二. Web开发HTML网页与HTTP

BS模式:客户端通过浏览器以URL地址的形式向服务器发送访问Web页面的请求.服务器做出响应,并以超文本的格式回传客户端所请求的Web页面

HTML的简单语法:

<html>
    <title>
    Hello
    </title>
    <body>
        Hello,this is Carson !
    </body>
</html>

详见:http://www.w3school.com.cn/

三. PHP基本语法与概念

PHP的基本语法:

<?php
    // 向客户端发送数据!
    echo("Hello,this is Carosn!");
    ?>

PHP可以嵌入HTML语法,但是文件后缀名必须为.php

<html>
    <title>
    Hello
    </title>
    <body>
        Hello,this is Carson !  
    <?php
    // 向客户端发送数据!
    echo("<br/>");
    echo("Hello,this is Carosn!");
    ?>
    </body>
</html>

PHP中定义变量时,会自动定义变量类型

$int_var = 1;
$str_var = "Carson";
// gettype($int_var);为获取变量类型 $后为变量名
$strAppend_var = " is me.";
// PHP中的字符串拼接使用"."
echo($str_var.$strAppend_var);

PHP的分支结构:

$int_a = 3;
$int_b = 5;
if ($int_a > $int_b) {
    echo($int_a);
} else {
    echo($int_b);
}
// 三目运算在PHP中同样适用
echo($int_a > $int_b ? $int_a : $int_b);

PHP的循环结构:

// for 循环
for ($i = 0; $i < 10; $i++) {
    echo($i);
    echo("<br/>");
}
    
// while循环
$i = 0;
while ($i < 10) {
    echo($i);
    echo("<br/>");
    $i++;
}
    
// do-while循环
$j = 0;
do {
    echo($j);
    echo("<br/>");
    $j++;
} while ($j < 10)

PHP的数组:

$array_var = array("Carson","is","a","clever","boy");
// 数组元素个数
$count = count($array_var);
// 数组结构发送
echo(var_dump($array_var));
// 给数组中添加元素
$array_var[] = "HaHa!";
// 换行
echo("<br/>");
echo(var_dump($array_var));
// 删除数组中的元素
unset($array_var[0]);
echo("<br/>");
echo(var_dump($array_var));
// 数组排序(升序)
sort($array_var);
echo("<br/>");
echo(var_dump($array_var));
// 数组排序(降序)
rsort($array_var);
echo("<br/>");
echo(var_dump($array_var));

PHP的字典:

$dict_var = array("name"=>"Carson","age"=>"23","gender"=>"Male");
echo(var_dump($dict_var));
echo("<br/>");
// 字典转换成为json串
echo(json_encode($dict_var));

GET请求处理:

$name = $_GET["name"];
$age = $_GET["age"];
$sex = $_GET["sex"];
echo($name."<br/>");
echo($age."<br/>");
echo($sex."<br/>");

POST请求处理:

$name = $_POST["name"];
$age = $_POST["age"];
$sex = $_POST["sex"];
echo($name."<br/>");
echo($age."<br/>");
echo($sex."<br/>");

当变量使用_REQUEST修饰则使用GET与POST都行

$name = $_REQUEST["name"];
$age = $_REQUEST["age"];
$sex = $_REQUEST["sex"];
$pwd = $_REQUEST["pwd"];
echo($name."<br/>");
echo($age."<br/>");
echo($sex."<br/>");
echo($pwd."<br/>");

四. MySQL数据库操作与PHP交互

  • 判断连接MySQL是否成功
// 连接数据库(第一个参数为服务器地址,第二个参数为MySQL登录名,第三个参数为登陆密码)
$link = mysql_connect("127.0.0.1","root","");
// 选择连接的数据库的库名
$select_db = mysql_select_db("test");
// 进行判断,如果连接成功,向前段发送一个连接成功的消息,失败则发送失败消息
if ($link && $select_db) {
    echo("数据库连接成功!");
} else {
    echo("数据库连接失败!");
}
// 关闭数据库
mysql_close($link);
  • 查询表
// 输入SQL语句进行查询
$result = mysql_query("select * from userlist where name = '$name'");
// 返回所有结果行数(数据库中的伴随指针或游标)
$stmt = mysql_num_rows($result);
// 返回结果
$userInfo = mysql_fetch_array($result);
// 释放伴随指针
mysql_free_result($result);
  • PHP连接MySQL的设置登陆的后台数据处理源码:
<?php
// 连接数据库
    $link = mysql_connect("127.0.0.1","root","");
    // 连接哪个数据库
    $select_db = mysql_select_db("conn",$link);
    
    // 进行判断是否连接成功
    if ($link && $select_db) {
//      echo("数据库连接成功!");
        // 准备SQL语句
        $result = mysql_query("select * from userlist where name = '$name'");
        // 返回数据所在行数
        $sum_row = mysql_num_rows($result);
        // 得到数据
        $userInfo = mysql_fetch_array($result);
        
        if ($result) {
            // 如果result存在的话,说明用户存在,则匹配密码
            $user_pwd = $pwd;
            $sql_pwd = $userInfo["pwd"];
            if ($user_pwd == $sql_pwd) { // 用户密码匹配成功!
                $success = array("flag"=>"success","name"=>$userInfo["name"],"age"=>$userInfo["name"],"sex"=>$userInfo["sex"]);
                echo(json_encode($success));
            } else { // 用户密码匹配失败!
                $errorDic = array("flag"=>"用户名或密码错误!");
                echo(json_encode($errorDic));
            }
        } else { // 用户不存在
            $errorDic = array("flag"=>"用户不存在,请先注册!");
            echo(json_encode($errorDic));
        }
    } else {
        $errorDic = array("flag"=>"数据库连接失败!");
        echo(json_encode($errorDic));
    }
    // 释放伴随指针或游标
    mysql_free_result($result);
    // 关闭数据库
    mysql_close($link);

    ?>

五.iOS与PHP通讯协议设计

Xcode中iOS进行POST请求源码:

- (void)connectMySQLByPHP {
    // 文件地址:
    //http://127.0.0.1/Carsontest/testConnection.php
    // 文件数据
    //name=Carson&age=23&sex=Male&pwd=0312
    
    // 获取文件的url
    NSString *urlStr = @"http://127.0.0.1/Carsontest/testConnection.php";
    NSURL *url = [NSURL URLWithString:urlStr];
    // 创建请求对象(异步Block,POST请求)
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    request.HTTPMethod = @"POST";
    // 将数据转换成为NSData对象
    NSString *dataStr = @"name=Carson&age=23&sex=Male&pwd=0312";
    NSData *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
    request.HTTPBody = data;
    // 创建会话对象(单例)
    NSURLSession *session = [NSURLSession sharedSession];
    // 指定会话模式,为请求数据模式
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error) {
            NSLog(@"请求数据失败!-----%@",error.description);
        } else {
            NSLog(@"请求数据成功!");
            NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
            // JSON解析(解析成为NSDictionary对象)
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"%@",dict);
            // 将上述转化的NSDictionary的对象转化成为JSON字符串.
            BOOL flag = [NSJSONSerialization isValidJSONObject:dict];
            if (flag) {
                NSData *dataJSON = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
                NSString *dataJSONStr = [[NSString alloc] initWithData:dataJSON encoding:NSUTF8StringEncoding];
                NSLog(@"%@",dataJSONStr);
            } else {
                NSLog(@"该JSON对象不能转化成为JSON串!");
            }
        }
    }];
    // 开始请求
    [dataTask resume];
}

相关文章

网友评论

      本文标题:iOS 与XAMPP的交互

      本文链接:https://www.haomeiwen.com/subject/lcmnlttx.html