我的PHP學習篇

来源:互联网 发布:php post api json 编辑:程序博客网 时间:2024/06/07 15:13

l        我們可以在命令行視窗中使用mysqladmin –?來查詢相關的一些幫助。mysqladmin –u root –p create mydb。這樣可以來創建一個名為mydb的資料庫。即表示以root的身份進入並要求輸入密碼創建的。我們生成表或資料庫裏也可以用以下的:mysql –u root –p mydb<mydb.dump在輸入root的密碼後便執行mydb.dump的腳本。其中mydb.dump為用sql語句寫的腳本。

l        使用$str=mysql_connect(“sql伺服器”root”123456”)來生成連接mysql資料庫的字串mysql_select_db(“mydb”$str)來實現與資料庫連接。使用$result=mysql_query(“sql語句”,$db)來查詢並保存查詢回來的記錄。使用mysql_field_names($result,n)來獲得第n列的列名.使用mysql_result($result,n,”欄位名”)來調用查詢到的第n筆記錄的某個欄位的值。也可以使用mysql_fetch_array($result)來取得一筆記錄的所有列值.注:在PHPprintf(“s%”,va)來輸出一個為字串的變數,以此類推。

l        在引進頭檔的兩個函數有include()require()。他們之間的區別在於,前者須執行到它時才把頭檔包含進來,出錯了也繼續執行程式,只提示警告資訊;而後者則是程式一運行就把頭檔包含進來,出錯了會中止程式。且后者只能使用一次,故不能在循環中使用require().,且在條件語句中,條件為假時也會執行,因為所有的require()都會在程序一始就執行一次。

l        echoprintf都不是真正的函數,printf有返回值一直返回1所以較為echo要慢些。且printf可以用於複合語句,而echo不能用於複合語句。在PHP中用點(.)號來連接字串。$array = explode(" ", $str); $str字串按空格字元進行分隔,結果返回一個陣列 $array:array("i", "love", "iwind").explode函數有類似功能的有:preg_split(), spliti(), split()等函數。用來列印變數時如果變數並未賦值的話則什麼都不列印。

l        PHP總共有五種變數類型string ,double ,array ,object , integer類型。

l        Nl2br()把括弧裏的內容按原文格式打出。有點類似<pre></pre>

l        $fields=mysql_num_***($result)返回某種類型的個數(如:field返回欄位個數,rows行記錄數)。Mysql_field_***($result,$i)返回結果集中第$i個欄位的(*****)的結果(例:name,type,len可以分別返回$i欄位的名稱,類型和長度。)

l        正規表達式:1.匹配EMAIL/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*  2.匹配URL地址:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)? 3. 用正則運算式限制只能輸入中文:onkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/u4E00-/u9FA5]/g,''))"  4. 用正則運算式限制只能輸入數位:onkeyup="value=value.replace(/[^/d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))"  5.  用正則運算式限制只能輸入數位和英文:onkeyup="value=value.replace(/[/W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))" 6。除去重複字元:var s="abacabefgeeii"
var s1=s.replace(/(.).*/g,"")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2) //
結果為:abcefgi

l        PHP正規表達式中^$他們是分別用來匹配字串的開始和結束。'*', '+', '?', 他們用來表示一個字元可以出現的次數或者順序. 他們分別表示:"zero or more", "one or more", and "zero or one." {m,n}表示mn個,{m}表示m個。字元 '', 相當於OR 操作'.'可以代表所有的單一字元。[a-d] 匹配'a' 'd'的單個字元。當在一組方括號裏使用^是,它表示排除的意思。

特殊字元"?"{0,1}是相等的,它們都代表著:“0個或1個前面的內容前面的內容是可選的 特殊字元"*"{0,}是相等的,它們都代表著“0個或多個前面的內容。最後,字元"+" {1,}是相等的,表示“1個或多個前面的內容

   PHP的正規運算式有一些內置的通用字元簇,列表如下:

字元簇 含義

