文章加密

;

2018年7月12日 星期四

PHP 看到chap38 14:29

1.

2.一些小細節
  • echo作用為:把結果返回給瀏覽器
  • Ctrl+J可以複製當前行
  • 除了//也可用#(較古老)做單行註釋
    區分大小寫
    一個語句以 ; 結束
    變量命名以 英文 或 _ 開頭
  • Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in C:/位置 on line 4    (解析錯誤:語法錯誤,不希望T_ECHO,希望',' or ';')
  • PHP變量的數據類型,是變化的,由運行時的上下文決定,如下int及float
    PHP是弱數據類型的編成語言
  • PHP數據類型分3大類:


    1. 基本數據類型(標量類型)
      a. 整型(integer)
           a.1 可以用十進制,也可以用八進制、十六進制      ex
            $a= 0123; //八進制→3*8的0次方 + 2*8的1次方 + 1*8的2次方=83
            $a=0x1A; //十六進制→A*16的0次方 + 1*16的1次方=26(其中A=10)
            參考:$a= 123; //十進制→3*10的0次方 + 2*10的1次方 + 1*10的2次方=123

            a.2
           
           
      請問為什麼PHP_INT_MAX是2147483647?請問PHP的int型,負數最大值是多少?
      答:看下圖並用二進制去計算第一行。下圖第二行。


      如果一個整數的值超過最大範圍,則型態會自動從int變為float。
      $a=2; 在內存中如何存在?
      答:00000000 00000000 00000000 00000010
    2. b. 小數型(浮動數,浮點數,包含單精度float和雙精度double)

           单精度和双精度精确的范围不一样,单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。
      c. 布林類型(boolean)


      其中""這樣即表示空字串,不用空格
      d. 字符(string)
    3. 複合數據類型
      a. 數組/陣列array
      b. 對象/物件object
    4. 特殊數據類型
      a.空型(NULL)
      b.資源類型(resource),ex: $con=mysql_connect("localhost","root","root");

  • 常考題:請思考以下程式呈現之結果?答案請在下方反白
    <?php
              $a;
              echo $a;
    ?>

    //Notice: Undefined variable:a in C:\位置 on line4
    //(通知:未定義變量在blabla~)
    //究竟$a是什麼呢?老師用 var_dump($a); 去做測試,結果為NULL!
3.除了最正常的寫法外,還可以用以下方法

2018年7月8日 星期日

PHP介紹與安裝

先補充
<?php
phpinfo();
?>
不能寫成
<?
phpinfo();
?>
否則會沒有畫面
MAGIC~~

web開發分為:
  1. 靜態web資源(如html頁面):指web頁面中工人們瀏覽的數據始終是不變。
  2. 動態web資源:指web頁面中工人們瀏覽的數據是由程序產生的,不同時間點訪問web頁面看到的內容各不相同。
    →比如需要發帖、網上支付、發短信、發郵件。
    →常用的動態web開發技術:PHP,JSP/Servlet,ASP,asp.net等
    →其底層語言是C(PHP)→C++→JAVA(JSP)→C#(asp.net)
  3. web開發技術介紹
    a.asp
其中缺點3,是指ASP只能運行在windows系統(平台代表 操作系統)
        b.jsp
優點還有JAVA是開源的,可做二次開發(掌控自己的生命)
缺點2延伸出的結果就是,小公司通常不會選擇JAVA,成本過高
        c.PHP
其中第3點lamp(linux apache mysql php都是免費的)
第4點代表可以二次開發
而缺點:
i.安裝比較複雜,配置比較多
ii.太靈活,比如
<?php 
       $a="apple";
       $a=123;

?>
//結果$a=123;
iii.解釋運行(相對編譯運行而言,例如C,JAVA)機制,所以有些錯誤,到真正運行時才會報暴露
以下為編譯運行範例:



  4.

5. PHP是lendorf為維護個人網頁(Personal HomePage, PHP),而用C語言開發的cgi工具程序集,用於替代perl程序,它是英文超文本預處理(PHP Hypertext Preprocessor)語言,它是HTML內嵌式的語言,PHP腳本在服務器端運行,PHP目前的開發和商業化由zend公司管理。
※超文本指的是既可以展現圖片,也可以呈現文字,甚至影音。

6.PHP開發工具:記事本(編輯器)→editplus, vim, zendstudio, easyeclipse(這些也被稱為ide, Integrated Development Environment, 集成開發工具, 其包含編輯器的功能)
 編譯環境跟運行環境的問題,因為PHP本身有跨平台的特性,所以沒問題,但要注意版本不同可能也需重新編譯

7.b/s , c/s

 ※http協議專門用在網頁
※優缺點
 

8.web服務器 (iis, lighttpd(唸作來替), apache(主流))

