PHP是一個後端的語言,所謂後端,就是在使用者按下一些按鈕後,系統會幫他處理一些動作如(叫出訂購資料、提交報名資料、計算總額)等等的運算技能,所編寫的語言。相對於前端,後端專注於按下這個按鈕後會進行的一系列運算與功能的function,而PHP是歷史悠久的免費後端語言,非常受歡迎,接下來我們就來認識PHP的基礎。
scope概念
在php中,{}括號內的變數,基本上為區域變數,也就是括號內沒有定義的話,電腦不會自己去外面找。除非你在括號裡的變數前面加上global $var_outside,這樣他就會自己去找括號外有叫$var_outside的變數。
class概念
變數的性質:
- public:大家都可以取用
- private:繼承時也不會往下傳
- protected:繼承時會往下傳
$gogoro(instance,也是一個object)= new motor(class)
class motor{
public $engine;
public $wheel;
}
namespace概念
當引用的php檔案很多的時候,會出現class撞名的時候。這時候我們就要跟電腦說我是要用A檔案的class,或是B檔案的class。include 'say.php';
include 'room.php';
\markbear\say::hi();
(用markbear namespace下的)\honey\markbear\say::welcome();
(用honey\markbear namespace下的)
namespace honey\markbear;
後端接收前端資料
專用method: $_post 接收method=post的資料
$_post[‘name’];
$_post[’email’];
$_GET 接收method=get的資料
$_REQUEST 接收所有資料
$_SERVER接收基本資料如:
$_SERVER[HTTP_REFERER] $_SERVER[QUERY_STRING] $_SERVER[SERVER_NAME]
接收資料後需要驗證(validating)
$var= "yes";
var_dump(filter_var($var, FILTER_VALIDATE_BOOLEAN));
變數名稱
PDO PHP Data Object
在與資料庫連接時,就要使用PDO(較方便的方法)。用法很簡單:
$connect = new PDO(‘mysql:host=localhost;dbname=mydatabase’, $user, $password);
然後用exec去執行「create、edit、delete」$exec = $connect->exec('INSERT INTO posts(author_id) VALUES(1));
用query去「select」$query=$connect->query ('SELECT author_id); echo $query;
然而以上的方法不夠安全,更安全的做法是以下:
$newpdo = $pdo->prepare();
$newpdo->bindBalue(':author_id, $_POST['author_id']);
$newpdo->execute();
PHP取得資料安全三步驟:
- username、password用另一個檔案存在父資料夾
- 用prepare, bindValue取得資料
- 印出資料時用htmlentities($row[‘title’].);
PHP fetch (還不太懂
存取使用者資料:cookies
setcookies(id, markbear, time()+60*60);
第一次幫使用者標籤後,第二次他來的時候對待這個標籤的值,就知道是他了:echo $_COOKIE['id'];
存取使用者資料:session
ini_set('session.gc_maxlifetime', 2400);
設定自動登出時間session_start();
if (!isset($_SESSION['user_id'])) 如果id沒有設定過
$_SESSION['user_id'] = 'Markbear';
echo 'Hi, ' .$_SESSION['user_id'];
切記,cookies跟session要放在檔案的最上面,才會連著header一起讀取。
-> => :: 符號的意義
- -> | $dog->bark() 狗狗使出旺旺技能
- ->| $dog->color = “pink” 叫狗狗的顏色特性變成pink
- =>|$key=>$value key”的” value 可以想成是arrary的「的」什麼
- :: |指定pdo資料的格式|(PDO::FETCH_ASSOC)主要是讓程式可以loop