[[:alpha:]]

任何字母

[[:digit:]]

任何數字

[[:alnum:]]

任何字母和數位

[[:space:]]

任何白字元

[[:upper:]]

任何大寫字母

[[:lower:]]

任何小寫字母

[[:punct:]]

任何標點符號

[[:xdigit:]]

任何16進制的數字,相當於[0-9a-fA-F]

l        在字元編碼和字元之間轉換,請使用 ord() chr() 函數。

l        要查看某個類型,不要用 gettype(),而用 is_type 函數。

l        變數強制轉換為某類型,可以對其使用強制轉換或者 settype() 函數intval()

l        要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函數庫或者 gmp 函數庫

l        count()計算數組的個數,只有命名變量才可以傳位址賦值,如&$var,但是不能用&(45)

l        讀取文件夾:$handle=opendir(“.”);while($file=readdir($handle))echo($file;);closedir($handle);

l        PHP 提供了一些流程控制的替代語法,包括 ifwhileforforeach switch。替代語法的基本形式是把左花括弧({)換成冒號(:),把右花括弧(})分別換成 endif;endwhile;endfor;endforeach; 以及 endswitch;

l        PHP 不支援函數重載,可能也不支持取消定義或者重定義已聲明的函數。

l        不能將一個類的定義放到多個檔中,或多個 PHP 塊中。

l        PHP 4中,var 變數的值只能初始化為常量。用非常量值初始化變數,您需要一個初始化函數,該函數在物件被創建時自動被調用。這樣一個函數被稱之為構造函數

l        “new”默認並不返回引用,而返回一個拷貝。

l        當你 unset 一個引用,只是斷開了變數名和變數內容之間的綁定。這並不意味著變數內容被銷毀了。

l        onkeydown="if (event.keyCode==13) {......}"用來判斷是否是點擊了回車。

l        $_GET取從URL來的變數和從表單GET來的變數.

$_POST取從表單POST來的變數

$_SESSIONSESSION變數.

$_COOKIECOOKIE變數

$_ENV -- 包含系統環境變數

$_GET -- 包含查詢字串中的變數,以及提交方法為GET的表單中的變數

$_POST -- 包含提交方式為POST的表單中的變數

$_COOKIE -- 包含所有cookie變數

$_SERVER -- 包含伺服器變數,例如HTTP_USER_AGENT

$_REQUEST -- 包含$_GET$_POST$_COOKIE的全部內容

$_SESSION -- 包含所有已註冊的session變數

l        PHP中要插入較多的HTML語言時可用以下兩種方法:

echo <<<theEnd

<h1>ada</h1>

theEnd

或者

<?php好多PHP語句?>

插入HTML

<?php繼續PHP?>

l        session_start: 初始化session,需要用session的每一個頁面最開始處調用。
session_destroy:
結束 session,在需要結束session處調。
session_name:
存取目前 session 名稱。
session_module_name:
存取目前 session 模組。
session_save_path:
存取目前 session 路徑。
session_id:
存取目前 session id號。
session_register:
註冊新的session變數。
session_unregister:
刪除已註冊session變數。
session_is_registered:
檢查session變數是否註冊。
session_decode: Session
數據解碼。
session_encode: Session
數據加密。

l        E-mail設計

<?php

    $MailHeader = "From:".$HTTP_POST_VARS['From']."/r/n";

        $To = $HTTP_POST_VARS['Sendto']."/r/n";

        $Subject = $HTTP_POST_VARS['Subject']."/r/n";

        $Content = $HTTP_POST_VARS['Content']."/r/n";

   if (  mail( $To,  $Subject,  $Content,  $MailHeader)  )

      echo "寄信完成";

   else

      echo "寄信失敗";

?>

mail( 收件者,信件標題,信件內容,信件表頭訊息[包含寄件者]  ),

mail( )函數:寄送E-mail。若成功,傳回True; 若失敗,傳回False

l        <script>alert('操作成功或失敗返回輸入介面!'); history.go(-1);</script>

