1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình web với PHP nâng cao

10 89 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 371,03 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu hướng dẫn cách chèn file, xây dựng chức năng upload file từ client lên server, sử dụng session để tạo chức năng đăng nhập và đăng xuất, tạo các file cookie trên máy người dùng. Tại mỗi chức năng có ví dụ và hình ảnh minh họa cụ thể, rõ ràng nhằm giúp người học dễ dàng thực hành để hình thành kỹ năng.

Trang 1

1

PHP nâng cao

Trần Thị Bạch Huệ

2

Nội dung

 Chèn file

 Upload file

 Cookies

 Error

 Exception

Chèn file

 Chúng ta có thể chèn nội dung của một file php vào

một file php khác trước khi server thực thi nó bằng

cách dùng hàm include() hoặc require()

 Hai hàm này giống nhau về chức năng chỉ khác ở

cách kiểm soát lỗi

– include() sinh lỗi nhưng script vẫn tiếp tục thực thi

– require() sinh lỗi thì script sẽ dừng việc thực thi

 Hai hàm này được dùng để chèn các hàm, các

headers, footers hay các phần tử sẽ được dùng lại

trong nhiều trang

Hàm include()

 Lấy tất cả nội dung trong file chỉ định chèn vào file hiện hành

 Nếu có lỗi, hàm phát ra một warning nhưng script vẫn tiếp tục thực thi

 Ví dụ 1:

vars.php

<?php $color = 'green';

$fruit = 'apple'; ?>

test.php

<?php echo "A $color $fruit"; // A include 'vars.php';

echo "A $color $fruit"; // A green apple ?>

Trang 2

5

 Ví dụ 2:

<?php

function foo()

{

global $color;

include 'vars.php';

echo "A $color $fruit";

}

/* vars.php is in the scope of foo() so $fruit is NOT available out

side of this scope $color is because we declared it as global*/

foo(); // A green apple

echo "A $color $fruit"; // A green

?>

6

 Ví dụ 3:

return.php

<?php

$var = 'PHP';

return $var;

?>

noreturn.php

<?php

$var = 'PHP';

?>

testreturns.php

<?php

$foo = include 'return.php';

echo $foo; // prints 'PHP'

$bar = include 'noreturn.php';

echo $bar; // prints 1

?>

Hàm require()

 Hàm require() có chức năng tương tự như hàm

include() nhưng khác nhau ở cách kiểm soát lỗi

 Khi gặp lỗi, hàm include() phát ra một warning

nhưng script vẫn tiếp tục thực thi trong khi hàm

require() phát ra một fatal error và dừng thực thi

script

 Ví dụ 1:

<?php

include("wrongFile.php");

echo "Hello World!";

?>

 Thông báo lỗi:

Warning: include(wrongFile.php) [function.include]:

failed to open stream:

No such file or directory in C:\home\website\test.php on line

5

Warning: include() [function.include]:

Failed opening 'wrongFile.php' for inclusion (include_path='.;C:\php5\pear')

in C:\home\website\test.php on line 5 Hello World!

Trang 3

9

không dừng việc thực thi của script

 Ví dụ 2:

<?php

require("wrongFile.php");

echo "Hello World!";

?>

10

 Thông báo lỗi:

Warning: require(wrongFile.php) [function.require]:

failed to open stream:

No such file or directory in C:\home\website\test.php on line

5

Fatal error: require() [function.require]:

Failed opening required 'wrongFile.php' (include_path='.;C:\php5\pear')

in C:\home\website\test.php on line 5

 Lệnh echo không được thực thi do fatal error đã dừng việc thực thi của script

Upload file

 Để có thể upload files từ client lên server, chúng ta

dùng mảng kết hợp toàn cục $_FILES

 Mảng này chứa tất cả thông tin của file được upload

như tên file (name), loại file (type) hay kích cỡ file

(size),…

 Chỉ số đầu tiên của mảng $_FILES là name của

input file trên form Chỉ số thứ hai có thể là “name”,

“type”, “size”, “tmp_name” hoặc “error”

– $_FILES["file"]["name"] – Tên file cần upload

– $_FILES["file"]["type"] – Loại file như “image/gif”

– $_FILES["file"]["size"] – Kích cỡ file cần upload được tính theo byte

– $_FILES["file"]["tmp_name"] – Tên file tạm thời của bản copy của file cần upload nằm trên server

– $_FILES["file"]["error"] – Mã lỗi do upload file

 Mặc định các files được lưu trữ tạm thời trong thư mục tmp (temporary) trên server Chúng sẽ bị xóa khi trang web bị đóng Để lưu trữ các files này, chúng ta cần copy nó tới một nơi khác trên server