9.安裝與控制apache
   i. 確認電腦中沒有apache(電腦圖示上按右鍵→管理→服務與應用程式→服務,在這裡還可以選擇應用軟體自動開啟/手動開啟/停用的類型)
   ii. 點擊安裝軟體(例如 httpd-2.2.17-win32-x86-no_ssl.msi),之後下一步...其他如圖操作

※服務名沒有再ds註冊,訪問不了,故也可寫localhost

在瀏覽器中打上http://localhost/,結果呈現 It works!(這是因為在htdocs文件夾裡index.html內容寫它),那就是安裝成功了
apache執行時在,在工作管理員的應用程式欄裡,叫做httpd.exe

cd(change directory)切換目錄
dir顯示出該資料夾下的內容


為什麼呢?因為在命令字元裡輸入指令,他會先在當前目錄找有沒有該應用程序(ex: httpd),沒有的話就開始在環境變數裡的PATH(路徑)找,然後就找到了

10.端口port

 一個端口只能一個監聽,但是一個程序(例如apache)可以監聽多個端口(但其實正常使用不會用到這個)

※mysql會佔據:3306,apache則是:80

11.apache目錄結構

  •  logs--error.logs記載一些運行的紀錄
  • modules--apache是由模塊(.so 的檔案)組成的,apache啟動→讀取httpd.conf,其中記載有LoadModule....,通常不動它
比較重要的文件:bin, conf, htdocs, modules

12. 運行機制圖(太深入了,大概了解就好)
13.apache虛擬目錄

其中,第一點 #配置虛擬目錄 需修改httpd.conf檔案
第四點設置歡迎頁面,也就是根(主)頁面,它會尋找news.html檔案,找不到再找index.html檔案,再找不到找index.htm,再找不到找index.php檔案

其中,order allow, deny我想應該是說先執行allow再執行deny,然後應有下一行。
※瀏覽器輸入網址並回車後,
i.會解析主機名,即執行C:\WINDOWS\system32\drivers\etc\hosts,查詢域名及ip
ii.如果查詢不到,則到外網dns(Domain Name System,域名伺服器)去查詢域名和ip→這步錯誤會發生無法找到網頁的錯誤,有些電信會在此時導航到他們的電信頁面去,打廣告,但較少
iii.查詢到後會向該伺服器發送http請求,例如: GET /HTTP/...
iv.被請求的伺服器對請求進行解析,確認主機(因為同一個apache服務器可能有多個虛擬主機)、站點名稱(檔案位置)、資源名稱(副檔名),取得資源(文件)→這步錯誤會發生404錯誤,無法顯示網頁
v.返回該頁面靜態
※上圖是UML時序圖

14.apache虛擬主機

host文件指C:\WINDOWS\system32\drivers\etc\hosts
※甚至把www.shunping.com(域名)改成www.google.com ,可使該電腦永遠找不到外網的google頁面!
※在有創建虛擬主機,而虛擬主機設定的ip不是該主機原ip的情況下,用該主機原本的ip地址是無法連結的!
※內網裡有時會有多台主機(ip),例如學校、公司,此時把虛擬主機的ip,設為別台內網的ip,也是連不過去的,這需要有授權!
※在命令字元裡打上「ping 網址 」,可以得到該網址ip位置


 


15.apache本身不會解析php檔案,如果安裝後沒有做任何處理就訪問php頁面,會出現要訪問者下載php檔案的情形

  





※其中 httpd.conf是apache的配置;php.ini是php的配置。.dll檔是在開發windows會見到動態連接庫。
httpd.conf修改後的呈現如下

上面是要寫phpinfo();  他打錯了
 php.ini修改後的呈現如下
4.安裝MySQL有一步註冊是註冊後有新版本時他會發送電子郵件通知,看個人要不要,不要就skip

下面的圖可能出現先後順序不對,在自己看一下



上面這張老師又說應該選manual且15個太少了,但他沒改選了卻沒有改15的數字


 上圖是指等安裝好以後服務的名稱叫做MySQL
上圖另一個選項Create An Anonymous Account是指創建一個匿名帳戶,這個別人也可以登入,很不安全

這四個全勾表示apache+php+MySQL都成功安裝了(似乎安裝順序就是要這樣依序),沒勾可以自己去勾,如果不能勾起來才是真的沒安裝
※補充,當連結資料庫的密碼輸入錯誤時會出現下方文字


 16.一個服務器想要有兩個以上的站點
      第一種方法用端口: browser取得http://shunping.com:81/後,會去訪問hosts檔案,查到它的ip是127.0.0.1後,會到httpd-vhosts.conf查到正確端口...blabla

下圖配置我們的httpd-vhosts.conf即是配置虛擬主機

       第二種方法(因為已經在端口的方法做了一些修改,比如啟用httpd-vhosts.conf,註銷documentroot,所以下圖沒寫,但其實也要做哦!)