l         PHP動態網頁設計電子郵件

一、電子郵件表單設計。

1.   在「php」資料夾上按右鍵,「開新檔案」send_mail.htm

2.   插入表單(form)

3.   在表單內,插入表格 2欄,5列。百分之60,置中。

4.   輸入文字:收件人,寄件人,標題,內容。

5.   插入按鈕,置中。(送出,清除重寫)

6.   插入輸入元件:
(1)
收件人:插入「文字欄位元」。名稱:「Sendto。初始值:你的E-mail
(2)
寄件人:插入「文字欄位元」。名稱:「From
(3)
標題:插入「文字欄位元」。名稱:「Subject
(4)
內容:插入「文字區域」。名稱:「Content。字元寬度:40,行數:10

7.   設定表單動作:
(1)
選取表單(點選紅色虛線)
(2)
動作:「send_mail.php
(3)
方法:POST

8.  可美化表格。(如加入顏色…)

二、設計寄送電子郵件的PHP程式。

1.          在「php」資料夾上按右鍵,「開新檔案」send_mail.php
「顯示程式碼檢視」

輸入程式碼:

<?php

    $MailHeader = "From:".$HTTP_POST_VARS['From']."/r/n";

        $To = $HTTP_POST_VARS['Sendto']."/r/n";

        $Subject = $HTTP_POST_VARS['Subject']."/r/n";

        $Content = $HTTP_POST_VARS['Content']."/r/n";

   if (mail( $To,  $Subject,  $Content,  $MailHeader)  )

      echo "寄信完成";

   else

      echo "寄信失敗";

?>

 

【程式碼解說】:
(1) $MailHeader = "From:".$HTTP_POST_VARS['From']."/r/n";
  
取得表單中寄件者資料,欄位為「From
(2) $To, $Subject, $Content
同理。分別取得「收件者」、「標題」、「內容」資料。
(3) mail( )
函數:寄送E-mail。若成功,傳回True; 若失敗,傳回False
   mail( )
用法:
   mail(
收件者,信件標題,信件內容,信件表頭訊息[包含寄件者]  )

l         檔案上傳注意事項

1.        form必須要具備兩屬性<form method="post" enctype="multipart/form-data"> form 的標籤中,要加入 enctype="multipart/form-data" 的字串,表示使用者輸入的資料上有檔案上傳,同時 method 一定要用 POST 而不能用 GET

2.        較為重要的變量有$fule,$file_name,,$file_size

l         在設計時可能會出現因編碼不一樣而出樣同樣的字符不等的狀況如你在繁体系統中輸入的字符在HTML中設為charset=gb2312時會判斷是否相等是會出現異常。

l         <input type="button" value="请选择!!" onclick="if (confirm('请选择')) {alert('你选择了是'); return true;}else{alert('你选择了否!'); return true;}">

l         __FILE__文件名,__LINE__執行語句所在行數,php_version當前PHP的版本,php_os當前所有操作系統,E_ERROR指明最近一次不可恢復的錯誤,

l         PHP一樣可以自定義常量define(var,”string”);echo var;結果輸出字符串string

l         當被操作運算的變量中是數字和字母結合時,四則運算時只抽取其中的數據進行運算,并忽略其中的字母。PHP中的靜態變量只能在函數中使用,雖然函數結束時值不會消失,但是其作用或仍然只是在函數內,外界不能引用。

l         PHP變量的作用範圍和其它語言有稍稍不同的就是,程序外的變量在函數內如未指名全局變量的話則不起作用。全局變量的定義不能与賦值同一句使用。

l         函数一般只返回一个值,不过我们可以利用返回一个数组来实现多值的返回。

l         实现变量调用函数,如有一函数fun(),可定义一变量$var=”fun”,然后通过$var()来调用函数。

l         Func_num_args();只能用在函数内部用来计算此函数的参数个数,func_get_arg(int arg_num)用在函数内部用来返回第arg_num+1个参数值。$func_get_args()用在函数内部用来返回包含所有参数在内的一个数组。

