一. 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>
三. 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];
}