Trang 4

13

 Ví dụ:

<html>

<body>

<form action="upload_file.php" method="post"

enctype="multipart/form-data">

File name <input type="file" name="file" id="file" />

<br />

<input type="submit" name="submit" value="Submit" />

</form>

</body>

</html>

14

Trang upload_file.php phía server

<?php

if ($_FILES["file"]["error"] > 0){

echo "Error: " $_FILES["file"]["error"] "<br />";

} else{

echo "Upload: " $_FILES["file"]["name"] "<br />";

echo "Type: " $_FILES["file"]["type"] "<br />";

echo "Size: " ($_FILES["file"]["size"] / 1024)."

Kb<br />";

echo "Stored in: " $_FILES["file"]["tmp_name"];

}

?>

 Save file được upload:

– Tức là di chuyển các files từ thư mục tmp đến thư

mục khác

Dùng hàm move_uploaded_file có cú pháp:

bool move_uploaded_file(string $filename, string

$destination)

filename: Tên file được upload (tên file cần copy)

destination: Nơi sẽ lưu trữ các file này (thư mục chuyển

đến)

Trang upload_file.php phía server có thể viết lại:

<?php

if ($_FILES["file"]["error"] > 0){

echo "Error: " $_FILES["file"]["error"] "<br />";

}else{

echo "Upload: " $_FILES["file"]["name"] "<br />";

echo "Type: " $_FILES["file"]["type"] "<br />";

echo "Size: " ($_FILES["file"]["size"] / 1024)." Kb<br />";

echo "Stored in: " $_FILES["file"]["tmp_name"];

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" $_FILES["file"]["name"]);

echo "Stored in: " "upload/" $_FILES["file"]["name"];

}

?>

Trang 5

17

file_exists để kiểm tra liệu file sắp upload có

tồn tại hay không?

bool file_exists ( string $filename )

– filename: Đường dẫn tới file cần kiểm tra

(Tham khảo ví dụ trong help)

18

Session

 Khi chúng ta mở một ứng dụng, thao tác trên nó rồi đóng lại Điều này giống như một Session Tuy nhiên, máy tính biết ta là ai

 Vấn đề này trên Internet thì khác Web server không biết chúng ta là ai và những gì chúng ta làm do địa chỉ HTTP không nói lên điều đó

 Session giải quyết điều này bằng cách cho phép chúng ta lưu trữ thông tin người dùng trên server cho lần sử dụng sau (như username, họ tên,…)

– Tuy nhiên, việc lưu trữ này là tạm thời và chúng sẽ bị xóa khi người dùng rời khỏi website

 Session làm việc bằng cách tạo ra một id

(UID – User ID) duy nhất cho mỗi người

viếng thăm và lưu trữ thông tin người dùng

này dựa trên id vừa tạo

 Thông tin được lưu trữ dùng chung cho tất

cả các trang trong một phiên làm việc

truyền qua URL

Bắt đầu một session bằng hàm session_start()

bool session_start( )

– Hàm này tạo một session hoặc hồi phục lại session hiện hành dựa trên id của session được gởi trong yêu cầu GET hoặc POST, hoặc được gởi kèm trong cookies

Trang 6

21

 Ví dụ 1:

<?php session_start(); ?>

<html>

<body>

</body>

</html>

 Đoạn mã trên đăng ký một session người dùng với

server, cho phép lưu trữ thông tin người dùng và

gán một user id (UID) cho session đó

22

 Lưu trữ thông tin người dùng vào session bằng cách sử dụng mảng kết hợp $_SESSION

 Ví dụ 2: Trang page1.php có code như sau:

<body>

<?php session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green'; //lưu trữ thông tin thứ 1

$_SESSION['animal'] = 'cat'; //lưu trữ thông tin thứ 2 echo '<br /><a href=“page2.php">page 2</a>';

?>

</body>

 Code của page2.php:

<?php

session_start();

?>

<html>

<body>

<?php

echo $_SESSION['favcolor'];

echo $_SESSION['animal'];

?>

</body>

</html>

Output: greencat

 Ví dụ 3:

– Tại trang page1.php tạo:

Form đăng nhập gồm username và nút Sign in

Nếu người dùng nhập username và nhấn nút Sign in thì thông báo “hello username”

Ngược lại thông báo “Bạn chưa đăng nhập”

– Tại trang page2.php:

Kiểm tra và thông báo xem user này đã đăng nhập chưa

Trang 7

25

<body>

