PHP 基本知識

基本語法

<?php
//單行註解

/*
多行註解
*/

//echo 顯示文字
//;代表結束
echo "Hello world";
?>

變數

<?php

/*$宣告變數*/
$x=3;
$y=5;

/*修改變數*/
$x=4;
//x就變成4了

/*輸出變數*/
echo $x;

/*同時輸出字串與變數*/
$name="Ian";
//中間用.連接兩者
echo "Hello".$name;
//output: Hello Ian

/*同時輸出法2*/
$name="Ian";
echo "Hello $name";
//output: Hello Ian
//echo 使用"包起來,會自動識別裡面的$變數

/*同時輸出法注意*/
$name="Ian";
echo 'Hello $name';
//output: Hello $name
//echo 使用'包起來,不會識別裡面的$變數,全部都會變成字串


?>

運算

1+2
1:運算元
+:運算子
2:運算元

基本運算子

運算子符號
+ 相加
相減
* 相乘
/ 相除
% 模除(取餘數)
++ 連加1
連減1

關係運算子

關係運算子
> 大於
< 小於
>= 大於等於
<= 小於等於
== 等於
!= 不等於
運算成立:true,echo顯示為1
運算不成立:false,echo 顯示為無

邏輯運算子:針對布林運算

邏輯運算子
&&
||
! 非(反轉現在ture/false的狀態)

選擇性敘述:if-else

<?php

// 獲得今天的日期,並將 Monday/Tuesday/.../Sunday 存放於 wday 變數中
date_default_timezone_set("Asia/Taipei");
$today = getdate();
$wday = $today['weekday'];

// 依照不同的星期顯示繞口令
if($wday == 'Monday'){
    echo "星期一,猴子穿新衣";
}
elseif($wday == 'Tuesday'){
    echo "星期二,猴子肚子餓";
}
elseif($wday == 'Wednesday'){
    echo "星期三,猴子去爬山";
}
elseif($wday == 'Thursday'){
    echo "星期四,猴子看電視";
}
elseif($wday == 'Friday'){
    echo "星期五,猴子去跳舞";
}
elseif($wday == 'Saturday'){
    echo "星期六,猴子去斗六";
}
else{
    echo "星期日,猴子過生日";
}

?>

選擇性敘述:switch case

//放晴:$sunny==2
//陰天:$sunny==1
//非晴非陰→雨天:default

switch($sunny){
  //$sunny==2
  case 2:
    //放晴出去玩
    play();
    //沒有break的話即便$sunny==2,程式碼也會繼續往下執行default的lol();
    break;

  //$sunny==1
  case 1:
    //陰天散步
    walk();
    break;

  //既非晴天亦非陰天
  default:
    //在家打lol
    lol();
}

while迴圈

<?php

while($sunny==false){
  //如果天還沒亮,繼續睡覺
  sleep();
}

?>

陣列

<?php

// 建立陣列
$fruits = array("蘋果","香蕉","梨子","芭樂");
//輸出索引値key為 0 的元素
echo $fruits[0];
echo "<br>";

// 建立陣列(自訂索引値)
$fruits_eng = ["a"=>"蘋果","b"=>"香蕉","p"=>"梨子","g"=>"芭樂"];
// 輸出索引値為 p 的元素
echo $fruits_eng["p"];

?>

函數

參數→函式本體→回傳値

<?php

//square為函式的名字
//$x為參數
function square($x){

 $y=$x*$x;
 return $y;
 //return回傳値

}
echo square(2);

?>

HTTP Method

client向server要資料的溝通方式

  • GET 向server索取資料
  • POST 給予server資料

GET:html送出資料後跳出的php網址列會顯示使用者鍵入的資料

<!-- 送出的對象13-1.php -->
<!-- 送出的方式HTTP Method GET -->
<form action="13-1.php" method="get">
 <input type="text" name="firstname">
 <input type="submit" name="submit" value="送出">
</form>
<?php

//$_GET超級全域變數
//只要PHP存在,有對應的GET資料傳進來時,這個變數就會永遠存在
$name = $_GET['firstname'];

echo "Hi $name!";

?>

POST:html送出資料後跳出的php網址列不會顯示使用者鍵入的資料

<!-- 送出的對象13-1.php -->
<!-- 送出的方式HTTP Method POST -->
<form action="13-2.php" method="post">
 <input type="text" name="firstname">
 <input type="submit" name="submit" value="送出">
</form>
<?php

//$_POST超級全域變數
//只要PHP存在,有對應的POST資料傳進來時,這個變數就會永遠存在
$name = $_POST['firstname'];
echo "Hi $name!";

?>

isset()檢査變數是否存在

<?php

$a=0;

isset($a);//$a已經宣告過,所以値等於true
isset($b);//$b已經宣告過,所以値等於false

?>

empty()檢査變數是否為空

<?php

$a="";
$b="Hi";

empty($a);//$a為空値,所以値等於ture
empty($b);//$b不為空値,所以値等於false
?>

htmlspecialchars() 防止XSS

網頁漏洞XSS:Cross Site Scripting

透過別的網站,或站外的方式,修改HTML的内容,使網頁做出他原本不應該做的動作

//html(内崁沒有防護措施的php)

<form action="<?php echo $_SERVER["PHP_SELF"];?>">

//表單送出時會送回這個檔案本身
//如果使用者瀏覽ex.com/test.php
//HTML就會變成<form action="test.php">
//但如果使用者瀏覽ex.com/一行JS程式碼
//HTML就會執行那段JS程式碼了QQ

htmlspecialchars() 讓輸入的程式碼變成純文字的編碼,使文字失去程式碼的執行能力

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

//htmlspecialchars()裡面的程式碼變成純文字,失去執行程式的能力

htmlspecialchars()的使用時機:
使用php産生網頁内容,需要使用者輸入資料時,
利用此function過濾使用者輸入的内容

Cookie

網頁存在使用者電腦裡面的一些資料

<?php

//建立
setcookie("user", "Ian", time()+3600);
//建立一個名為user的cookie
//其値為Ian
//失效時間為此程式執行後3600秒
//time()為程式執行當下的時間

//刪除他
setcookie("user", "Ian", time()-3600);

//讀取:超級全域變數
echo $_COOKIE["user"];
?>

Session:存放在伺服器的Cookie

比Cookie安全,比較不容易被竄改(可以用在登入狀態的資料等)

<?php

//開始Session
session_start();

//寫入
//email是這個session的名字
//ianchen0419@gmail.com是這個session的値
$_SESSION["email"]="ianchen0419@gmail.com";

//或是也可以不輸入値直接使用他
$_SESSION["email"];

//印出ianchen0419@gmail.com
echo $_SESSION["email"];

//刪除
unset($_SESSION["email"]);
//刪除email這筆SESSION

//刪除這台電腦所有的session
session_destroy();
?>

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *