phpinfo()
,有些有傳回值,有些沒有;有些需要輸入參數,有些不用。function 函數名稱($參數1='預設值' , $參數2='預設值',...){ global $外面的變數1, $外面的變數2; //函數內容,任何有效的 PHP 程式碼,包括其它函數和class定義 ; return 傳回值; }
global
宣告。當然,函數裡面的變數外面也無法取用,除非return
出去。true
、false
,無須引號。{}
將變數和文字隔開$arra['索引']=值
」
$stu[1]="tad"; $stu[2]="joe"; $stu=[ 1=>"tad", 2=>"joe" ]; $stu=array( 1=>"tad", 2=>"joe" );
$stu[1][1]="tad"; $stu[1][2]="joe"; $stu[2][1]="hui"; $stu[2][2]="kai"; $stu = [ 1 => [1 => "tad", 2 => "joe"], 2 => [1 => "hui", 2 => "kai"] ]; $stu = array( 1 => [1 => "tad", 2 => "joe"], 2 => [1 => "hui", 2 => "kai"] );
htmlspecialchars(文字)
函數會將HTML做轉義,讓標籤失效,例如<
轉成<
,預設只轉雙引號(單引號無效),用htmlspecialchars(文字,ENT_QUOTES)
更好。htmlentities()
函數也可轉義,但並不適用中文,因為會連同中文字一起轉義。htmlentities()
和 htmlspecialchars()
只能防止XSS攻擊(避免被值入javascript),不能防止SQL隱碼攻擊。filter_var($變數)
亦可,會直接把HTML語法直接刪除。(int)
即可,如$sn=(int)$_POST['sn'];
real_escape_string()
來過濾。filter_var($變數, 過濾器, 選項)
,幾種常用過濾方法:
FILTER_SANITIZE_STRING
:(預設)去除標籤或特殊字元,html標籤會直接消除FILTER_SANITIZE_ENCODED
:與urlencode()
相同,過濾特殊字串FILTER_SANITIZE_MAGIC_QUOTES
:過濾針對SQL injection做過濾FILTER_SANITIZE_SPECIAL_CHARS
:同htmlspecialchars()
FILTER_SANITIZE_EMAIL
:過濾e-mail,刪除e-mail格式不該出現的字元FILTER_SANITIZE_URL
: 過濾URL,刪除URL格式不該出現的字元FILTER_SANITIZE_NUMBER_INT
:刪除所有字元,只留下數字與+-符號FILTER_VALIDATE_INT
:判斷數字是否有在範圍內FILTER_VALIDATE_BOOLEAN
:判斷布林值,1、true、on、yes都會判斷成true,反之為false,若是這些以外的值會回傳NULLFILTER_VALIDATE_URL
:URL驗證FILTER_VALIDATE_EMAIL
:e-mail驗證FILTER_VALIDATE_IP
:IP驗證$op = isset($_REQUEST['op']) ? filter_var($_REQUEST['op']) : '';
數學運算符 | 範例 | 範例解釋 | 範例結果 |
---|---|---|---|
+(加) | $a + $b | $a加$b | 10+4的結果:14 |
-(減) | $a - $b | $a減$b | 10-4的結果:6 |
*(乘) | $a * $b | $a乘以$b | 10*4的結果:40 |
/(除) | $a / $b | $a除以$b | 10/4的結果:2.5 |
%(求餘數) | $a % $b | $a除以$b的餘數 | 10%4的結果:2 |
$a = $a + 2; 可改寫成 $a += 2;
例子 | 運算符意義 | 解釋 |
---|---|---|
$a == $b | ==相等 | $a和$b的值相等時,才為真 |
$a === $b | ===全等 | $a和$b的值以及資料形態都相等時才為真! |
$a != $b | !=不相等 | $a和$b的值不相等時,才為真 |
$a <> $b | !=不相等 | $a和$b的值不相等時,才為真 |
$a !== $b | !==不全等 | $a和$b的值或資料形態不相等時才為真! |
$a < $b | <小於 | $a小於$b才為真 |
$a > $b | >大於 | $a大於$b才為真 |
$a <= $b | <=小於等於 | $a小於或等於$b才為真 |
$a >= $b | >=大於等於 | $a大於或等於$b才為真 |
$a <=> $b | 比較 | PHP7才新增的 <=> 運算符,只會傳回 -1、0、1三種值! -1,代表左邊小於右邊; 1,代表左邊大於右邊; 0,那就代表左右兩邊相等。 |
運算符 | 意義 | 說明 |
---|---|---|
++$a | 先遞增 | $a值加1之後才傳回$a值 |
$a++ | 後遞增 | 先傳回$a值之後再將$a值加1 |
--$a | 先遞減 | $a值減1之後才傳回$a值 |
$a-- | 後遞減 | 先傳回$a值之後再將$a值減1 |
範例 | 邏輯運算符 | 意義 |
---|---|---|
$a and $b | and(與) | 只有$a 與 $b兩者皆為真,結果才為真 |
$a && $b | and(與) | 只有$a 與 $b兩者皆為真,結果才為真 |
$a or $b | or(或) | 只要$a 或 $b兩者之一為真,結果就為真 |
$a || $b | or(或) | 只要$a 或 $b兩者之一為真,結果就為真 |
$a xor $b | exclusive or(互斥) | 只有$a 與 $b一為真、一為假時,結果才為真 |
!$a | not(否) | 只有$a為假時,結果才為真 |
echo "嗨!" . $user_name . "您好!"; echo "資料庫名稱:" . _DB_NAME; echo "今天是:" . date("Y年m月d日");
switch ($變數) { case '特定值': # 動作... break; default: # 動作... break; }
switch
可以判斷某個變數值,當該變數值符合指定條件時,就去執行哪些動作,基本上就是「一個口令,一個動作」之意。case
到 break
就是完整一組,可以自行添加無限多組。break;
不加也符合語法,但會一直執行到下方動作。default
即預設動作,當變數跟任一個「特定值」都不相符時要進行的動作,一般放在最下方。select
語法:
SELECT `查詢的欄位` [FROM `資料表名稱` 附加的篩選條件]
[where 篩選條件] [group by `欄位名稱`][having group的篩選條件] [order by {unsigned_integer | `欄位名稱` | formula} [asc | desc] ,...] [limit [起點,] 筆數]
$result
$result
的各種取得資料方法,將資料一筆一筆取回。while(){}
迴圈中取回。$result->fetch_assoc()
取出的資料陣列,會以資料表欄位名稱為陣列索引; 以$result->fetch_row()
取出的資料陣列,是以欄位順序為陣列索引,通常搭配list()
使用$data=$result->fetch_assoc();
得到的結果為:
$data['sn']=1; $data['title']='文章標題'; $data['content']='文章內容'; $data['create_time']='2017-10-28 11:21:30'; $data['update_time']='2017-10-28 11:21:30';
$data=$result->fetch_row();
得到的結果為:
$data[0]=1; $data[1]='文章標題'; $data[2]='文章內容'; $data[3]='2017-10-28 11:21:30'; $data[4]='2017-10-28 11:21:30';
list($sn, $title, $content, $create_time, $update_time)=$result->fetch_row();
while(條件為真){ //執行動作 }
for($i=0;$i<迴圈數;$i++){ //執行動作 }
foreach($陣列 as $索引=>$值){ //執行動作 }
mb_strlen($字串, 編碼);
預設會自斷判斷系統編碼,例如:
$len = mb_strlen($data['content']);
編碼);
,例如:
$data['content'] = mb_substr($data['content'], 0, 100);
{foreach $來源 as $別名} {$別名.索引} {foreachelse} 該變數沒有值時要出現的內容 {/foreach}
{foreach from=$來源 key=索引 item=項目 name=別名} {$項目.索引} {foreachelse} 該變數沒有值時要出現的內容 {/foreach}
{$別名@first}
或 {$smarty.foreach.別名.first}
{$別名@last}
或 {$smarty.foreach.別名.last}
{$別名@index}
或 {$smarty.foreach.別名.index}
,依序輸出0、1、2......{$別名@iteration}
或 {$smarty.foreach.別名.iteration}
,依序輸出1、2、3......{$別名@total}
或 {$smarty.foreach.別名.total}
require_once()
或 include_once()
引入。<?php require_once "config.php"; require_once "function.php"; require_once 'smarty/libs/Smarty.class.php'; $smarty = new Smarty; $db = link_db();
<?php $smarty->assign('op', $op); $smarty->assign('title', _PAGE_TITLE); $smarty->display(_PAGE_TEMPLATE);
{include file="header.tpl"}
引入。 .img-container
<video loop muted autoplay poster="影片圖檔.jpg" class="video"> <source src="影片.mp4" type="video/mp4"> </video>
.video { position: absolute; z-index: -10; }