iOS 與XAMPP的交互

一. XAMPP for Mac組件環(huán)境搭建

XAMPP = Apache + PHP + MySQL
XAMPP支持多個操作系統(tǒng):Windows,Linux,Mac OS X
Code2 是一款試用與Mac電腦的網(wǎng)頁編程工具,具有多語言支持(HTML,PHP,JavaScript,CSS等)

二. Web開發(fā)HTML網(wǎng)頁與HTTP

BS模式:客戶端通過瀏覽器以URL地址的形式向服務(wù)器發(fā)送訪問Web頁面的請求.服務(wù)器做出響應(yīng),并以超文本的格式回傳客戶端所請求的Web頁面

HTML的簡單語法:

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

詳見:http://www.w3school.com.cn/

三. PHP基本語法與概念

PHP的基本語法:

<?php
    // 向客戶端發(fā)送數(shù)據(jù)!
    echo("Hello,this is Carosn!");
    ?>

PHP可以嵌入HTML語法,但是文件后綴名必須為.php

<html>
    <title>
    Hello
    </title>
    <body>
        Hello,this is Carson !  
    <?php
    // 向客戶端發(fā)送數(shù)據(jù)!
    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的分支結(jié)構(gòu):

$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的循環(huán)結(jié)構(gòu):

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

PHP的數(shù)組:

$array_var = array("Carson","is","a","clever","boy");
// 數(shù)組元素個數(shù)
$count = count($array_var);
// 數(shù)組結(jié)構(gòu)發(fā)送
echo(var_dump($array_var));
// 給數(shù)組中添加元素
$array_var[] = "HaHa!";
// 換行
echo("<br/>");
echo(var_dump($array_var));
// 刪除數(shù)組中的元素
unset($array_var[0]);
echo("<br/>");
echo(var_dump($array_var));
// 數(shù)組排序(升序)
sort($array_var);
echo("<br/>");
echo(var_dump($array_var));
// 數(shù)組排序(降序)
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/>");
// 字典轉(zhuǎn)換成為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/>");

當(dāng)變量使用_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數(shù)據(jù)庫操作與PHP交互

  • 判斷連接MySQL是否成功
// 連接數(shù)據(jù)庫(第一個參數(shù)為服務(wù)器地址,第二個參數(shù)為MySQL登錄名,第三個參數(shù)為登陸密碼)
$link = mysql_connect("127.0.0.1","root","");
// 選擇連接的數(shù)據(jù)庫的庫名
$select_db = mysql_select_db("test");
// 進行判斷,如果連接成功,向前段發(fā)送一個連接成功的消息,失敗則發(fā)送失敗消息
if ($link && $select_db) {
    echo("數(shù)據(jù)庫連接成功!");
} else {
    echo("數(shù)據(jù)庫連接失敗!");
}
// 關(guān)閉數(shù)據(jù)庫
mysql_close($link);
  • 查詢表
// 輸入SQL語句進行查詢
$result = mysql_query("select * from userlist where name = '$name'");
// 返回所有結(jié)果行數(shù)(數(shù)據(jù)庫中的伴隨指針或游標(biāo))
$stmt = mysql_num_rows($result);
// 返回結(jié)果
$userInfo = mysql_fetch_array($result);
// 釋放伴隨指針
mysql_free_result($result);
  • PHP連接MySQL的設(shè)置登陸的后臺數(shù)據(jù)處理源碼:
<?php
// 連接數(shù)據(jù)庫
    $link = mysql_connect("127.0.0.1","root","");
    // 連接哪個數(shù)據(jù)庫
    $select_db = mysql_select_db("conn",$link);
    
    // 進行判斷是否連接成功
    if ($link && $select_db) {
//      echo("數(shù)據(jù)庫連接成功!");
        // 準(zhǔn)備SQL語句
        $result = mysql_query("select * from userlist where name = '$name'");
        // 返回數(shù)據(jù)所在行數(shù)
        $sum_row = mysql_num_rows($result);
        // 得到數(shù)據(jù)
        $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"=>"數(shù)據(jù)庫連接失敗!");
        echo(json_encode($errorDic));
    }
    // 釋放伴隨指針或游標(biāo)
    mysql_free_result($result);
    // 關(guān)閉數(shù)據(jù)庫
    mysql_close($link);

    ?>

五.iOS與PHP通訊協(xié)議設(shè)計

Xcode中iOS進行POST請求源碼:

- (void)connectMySQLByPHP {
    // 文件地址:
    //http://127.0.0.1/Carsontest/testConnection.php
    // 文件數(shù)據(jù)
    //name=Carson&age=23&sex=Male&pwd=0312
    
    // 獲取文件的url
    NSString *urlStr = @"http://127.0.0.1/Carsontest/testConnection.php";
    NSURL *url = [NSURL URLWithString:urlStr];
    // 創(chuàng)建請求對象(異步Block,POST請求)
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    request.HTTPMethod = @"POST";
    // 將數(shù)據(jù)轉(zhuǎn)換成為NSData對象
    NSString *dataStr = @"name=Carson&age=23&sex=Male&pwd=0312";
    NSData *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
    request.HTTPBody = data;
    // 創(chuàng)建會話對象(單例)
    NSURLSession *session = [NSURLSession sharedSession];
    // 指定會話模式,為請求數(shù)據(jù)模式
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error) {
            NSLog(@"請求數(shù)據(jù)失敗!-----%@",error.description);
        } else {
            NSLog(@"請求數(shù)據(jù)成功!");
            NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
            // JSON解析(解析成為NSDictionary對象)
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"%@",dict);
            // 將上述轉(zhuǎn)化的NSDictionary的對象轉(zhuǎn)化成為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對象不能轉(zhuǎn)化成為JSON串!");
            }
        }
    }];
    // 開始請求
    [dataTask resume];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末污朽,一起剝皮案震驚了整個濱河市炊邦,隨后出現(xiàn)的幾起案子谭企,更是在濱河造成了極大的恐慌新博,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件例书,死亡現(xiàn)場離奇詭異艘策,居然都是意外死亡,警方通過查閱死者的電腦和手機通熄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悄但,“玉大人棠隐,你說我怎么就攤上這事石抡¢芟” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵啰扛,是天一觀的道長嚎京。 經(jīng)常有香客問我,道長隐解,這世上最難降的妖魔是什么鞍帝? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮煞茫,結(jié)果婚禮上帕涌,老公的妹妹穿的比我還像新娘。我一直安慰自己续徽,他們只是感情好蚓曼,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钦扭,像睡著了一般纫版。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上客情,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天其弊,我揣著相機與錄音癞己,去河邊找鬼。 笑死梭伐,一個胖子當(dāng)著我的面吹牛痹雅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糊识,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼练慕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了技掏?” 一聲冷哼從身側(cè)響起铃将,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哑梳,沒想到半個月后劲阎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡鸠真,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年悯仙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吠卷。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡锡垄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祭隔,到底是詐尸還是另有隱情货岭,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布疾渴,位于F島的核電站千贯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搞坝。R本人自食惡果不足惜搔谴,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桩撮。 院中可真熱鬧敦第,春花似錦、人聲如沸店量。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垫桂。三九已至师幕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霹粥。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工灭将, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人后控。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓庙曙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浩淘。 傳聞我的和親對象是個殘疾皇子捌朴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容