<form action=“page1.php" method="post">

<input type="text" name="user"><br>

<input type="submit" value="Sign in">

</form>

<?php session_start();

if (isset($_POST['user'])){

$_SESSION['user']=$_POST['user'];

echo "Chào mừng ".$_POST['user'];

}else

echo 'Bạn chưa đăng nhập';

?>

</body>

26

 Trang page2.php:

<body>

<?php session_start();

if (isset($_SESSION['user'])) echo "Đăng nhập rồi";

else echo "Chưa đăng nhập";

?>

</body>

– Xóa một vài dùng hàm:

void unset(mixed $var [, mixed $var [, mixed $ ]])

– Xóa tất cả:

bool session_destroy(void)

(Tham khảo ví dụ trong help)

 Một số hàm liên quan đến session:

– Session_decode

– Session_encode

– Session_id

– Session_name

– Session_register

– Session_save_path

– Session_unregister

– Session_unset

(sinh viên tìm hiểu thêm)

Trang 8

29

Bài tập

 Tại trang page2.php của ví dụ 3, viết mã đáp

ứng yêu cầu:

– Kiểm tra xem user có đăng nhập chưa?

– Nếu đăng nhập rồi thì hiển thị siêu liên kết Sign

out để người dùng thoát khỏi việc đăng nhập trên

– Nếu chưa đăng nhập thì thông báo

30

Cookie

 Cookie là một tập tin nhỏ, được server ghi trên máy tính người dùng Mỗi lần máy tính

đó yêu cầu một trang với cùng trình duyệt web, nó cũng sẽ gởi cookie kèm theo

 Chúng ta có thể tạo cookie bằng cách sử

dụng hàm setcookie() hoặc setrawcookie()

Chú ý: Hàm tạo cookie phải được đặt trước thẻ <html>

setcookie(name, value, expire, path, domain)

Chú ý : Tham số value, expire, path, domain có

thể bỏ qua

– name: Tên của cookie

– value: Giá trị của cookie

 expire: Thời gian cookie hết hiệu lực

– Bạn nên dùng hàm time() cộng với số giây mà cookie hết hiệu lực để làm giá trị truyền vào tham số này

– Ví dụ:

setcookie(“user”,”alex”,time()+60);//hết hiệu lực trong vòng 1 phút

setcookie(“user”,”alex”,time()+60*60*24*30);//hết hiệu lực trong vòng 30 ngày

– Nếu tham số này là 0 hoặc bị bỏ qua, cookie sẽ hết hiệu lực lúc kết thúc session (hay khi trình duyệt bị đóng)

Trang 9

33

 path: Chỉ ra các thư mục trên server mà

cookie có thể sử dụng

– Ví dụ:

Nếu đặt dấu ‘/’, cookie có thể sử dụng trên toàn domain

Nếu đặt ‘/foo/’, cookie chỉ có thể sử dụng trong thư mục

foo và các thư mục con của foo trong domain

– Giá trị mặc định của tham số này là thư mục hiện

hành

34

– Ví dụ:

Để cookie có thể sử dụng trong tất cả các miền con của miền example.com, truyền giá trị ‘.example.com’ cho tham số domain

Nếu truyền ‘www.example.com’ cho tham số domain thì

chỉ có miền con www mới có thể sử dụng cookie

 Truy lục giá trị cookie:

– Sử dụng mảng kết hợp $_COOKIE

– Ví dụ: Code của trang page3.php

<?php

$value = 'something from somewhere';

setcookie("TestCookie", $value);

setcookie("TestCookie", $value, time()+3600);//1 giờ hết hạn

setcookie("TestCookie", $value, time()+3600, "/test/",

".example.com");

?>

 Code của trang page4.php cho thấy cách truy lục lại giá trị lưu trong cookie

<body>

<?php // In một giá trị cookie echo $_COOKIE["user"];

// In tất cả print_r($_COOKIE);

?>

</body>

Trang 10

37

 Xóa cookie

– Ví dụ:

<?php

setcookie(“user”, “”,time()+60);

?>

38

Bài tập

1 Kiểm chứng lại các ví dụ

đăng nhập (sign in)

– Tạo form đăng nhập gồm username và password

– Khi người dùng điền thông tin và nhấn nút Sign

in, hỏi người dùng có muốn lưu pass hay không?

 Nếu đồng ý, lưu vào cookie và thông báo đã lưu rồi

 Nếu không, thông báo “pass không được lưu”

Error và Exception

Hết

Ngày đăng: 16/04/2019, 14:16

TỪ KHÓA LIÊN QUAN