l         PHP中类的属性不能直接访问,如一类class point{ var $x,var y……}实例化后$stpoint=new point;不能直接调用point.xpint.y。而只能通过其类内部的函数调用。

l         Double doubleval(mixed var),int intval(mixed var,int base),string strval(mixed var),其中通用的函数转化函数有int settype(mixed var,string type)其第2个参数”string type”只能是以下值之一:integer double string arrayobject

is_int(mixed var),

is_double(mixed var)

is_string(mixed var)

is_object(mixed var)

来判断数据类型,其中以上函数返回的是Boolean值。

string gettype(mixed var)可获得未知数据的类型,其返回

值有integer double string array object "unknow type"空值

返回未知类型。

int empty(mixed var)如果var是一个非0非空的值,则函数返回false

否则返回true

int isset(mixed var)如果var已经被初始化,返回True,否则返回

false

int unset(mixed var)的作用是取消变量的初始化,以后再用到变量var

时,将是一个没有初始化的变量。

l           int printf(string format,mixed[args]……)格式输出

l           用戶登錄設定:<?php
Header("WWW-Authenticate: Basic realm=/"Member/"");
Header("HTTP/1.0 401 Unauthorized");
?>

l           整個數組變量如$arr=array(“a”,”b”,”c”)是用組數名加下標來調用值的。如是單個數組如$err=each($arr);要引用值則只能用$err[value]來引用,用$err[key]來讀取下標。數據在排序后其索引值和值的對應關係沒變,所以只能用each來實現。其中arsort,asort排序后對應關係不變。而rsort,sort排序后對應關係會改變。Shuffle($arr)即隨機化數組。

l           PHP讀取pdf.doc.txt等檔案
<?php
header("Content-type: application/pdf");
header('Content-Disposition: inline; filename="'filename'"');
readfile("test.pdf");
header("Content-type: application/msword");
header('Content-Disposition: inline; filename="'filename'"');
readfile("test.doc");

header("Content-type:application/vnd.ms-excel");                        header("Content-Disposition:inline");
readfile($path);

?>

l            $tomorrow = date( “Y-m-d”, mktime(0,0,0,date(”m”) ,date(”d”)+1,date(”Y”))); //明天

$yesterday = date( “Y-m-d”, mktime(0,0,0,date(”m”) ,date(”d”)-1,date(”Y”))); //昨天

$lastmonth = date( “Y-m-d”, mktime(0,0,0,date(”m”)-1,date(”d”), date(”Y”))); //上一个月

$nextyear = date( “Y-m-d”, mktime(0,0,0,date(”m”), date(”d”, date(”Y”)+1)); //下一年

l           date_default_timezone_set (RPC);

$arr[height] ='5';

$arr[width] ='6';

$o ='$arr[height] + $arr[width]';

echo $o."=";

eval("/$o=$o;");

echo $o."<br>";
字串表達式求值方法

l           在操作sql時注意,$query=”select ‘$fieldname’ from $tablename ”.注意的是列名變量時要加單引號,而表名卻是不要加單引號,否則出錯.注意區別.

l           $currenTime=date(“U”)這樣計算的是當前的時間,可以用date(“format”,$currentTime)這樣的函數來獲得相應的時間相關參數.

l           以下是一個遍歷數姐的方法($arr為數組)
for(reset($arr);$index=key($arr);next($arr))echo “$index : $arr[$index] <br>”
值得注意的是其判斷語句是:$index=key($arr), 即指當$index值為假時停止循環.

l           Php類有定義類,class關鍵字之後是屬性定義和方法定義,順序不能顛倒.類的屬性功能類似變量,用於保存數據,必須用var說明.屬性只能由類的方法存取.

l           Php中比較常用的幾個時間函數是:date() getdate() time() strfdate() mktime() number_format(float number,int [decimals],string[dec_point],string[sousands_sep])