iOS 与XAMPP的交互

一. 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的简单语法:


    
    Hello
    
    
        Hello,this is Carson !
    

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

三. PHP基本语法与概念

PHP的基本语法:


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


    
    Hello
    
    
        Hello,this is Carson !  
    ");
    echo("Hello,this is Carosn!");
    ?>
    

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("
"); } // while循环 $i = 0; while ($i < 10) { echo($i); echo("
"); $i++; } // do-while循环 $j = 0; do { echo($j); echo("
"); $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("
"); echo(var_dump($array_var)); // 删除数组中的元素 unset($array_var[0]); echo("
"); echo(var_dump($array_var)); // 数组排序(升序) sort($array_var); echo("
"); echo(var_dump($array_var)); // 数组排序(降序) rsort($array_var); echo("
"); echo(var_dump($array_var));

PHP的字典:

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

GET请求处理:

$name = $_GET["name"];
$age = $_GET["age"];
$sex = $_GET["sex"];
echo($name."
"); echo($age."
"); echo($sex."
");

POST请求处理:

$name = $_POST["name"];
$age = $_POST["age"];
$sex = $_POST["sex"];
echo($name."
"); echo($age."
"); echo($sex."
");

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

$name = $_REQUEST["name"];
$age = $_REQUEST["age"];
$sex = $_REQUEST["sex"];
$pwd = $_REQUEST["pwd"];
echo($name."
"); echo($age."
"); echo($sex."
"); echo($pwd."
");

四. 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的设置登陆的后台数据处理源码:
"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的交互)