* Login   * Register


Last visit was:
It is currently Sun Feb 25, 2018 10:20 am
View unanswered posts
View active topics





Post new topic Reply to topic  [ 5 posts ] 
Author Message
 Post subject: DE CUONG VE LAP TRINH PHP
PostPosted: Tue Mar 31, 2009 10:33 pm 
Offline

Joined: Thu Feb 12, 2009 5:29 pm
Posts: 9
PHẦN 1:
GIỚI THIỆU LẬP TRÌNH PHP


Các vấn đề chính sẽ được đề cập:
- Php là gì?
- Những đặc điểm trong php
- Cơ chế hoạt động của PHP
- Yêu cầu về công cụ
- Nhúng PHP vào HTML
- Hàm echo()
- Biến - Khai báo biến
- Kiểu dữ liệu
- Cách truyền biến
- Hằng số
- Toán tử
- Các cấu trúc lệnh
- Bài tập

1. Php là gì?
PHP là một ngôn ngữ lập trình kiểu script, chạy trên Server và trả về mã HTML cho trình duyệt.
Ví dụ:

<html>
<head>
<title>Example</title>
</head>
<body>
<?php echo "Hello PHP!"; ?>
</body>
</html>



Mã PHP được đặt trong kiểu tag đặc biệt cho phép chèn bất cứ vị trí nào trong file HTML.

2. Những đặc điểm trong php:
- Tốc độ nhanh, dễ sử dụng.
- Chạy trên nhiều hệ điều hành.
- Làm việc trên đa số các loại cơ sở: SQL server, Access, MySQL, PostgreSQL, Oracle …
- Luôn được cải tiến và cập nhật.

3. Cơ chế hoạt động của PHP:
PHP là một ngôn ngữ máy chủ, mã lệnh PHP sẽ tập trung trên máy chủ để phục vụ các trang web theo yêu cầu của người dùng thông qua trình duyệt.
Cơ chế hoạt động của PHP:




Khi người dùng truy cập website viết bằng PHP, máy chủ sẽ đọc mã lệnh PHP và xử lý chúng theo các hướng dẫn đã được mã hóa. Nếu có yêu cầu truy vấn cơ sở dữ liệu, nó sẽ truy vấn đến hệ cơ sở dữ liệu MySQL để lấy dữ liệu về. Sau đó PHP sẽ yêu cầu máy chủ gửi một dữ liệu thích hợp (mã lệnh HTML) đến trình duyệt Web. Trình duyệt sẽ xem nó như một trang HTML tiêu chuẩn.

4. Yêu cầu về công cụ:
1. Web Server (Apache, Xitami hoặc IIS)
2. PHP
3. MySQL
4. Trình duyệt Web (Internet Explorer …)
5. Trình soạn thảo văn bản (Dreamweaver, Frontpage, Notepad++, AceHTML …)
6. Ứng dụng ftp nếu dùng máy chủ từ xa.

5. Nhúng PHP vào HTML: có 4 cách nhúng PHP:
Cách 1: (kiểu short)
<?
Các mã lệnh PHP
?>

vd: <? echo ("Welcome to PHP"); ?>
->Nếu sử dụng cách 1 phải cấu hình tập tin php.ini với, short_open_tag = on

Cách 2: (kiểu định dạng XML)
<?php
Các mã lệnh PHP
?>

vd: <?php echo ("Welcome to PHP"); ?>

Cách 3: (kiểu script)
<script language="php">

Các mã lệnh PHP

</script>

vd: <?php echo ("Welcome to PHP"); ?>

Cách 4: (kiểu ASP)
<%

Các mã lệnh PHP

%>

vd: <% echo ("Welcome to PHP"); %>

->Nếu sử dụng cách 4 phải cấu hình tập tin php.ini với, asp_tags = on

6. Hàm echo():
Hàm echo() dùng để gửi mã lệnh HTML đến trình duyệt web.

Ví dụ:

<html>
<head>
<title>Vi du ham echo</title>
</head>
<body>
<?php
echo "<form name='form1' action='xuly.php' method='post'>";
echo "Xin chao ban <input type='text' name='ten' size='10'>";
echo "</form>"
?>
</body>
</html>

7. Biến - Khai báo biến:
a. Khai báo biến:
Định nghĩa biến: $tenbien
PHP không cần khai báo biến trước khi sử dụng nó.
Chú ý:
- Nên khai báo biến và khởi tạo giá trị ban đầu cho biến trước khi sử dụng.
- Không nên khai báo biến trùng tên với hàm.
- Tên biến không bắt đầu bằng ký tự số và không có khoảng trống.
- Giống ngôn ngữ C, PHP có phân biệt kiểu chữ. Vd: $a ≠ $A
Vd:
$a = "Hello PHP!"; //day la bien chuoi
$b = 9; //day la bien so
$c = 6.354; //day la bien so thuc
$d = "8"; //day cung la bien chuoi
--------------------------------------------------------------
$e = $b + $d;
echo "\$e co kieu la " . gettype($e);
echo "\$e = $e";

 kết quả hiển thị: $e co kieu la integer $e = 17

--------------------------------------------------------------
$f = "8.687 la mot so thuc";
$kq = $b + $f;
echo "\$kq co kieu la " . gettype($kq);
echo "\$kq = $kq"; => kết quả hiển thị: $kq co kieu la double $kq = 17.687

b. Giới thiệu một số biến được xây dựng sẳn trong PHP:

Tên biến Ý nghĩa
$PHP_SELF: Trả về địa chỉ trang web đang chạy.
$HTTP_COOKIE_VARS: Tất cả cookies được gởi đến trình duyệt sẽ có thể được đọc trong mảng kết hợp này.
$HTTP_POST_VARS: Đây là mảng chứa tất cả các biến thông qua phương thức POST thông thường qua form.
$ HTTP_GET_VARS: Đây là mảng chứa tất cả các biến thông qua phương thức GET.

c. Phạm vi giá trị:
PHP coi 1 biến có một giới hạn. Để xác định một biến toàn cục (global) có tác dụng trong một hàm , ta cần khai báo lại. Nếu không giá trị của biến sẽ được coi như là cục bộ trong hàm.
Ví dụ 1 Ví dụ 2

$a = 2;
$b = 3;
Function tinhtong () {
$b = $a + $b;
}

tinhtong ();
echo $b;

=> kết quả hiển thị: 3
$a = 2;
$b = 3;
Function tinhtong () {
global $a, $b;
$b = $a + $b;
}
tinhtong ();
echo $b;

=> kết quả hiển thị: 5

d. Khai báo static.
Với khai báo này bên trong một hàm với 1 biến cục bộ, giá trị của biến cục bộ đó sẽ không bị mất đi khi ra khỏi hàm.

Ví dụ:
Function test() {
static $a = 0;
echo $a;
$a++;
}
test(); => kq: $a = 0
test(); => kq: $a = 1
test(); => kq: $a = 2

Với khai báo như trên, $a sẽ không mất đi giá trị sau khi thực hiện lời gọi hàm Test() mà $a sẽ được tăng lên 1 sau mỗi lần gọi hàm Test().

8. Kiểu dữ liệu:
a. Số nguyên: Được khai báo và sử dụng giá trị giống với C:
Ví dụ:
$a = 1234; # decimal number
$a = -123; # a negative number
$a = 0x12; # hexadecimal number (equivalent to 18 decimal)

b. Số thực:
Ví dụ : $a = 1.234; $a = 1.2e3;
Chú ý: Khi sử dụng các số thực để tính toán , có thể sẽ làm mất giá trị của nó. Vì vậy, nên sử dụng các hàm toán học trong thư viện chuẩn để tính toán.

c. Chuỗi:
Có 2 cách để xác định 1 chuỗi:
- Đặt giữa 2 dấu nháy kép (")
- Đặt giữa 2 dấu nháy đơn (').
Chú ý:
Các biến giá trị sẽ không được khai triển trong chuỗi giữa 2 dấu nháy đơn.
Vd:
$name = "Fahasa";

$str = "Nha sach $name";
echo $str; => kết quả hiển thị: Nha sach Fahasa

$str = 'Nha sach $name';
echo $str; => kết quả hiển thị: Nha sach $name
Khi dùng lệnh echo để xuất các ký tự đặc biệt: dấu nháy kép (“), dấu gạch (\), dấu đôla ($) thì ta phải thêm dấu gạch (\) ở trước nó.
Vd:
echo "<form action = \"hello.php\" method = \"post\">";

Phép toán nối chuỗi: dùng dấu “.” để nối 2 chuỗi lại với nhau.
Vd:
$str = "Nha sach " . "Fahasa";
echo $str; => kết quả hiển thị: Nha sach Fahasa

Đổi kiểu chuỗi sang kiểu số:
Vd:
--------------------------------------------------------------
//doi kieu chuoi sang kieu so
echo "\$d co kieu la " . gettype($d); => kết quả hiển thị: $d co kieu la string

$d = 0 + $d;
echo "\$d co kieu la " . gettype($d);
echo "\$d = $d"; => kết quả hiển thị: $d co kieu la integer $d = 8

d. Mảng :
Mảng một chiều:
 Khai báo mảng:

array( [key =>] value
, ...
)

Trong đó:
+ key: chỉ số mảng (có kiểu integer hoặc string)
+ value: giá trị (dùng cho tất cả các kiểu dữ liệu)
Ví dụ:
$mang = array(1, 2, 3, 4, 5);
print_r($mang); => kq:Array([0]=> 1 [1]=> 2 [2]=> 3 [3]=> 4 [4]=> 5)
$a = array();
$a[0] = 'apple';
$a[1] = 'banana';
$a[2] = 'orange';
$a[3] = 'lemon';
print_r($a);
=> kq: Array([0] => apple [1]=> banana [2]=> orange [3]=> lemon)

$b = array (“a” => 'apple', “b” => 'banana',
“c” => array (“x”, “y”, “z”));
print_r($b);
=> kq: Array ( [a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z))

 Truy xuất mảng:
Vd:
echo $a[0];
echo $b[“a”];
echo $a["c"][0];

Mảng 2 chiều:
 Khai báo mảng:

Vd1: Giả sử ta có 1 ma trận như sau:

i\j 0 1 2
0 1 2 3
1 4 5 6
2 7 8 9

=> cách khai báo: $mang = array(array(1,2,3), array(4,5,6), array(7,8,9));

Vd2:
$a = array();

$a[0][0] = 'apple';
$a[0][1] = 'banana';
$a[1][0] = 'orange';
$a[1][1] = 'lemon';

Vd3:
$b = array("Huong" => array("chieu cao" => "1m76", "tuoi" => "26tuoi"),
"Binh" => array("chieu cao" => "1m82", "tuoi" => "39tuoi"));
 Truy xuất mảng:
Vd:
echo $mang[0][1];
echo $b["Huong"][“chieu cao”]; => kq: 1m76
echo "Huong co chieu cao la {$a["Huong"]["chieu cao"]}";

9. Cách truyền biến:
Truyền biến thông qua Form
Để lấy giá trị của các đối tượng do người dùng nhập vào, ta thường sử dụng thẻ form trong trang Web. Các đối tượng trong form đều được gán với một cái tên duy nhất. Đối với PHP, tên đó sẽ trở thành biến và giữ giá trị của đối tượng đó.
Ví dụ: Giả sử, trong form có chứa đối tượng như sau:

Mã HTML:
<input type="text" name="diachi">

=> $diachi là biến và chứa giá trị do người dùng nhập vào (“Vinh long”).
Ta có thể sử dụng biến $HTTP_POST_VARS["tendoituong"] để truy xuất giá trị của đối tượng trong form.
Ví dụ: $HTTP_POST_VARS["diachi"]
Chú ý: Không được đặt tên biến trùng với tên của đối tượng trong form.

Ví dụ: Viết chương trình tính tổng của 2 số a và b.


Cách 1:
Trang tinhtong.php
<html>
<head>
<title>Tinh tong</title>
</head>
<body>
<form name="form1" action="xuly.php" method="post">
NHAP 2 SO A VA B: <br>
So a: <input type="text" name="soa" size="10"><br>
So b: <input type="text" name="sob" size="10"><br>
<input type="submit" value="Tinh tong">
</form>
</body>
</html>

Trang xuly.php

<html>
<head>
<title>Trang xu ly 1</title>
</head>
<body>
<?php
$kq = $soa + $sob;
echo "Ket qua: $kq";
?>
</body>
</html> <html>
<head>
<title> Trang xu ly 2</title>
</head>
<body>
<?php
$kq = $HTTP_POST_VARS["soa"] + $HTTP_POST_VARS["sob"];
echo "Ket qua: $kq";
?>
</body>
</html>

Cách 2:
Trang tinhtong.php
<html>
<head>
<title>Tinh tong</title>
</head>
<body>
<form name="form1" action="xuly.php" method="get">
NHAP 2 SO A VA B: <br>
So a: <input type="text" name="soa" size="10"><br>
So b: <input type="text" name="sob" size="10"><br>
<input type="submit" value="Tinh tong">
</form>
</body>
</html>

Trang xuly.php

<html>
<head>
<title>Trang xu ly 1</title>
</head>
<body>
<?php
$kq = $soa + $sob;
echo "Ket qua: $kq";
?>
</body>
</html> <html>
<head>
<title> Trang xu ly 2</title>
</head>
<body>
<?php
$kq = $HTTP_GET_VARS["soa"] + $HTTP_GET_VARS["sob"];
echo "Ket qua: $kq";
?>
</body>
</html>

Truyền mảng từ HTML form:
Khi một đối tượng trong form cùng lúc mang nhiều giá trị, để lấy giá trị của đối tượng đó ta phải làm bằng cách là truyền qua mảng.
Ví dụ 1: Giả sử ta có đối tượng trong form như sau:

 Để lấy 3 giá trị được chọn (DVD, MONITOR, HDD) ta làm như sau:

<p>Chon linh kien: </p>
<p>
<select size="4" name="linhkien[]" multiple>
<option>DVD</option>
<option>MOUSE</option>
<option>MONITOR</option>
<option>HDD</option>
<option>CPU</option>
</select>
</p>

<?php print_r ($linhkien); ?>
=> kết quả hiển thị:Array ( [0] => DVD [1] => MONITOR [2] => HDD )

Ví dụ 2: Viết chương trình hiển thị các giá trị mà người dùng chọn:



Trang giao dien:

<html>
<head>
<title>Trang chon cac tinh ma ban da den</title>
</head>
<body>
Chon cac tinh ma ban da den:
<form name="form1" action="xuly.php" method="post">
<select name="quequan[]" multiple>
<option value="Vinh Long"> Vinh Long</option>
<option value="Can Tho"> Can Tho</option>
<option value="Nha Trang"> Nha Trang</option>
<option value="Da Lat"> Da Lat</option>
</select>
<input type="submit" value="Submit">
</form>
</body>
</html>

Trang xuly.php

<html>
<head>
<title>Trang xu ly</title>
</head>
<body>
<?php
echo "Cac mon ban da chon:";
$n = count($quequan); //so phan tu trong mang
for($i = 0; $i < $n-1; $i++){
echo "$quequan[$i], ";
}
echo $quequan[$n-1];
?>
</body>
</html>


10. Hằng số:
a. Cú pháp:
define(“tenhang”, giatri);


Ví dụ:
define("MAX", 10);
echo MAX;

b. Hằng được định nghĩa sẵn:
Tên biến Ý nghĩa
_FILE_: Tên của script file đang được thực hiện.
_LINE_ : Số dòng của mã script đang được thực hiện trong script file hiện tại.
_PHP_VERSION_ : Version của PHP
E_ERROR: Báo hiệu có lỗi

11. Toán tử:
- Toán tử so sánh: = =, = = =, !=, >, <, >=, <=
- Toán tử logic: and, &&, or, ||, xor
12. Các cấu trúc lệnh:
a. Cấu trúc if:
if (dieukien){
thực hiện lệnh nếu điều kiện đúng;
}
if (dieukien){
lệnh 1
}
else {
lệnh 2
}
if (điều kiện)
{ lệnh 1 }
elseif ( điều kiện )
{ lệnh 2}
else
{ lệnh 3}

b. Vòng lặp :
while (dieukien) { ...}
do { .....} while ( dieukien );
for (bieuthuc1; bieuthuc2; bieu thuc3) {.....}
foreach(array_expression as $value) { thực hiện câu lệnh }
foreach(array_expression as $key => $value) { thực hiện câu lệnh }
Ví dụ 1:
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => "lemon");
foreach($a as $value){
echo $value . ", ";
}
foreach($a as $key => $value){
echo "<b>$key: </b> $value <br>";
}

Ví dụ 2: Thiết kế phần giao diện để cho phép người dùng chọn ngày, tháng, năm

<html>
<head>
<title></title>
<body>
<?php
$months = array("Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sep","Oct","Nov","Dec");
$days = range(1,31);

//lay ngay hien hanh
$today = getdate();
$years = range(1970,$today["year"]);

//hien thi combobox chua Thang
echo "<select name=\"cboThang\">";
foreach($months as $value){
echo "<option value=\"$value\"> $value </option>";
}
echo "</select>";

//hien thi combobox chua Ngay
echo "<select name=\"cboNgay\">";
foreach($days as $value){
echo "<option value=\"$value\"> $value </option>";
}
echo "</select>";

//hien thi combobox chua Nam
echo "<select name=\"cboNam\">";
foreach($years as $value){
echo "<option value=\"$value\"> $value </option>";
}
echo "</select>";

?>
</body>
</html>



c. break và continue:
break : thoát ra khỏi vòng lặp hiện thời
continue : bỏ qua vòng lặp hiện tại, tiếp tục vòng tiếp theo.
d. switch
switch (tên biến) {
case trường hợp 1: ..... break;
case trường hợp 2: ..... break;
case trường hợp 3: ..... break;
default :
}

13. BÀI TẬP:
Bài 1: Hãy thiết kế giao diện như hình dưới đây bằng ngôn ngữ PHP.


CODE HTML:
<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php">
Ho ten: <input type="text" name="hoten" size="20"><br>
Gioi tinh: <input type="radio" value="nam" name="R1" checked>
<input type="radio" value="nu" name="R1"> Nu <br>

Que quan: <select size="1" name="D1">
<option selected>vinh long</option>
<option>can tho</option>
</select><br>

<input type="submit" value="Submit" name="B1"><br>
</form>
</body>
</html>

Bài 2: Ta có một file php có mã code như hình dưới đây:

<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php">
Ho ten: <input type="text" name="hoten" size="20"><br>
Dia chi: <input type="text" name="hoten" size="20"><br>

Gioi tinh: <input type="radio" value="nam" name="R1" checked>
<input type="radio" value="nu" name="R1"> Nu <br>
Que quan: <select size="1" name="D1">
<option selected>vinh long</option>
<option>can tho</option>
</select><br>
<input type="submit" value="Submit" name="B1"><br>
</form>
</body>
</html>

Giả sử trong php có 4 biến có giá trị như sau:
<?php $a = "Tran Ngoc Lan"; $b = "F1"; $c = "nu"; $d = "ct";?>

Yêu cầu: Viết code sao cho khi chạy trang web các đối tượng trong form lần lượt mang giá trị của các biến trên.



Bài 3: Bạn Mai có mua 30 cái điện thoại với đơn giá là $88.32 với thuế xuất là 0.05. Viết trang web để thông báo cho bạn Mai biết tổng số tiền phải trả cho cửa hàng đó.



Bài 4: Ta có giao diện như hình dưới đây.

a. Khi người dùng nhập thông tin và nhấn nút Submit, dữ liệu sẽ được truyền qua một trang khác (trang xuly.php) và cho hiển thị thông tin mà người dùng vừa nhập. Yêu cầu: viết trang xử lý.
b. Khi người dùng nhập thông tin và nhấn nút Submit, dữ liệu sẽ được truyền vào chính trang đó và cho hiển thị thông tin mà người dùng vừa nhập. Yêu cầu: viết thêm phần xử lý đó.


Bài 5: Viết một trang web để thăm dò ý kiến của người dùng. Khi người dùng nhập xong, và nhấn nút submit sẽ nhận được một trang web phản hồi như sau.



Bài 6: Viết chương trình tính toán đơn giản (cộng, trừ, nhân, chia)

14. BÀI GIẢI:
Bài 1:
<html>
<head>
<title>Bai tap 1</title>
</head>
<body>
<?php
echo "<form method=\"POST\" action=\"xuly.php\">";
echo "Ho ten: <input type=\"text\" name=\"hoten\" size=\"20\"><br>";
echo "Gioi tinh: <input type=\"radio\" value=\"nam\" name=\"R1\" checked>";
echo "<input type=\"radio\" value=\"nu\" name=\"R1\"> Nu <br>";
echo "Que quan: <select size=\"1\" name=\"D1\">";
echo "<option selected>vinh long</option>";
echo "<option>can tho</option></select><br>";
echo "<input type=\"submit\" value=\"Submit\" name=\"B1\"><br>";
echo "</form>";
echo "</body>";
echo "</html>";
?>
</body>
</html>


Bài 2:
<html>
<head>
<title>bai 2</title>
</head>
<body>
<?php $a = "Tran Ngoc Lan"; $b = "F1"; $c = "nu"; $d = "ct";?>
<form method="POST" action="xuly.php">
Ho ten: <input type="text" name="hoten" value = "<?=$a?>" size="20"><br>
Dia chi: <input type="text" name="dia chi" value = "<?=$b?>" size="20"><br>

Gioi tinh: <input type="radio" value="nam" name="R1"
<?php if ($c == "nam") echo "checked"?>>
<input type="radio" value="nu" name="R1"
<?php if ($c == "nu") echo "checked"?>> Nu <br>

Que quan:
<select size="1" name="D1">
<option value = "vl" <?php if ($d == "vl") echo "selected"?> >vinh long</option>
<option value = "ct" <?php if ($d == "ct") echo "selected"?> >can tho</option>
</select><br>

<input type="submit" value="Submit" name="B1"><br>
</form>
</body>
</html>

Bài 3:

<html>
<head>
<title></title>
</head>
<body>
<?php
$soluong = 30;
$gia = 88.32;
$thue = 0.05;

$tongtien = $soluong * $gia;
$tongtien = $tongtien + ($tongtien*$thue); //bo sung thue
$tongtien = number_format($tongtien, 2); //dinh dang ket qua

echo "Ban mua <b>$soluong</b> mat hang voi don gia <b>\$$gia</b>. Cong voi thue, tong so tien la <b>\$$tongtien</b>";

?>
</body>
</html>

Bài 4:
 Câu a:
Trang giao diện:
<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php”>
<p><b>TRANG DANG NHAP</b></p>
<p>email: <input type="text" name="email" size="20"></p>
<p>password: <input type="password" name="password" size="20"></p>
<p><input type="submit" value="Submit" name="B1"></p>
<p>&nbsp;</p>
</form>
</body>
</html>

Trang xuly.php
<html>
<head>
<title>New Page 1</title>
</head>
<body>
<?PHP
if (isset($B1)){
echo "<hr>";
echo "<b>THONG TIN BAN VUA NHAP LA:<BR>";
echo "Email: $email <BR>";
echo "Password: $password";
}
?>
</body>
</html>

Câu b:

<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="<?=$PHP_SELF?>">
<p><b>TRANG DANG NHAP</b></p>
<p>email: <input type="text" name="email" value = "<?=$email?>" size="20"></p>
<p>password: <input type="password" value = "<?=$password?>" name="password" size="20"></p>
<p><input type="submit" value="Submit" name="B1"></p>
<p>&nbsp;</p>
</form>
<?PHP
if (isset($B1)){
echo "<hr>";
echo "<b>THONG TIN BAN VUA NHAP LA:<BR>";
echo "Email: $email <BR>";
echo "Password: $password";
}
?>
</body>
</html>

Bài 5:
Trang giao diện:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php">
<fieldset style="width: 345px; height: 219px"><legend align="left"><b>Bang dong gop y kien</b></legend>

Ho: <input type="text" name="ho" size="20"><br>

Ten: <input type="text" name="ten" size="20"><br>

Email: <input type="text" name="email" size="20"><br>

Tuoi: <select size="1" name="tuoi">
<option selected>duoi30tuoi</option>
<option>tu30den50tuoi</option>
<option>tren50tuoi</option>
</select> <br>

Y kien: <textarea rows="3" name="ykien" cols="28"></textarea><br>

<input type="submit" value="Submit" name="B1">&nbsp;

</fieldset>
</form>
</body>
</html>

Trang xuly.php:

<html>
<head>
<title>Phan hoi</title>
</head>
<body>
<?php
$hoten = $ho . " " . $ten;
$ykien = stripslashes($ykien);
echo "Cam on $hoten da dong gop ý kien sau: <br> $ykien<br><br>";
echo "Chung toi se hoi am cho ban theo dia chi email <i>$email</i>";
?>
</body>
</html>

Bài 6:

<html>
<head>
<title></title>
</head>
<body>
<?php
if (isset($b1)){
if ($toantu == "+"){
$kq = $soa + $sob;
}
else if ($toantu == "-"){
$kq = $soa - $sob;
}
else if ($toantu == "*"){
$kq = $soa * $sob;
}
else {
$kq = $soa / $sob;
}
}
?>


<form name="f1" action="form1.php" method="get">
so thu nhat: <input type="text" name="soa" value="<?php echo $soa;?>" size="10">
<select name="toantu">
<option value="+" <?php if ($toantu == "+") echo "selected";?>> +</option>
<option value="-" <?php if ($toantu == "-") echo "selected";?>> -</option>
<option value="*" <?php if ($toantu == "*") echo "selected";?>> *</option>
<option value="/" <?php if ($toantu == "/") echo "selected";?>> /</option>
</select>
<br>
so thu hai: <input type="text" name="sob" value="<?php echo $sob;?>" size="10"><br>


<input type="submit" name = "b1" value="Tinh">


<br>
ketqua: <input type="text" name="kq" value="<?php echo $kq;?>" size="20" maxlength="70">
</form>
</body>
</html>




PHẦN 2:
DỮ LIỆU DẠNG CHUỖI


Các vấn đề chính sẽ được đề cập:
- Một số điều khi sử dụng chuỗi
- Các hàm quản lý chuỗi
- Bài tập

1. Một số điều khi sử dụng chuỗi:
- Chuỗi được đặt trong (“”) hoặc (‘’).
- Để nối 2 chuỗi lại với nhau ta dùng dấu “.”
- Dùng lệnh echo để xuất chuỗi.
- Khi xuất các ký tự đặc biệt: “, \, $ ta phải thêm dấu gạch (\) ở trước nó.
Vd:
echo "<input type = \"text\" value = \"ABC\” name = \”kq\”>";

- Để xuống dòng ta dùng thẻ <br> hoặc dùng hàm thay kí tự \n thành thẻ <br> nl2br(string str).
Vd:
echo "Ten: Huong <br> Dia chi: Vinh long";

Trong định dạng HTML:

<p><?echo nl2br("Ten: Huong \n Dia chi: Vinh long"); ?></p>
- Biến kiểu chuỗi: $tenbien.

2. Các hàm quản lý chuỗi:
Hàm thay đổi kiểu chữ của chuỗi:

Hàm Diễn giải Sử dụng Kết quả
string strtolower (string str)
string strtoupper (string str)
string ucfirst (string str)
string ucwords (string str) Chữ thường
Chữ hoa
Chữ hoa ký tự đầu tiên
Chữ hoa ký tự đầu tiên của mỗi từ strtolower(“HEllo”)
strtoupper (“hello”)
ucfirst(“helLO php”)
ucwords (“helLO pHp”) Hello
HELLO
HelLO php
HelLO PHp

Hàm loại bỏ ký tự:

Hàm Diễn giải
STRIP_TAGS():
Hàm loại các thẻ HTML và PHP khỏi chuỗi.
 Cú pháp:
string strip_tags(string str [, string allowable_tags])
 Ví dụ:

$str = "<font face=Arial><b>HTML va PHP</b></font><br>";
echo $str; => HTML va PHP
echo strip_tags($str, "<b>"); => HTML va PHP


TRIM()

Loại bỏ ký tự trắng ở ký tự đầu và cuối chuỗi.
 Cú pháp:
string trim(string str)
 Ví dụ:
echo "Ten: Lan Chi";
echo trim(" Dia chi: Soc Trang ");
echo "Email: lan@yahoo.com";
=> Ten: Lan ChiDia chi: Soc TrangEmail: lan@yahoo.com

LTRIM()



Loại bỏ ký tự trắng ở bên trái chuỗi.
 Cú pháp:
string ltrim(string str)
 Ví dụ:
echo "Ten: Lan Chi";
echo ltrim(" Dia chi: Soc Trang ");
echo "Email: lan@yahoo.com";
=> Ten: Lan ChiDia chi: Soc Trang Email: lan@yahoo.com



CHOP()



Loại bỏ ký tự trắng ở cuối chuỗi.
 Cú pháp:
string chop(string str)
 Ví dụ:
echo "Ten: Lan Chi";
echo chop(" Dia chi: Soc Trang ");
echo "Email: lan@yahoo.com";
=> Ten: Lan ChiDia chi: Soc Trang Email: lan@yahoo.com



Hàm tìm kiếm và thay thế chuỗi:

Hàm Diễn giải
STRPOS()
Tìm vị trí chuỗi con.
 Cú pháp:
int strpos(string str1, string str2 [,int offset])
Hàm trả về vị trí xuất hiện của chuỗi 2 trong chuỗi 1 ngược lại hàm trả về FALSE (có kiểu là BOOLEAN)
Đối số thứ 3 là vị trí bắt đầu tìm, nếu không chỉ ra hàm sẽ tìm từ đầu chuỗi.
Ký tự đầu tiên tính từ 0.

 Ví dụ:

$str1 = "Email: lan@yahoo.com";
echo "vi tri: " . strpos($str1, "lan");
=> vi tri: 7


STRRPOS()

Tương tự hàm strpos() những nó tìm vị trí xuất hiện cuối cùng của chuỗi thứ 2 trong chuỗi thứ 1.
 Cú pháp:
int strrpos(string str1, string str2)
 Ví dụ:

$str1 = "Nha Sach Phuong Nam";
echo "vi tri: " . strrpos($str1, " ");
=> vi tri: 15

STRLEN()
Tìm chiều dài của chuỗi.
 Cú pháp:
int strlen(string str)
 Ví dụ:

$str = "Nha Sach Nguyen Thi Minh Khai";
echo strlen($str);
=> kết quả: 29

SUBSTR()
Lấy chuỗi con với chiều dài l bắt đầu từ vị trí thứ i
 Cú pháp:
string substr(string str, int i [,int l)
 Ví dụ:

$str = "Nha Sach Nguyen Thi Minh Khai";
echo substr($str, 6, 7);
=> kết quả: “ch Nguy”

echo substr($str, 6);
=> kết quả: “ch Nguyen Thi Minh Khai”

echo substr($str, 5, -3);
=> kết quả: “ach Nguyen Thi Minh K”



STRTR()
Thay thế từng ký tự trong đối số thứ 2 xuất hiện trong đối thứ nhất với từng ký tự tương ứng trong đối thứ 3
 Cú pháp:
string strtr (string str1, string str2, string str3) hoặc
string strtr (string str, array arr)

 Ví dụ:

$str1 = "This is a book";
echo strtr($str1, "is", "??");
=> kết quả: Th?? ?? a book

$str = "Apache, PHP, MySQL";
$arr = array("Apache" => "IIS", "PHP" => "ASP", "MySQL" => "SQL Server");
echo strtr($str, $arr);
=> kết quả: IIS, ASP, SQL Server

STR_REPLACE()

Thay thế chuỗi str1 bằng chuỗi str2 trong chuỗi str.
 Cú pháp:
string str_replace (string str1, string str2, string str)
 Ví dụ:

$str = "This is a book.";
echo str_replace("book", "pen", $str);
=> kết quả: This is a pen.




Hàm kết hợp hay tách chuỗi:

Hàm Diễn giải
EXPLODE()
Tách chuỗi str thành nhiều chuỗi con bằng 1 chuỗi hay 1 ký tự phân cách nào đó.
 Cú pháp:
array explode(string seperator, string str [,int limit])
Trong đó:
- seperator: chuỗi chỉ định phân cách.
- str: chuỗi cần tách.
- limit: giới hạn số phần tử trong mảng.
 Ví dụ:

$str = "Mon, Tue, Wed, Thu, Fri, Sat, Sun";
print_r (explode(",", $str));
 kết quả: Array (
[0] => Mon
[1] => Tue
[2] => Wed
[3] => Thu
[4] => Fri
[5] => Sat
[6] => Sun )

print_r (explode(",", $str, 3));
 kết quả: Array (
[0] => Mon
[1] => Tue
[2] => Wed, Thu, Fri, Sat, Sun )

IMPLODE()
Chuyễn mảng thành chuỗi.
 Cú pháp:
string implode ( string glue, array arr)
Trong đó:
- glue: chuỗi dùng để phân cách các phần tử trong chuỗi.
- arr: mảng cần chuyển.
 Ví dụ:

echo implode(", ", $arr);
 kết quả: “Mon, Tue, Wed, Thu, Fri, Sat, Sun”

3. Bài tập:
a. Nhập vào một MSSV (05.020.321). Cho biết SV đó thuộc khóa nào và số tứ tự là mấy?
b. Nhập vào một địa chỉ. Kiểm tra đó có phải là địa chỉ email không?
(1 email: không có khoảng trắng & phải có @)
c. Ta có một file chứa thông tin cá nhân của một người. Thông tin được lưu dưới hình thức như sau: hoten?gioitinh?sothich1&sothich2&sothich3?email. Giả sử sau khi truy xuất file, ta có dữ liệu dạng chuỗi như sau: "pham duy phuong?nu?Xem phim&Du lich&Nghe nhac&Doc sach?vana@yahoo.com";
Yêu cầu: Tách chuỗi này và cho hiển thị như hình dưới đây:



4. Bài giải:
a. Nhập vào một MSSV (05.020.321). Cho biết SV đó thuộc khóa nào và số tứ tự là mấy?

Trang nhap.php (trang giao diện):


<html>
<head>
<title>Bai tap MSSV</title>
</head>
<body>
<form name="form" action="xuly.php" method="get">
Nhap Ho ten: <input type="text" name="hoten" size="30" maxlength="256"><br>
Nhap MSSV: <input type="text" name="mssv" size="30" maxlength="256"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>

Trang xuly.php:
Cách 1:
<html>
<head>
<title>Bai tap MSSV</title>
</head>
<body>
<?php
echo strrpos($mssv,".");
echo "<br>";
$a = 0 + substr($mssv, 0, strpos($mssv,"."));
echo "Ban $hoten hoc khoa " . $a;
echo "Ban $hoten co so thu tu la " . substr($mssv, strrpos($mssv,".")+1, strlen($mssv));
?>
</body>
</html>

Cách 2:
<html>
<head>
<title>Bai tap MSSV</title>
</head>
<body>
<?php
$a = explode(".", $mssv);
echo "Ban $hoten hoc khoa " . $a[0];
echo "<br>";
echo "Ban $hoten co so thu tu la " . $a[2];
?>
</body>
</html>

b. Nhập vào một địa chỉ. Kiểm tra đó có phải là địa chỉ email không?
(1 email: không có khoảng trắng & phải có @)

Trang kiemtra_email.php (trang giao diện):

<html>
<head>
</head>
<body>
<form name="frame1" action="xuly1.php" method="post">
Nhap email: <input type="text" name="email" size="25" maxlength="256"><br>
<input type="submit" value="Submit">

</form>
</body>
</html>

Trang xuly1.php:
<html>
<head>
</head>
<body>
<?php
if (strpos($email, " ") === FALSE && strpos($email, "@") > -1){
echo "$email la dia chi email";
}
else echo "$email khong phai la dia chi email";
?>
</body>
</html>

c. Ta có một file chứa thông tin cá nhân của một người. Thông tin được lưu dưới hình thức như sau: hoten?gioitinh?sothich1&sothich2&sothich3?email. Giả sử sau khi truy xuất file, ta có dữ liệu dạng chuỗi như sau: "pham duy phuong?nu?Xem phim&Du lich&Nghe nhac&Doc sach?vana@yahoo.com";
Yêu cầu: Tách chuỗi này và cho hiển thị như hình dưới đây:




<html>
<head>
<title>BT xu ly chuoi file</title>
</head>
<body>
<?php
$s = "pham duy phuong?nu?Xem phim&Du lich&Nghe nhac&Doc sach?vana@yahoo.com";

$arr_info = explode("?", $s);
$ten = strtoupper(substr($arr_info[0], strrpos($arr_info[0], " ")+1,
strlen($arr_info[0])));
echo "THONG TIN VE BAN " . "<b>" . $ten . "</b><br>";
echo "Ho ten:" . ucwords($arr_info[0]) . "<br>";
echo "Gioi tinh: " . ucfirst($arr_info[1]) . "<br>";
echo "So thich:" . str_replace("&", ", ", $arr_info[2]) . "<br>";
echo "Email: " . $arr_info[3];
?>
</body>
</html>










PHẦN 3:
XÂY DỰNG HÀM NGƯỜI DÙNG
VÀ SỬ DỤNG LẠI MÃ PHP


Các vấn đề chính sẽ được đề cập:
- Cách sử dụng lại mã chương trình.
• Lợi ích khi sử dụng lại mã chương trình
• Sử dụng khai báo REQUIRE VÀ INCLUDE
• Ứng dụng
- HÀM.
• Định nghĩa hàm
• Gọi hàm
• Tham trị
• Tham biến
• Tham số có giá trị mặc định
• Giá trị trả lại của hàm
• Hàm biến
• Bài tập



1. Cách sử dụng lại mã chương trình:
1.1. Lợi ích khi sử dụng lại mã chương trình:
- Tăng tính mềm dẻo, tính nhất quán trong ứng dụng.
- Giảm thời gian xây dựng và thiết kế ứng dụng.
- Giảm chi phí phát triển phần mềm.
1.2. Sử dụng khai báo REQUIRE VÀ INCLUDE
require() và include(): dùng để chèn tập tin có mã lệnh là PHP hoặc HTML vào chương trình.

Cú pháp:

require(tên tập tin);
include(tên tập tin);

Chú ý:
Đối với các phiên bản trước phiên bản PHP 4.0.2, thì hàm require() có điểm khác với hàm include() là :
Khi gọi bằng require() thì tất cả các lệnh đều được biên dịch.
Khi gọi bằng include() thì chỉ biên dịch các lệnh thỏa điều kiện.

Ví dụ 1:





Trang doicoso.php



Giả sử $giatri = 30 => CS2: 11110 ; => CS16: 1e

Trang doicoso.php:

if ($CSO == "hex")
include("coso16.php");
else
include("coso2.php");

Trang coso2.php:

<?php
$s = "" . base_convert($giatri, 10, 2);
echo "<p align=\"center\"><b> Ket qua: " . strtoupper($s) ."</b></p>";
?>
Trang coso16.php:

<?php
$s = "" . base_convert($giatri, 10, 2);
echo "<p align=\"center\"><b> Ket qua: " . strtoupper($s) ."</b></p>";
?>



Đối với các phiên bản trước phiên bản PHP 4.0.2:
 Dùng hàm require():
- Cả 2 file coso16.php và coso2.php đều được biện dịch.
 Dùng hàm include():
- Hàm include() chỉ gọi file coso16.php khi $CSO == “hex”.
- Hàm include() chỉ gọi file coso2.php khi $CSO != “hex”.

1.3. Ứng dụng:
- Dùng để thiết kế giao diện.
- Gọi các kết nối CSDL.
Vd:



<table>
<tr>
<td> <?require("banner.php");?></td>
</tr>
<tr>
<td> <?require("menu.php");?> </td>
<td> <?require("trangchinh.php");?> </td>
<td> <?require("quangcao.php");?> </td>
</tr>
<tr>
<td> <?require("lienhe.php");?> </td>
</tr>
</table>


2. HÀM:
Dùng giống với C++. Ngoại trừ không cần phải khai báo kiểu cho tham số của hàm:
2.1. Định nghĩa hàm:

Function tenham(thamso)

Ví dụ:
function tinh_tong($a, $b){
$tong = $a + $b;
echo "Ket qua: " . $tong;
}
function tinhtong($a, $b){
$tong = $a + $b;
return $tong;
}

2.2. Gọi hàm:
Ví dụ: tinh_tong(5, 6);
$t = tinhtong(5, 6);
2.3. Tham trị :
Ví dụ:
function takes_array($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}

$input = array(5,6,8);
takes_array($input);

=> Kết quả hiển thị: 5 + 6 = 11
2.4. Tham biến:
Ví dụ:
function congchuoi(&$string) {
$string .= " World!";
}

$string = "Hello ";
echo $string; => Kết quả hiển thị: Hello

congchuoi(&$string);
echo $string; => Kết quả hiển thị: Hello World!

2.5. Tham số có giá trị mặc định:
Ví dụ:
function makecoffee ($type = "coffee") {
return "Making a cup of $type.\n";
}

echo makecoffee(); => Kết quả hiển thị: Making a cup of coffee.
echo makecoffee("tea"); => Kết quả hiển thị: Making a cup of tea.

Chú ý : khi sử dụng hàm có đối số có giá trị mặc định, các biến này sẽ phải nằm về phía phải nhát trong danh sách đối số.
Ví dụ: Sai
function buy_thing($color = "red", $thing) {
return "buying a $color $thing.\n";
}
Đúng
function buy_thing($thing, $color = "red") {
return "buying a $color $thing.\n";
}

2.6. Giá trị trả lại của hàm:
Có thể là bất kỳ giá trị nào, Tuy vây, không thể trả lại nhiều giá trị riêng lẻ nhưng có thể trả lại một mảng các giá trị.
Ví dụ:
function small_numbers() {
return array (0, 1, 2);
}
Để trả lại một tham trỏ, bạn cần có dấu & ở cả khai báo của hàm cũng như ở giá trị trả lại.
function &returns_reference() {
return &$someref;
}

$newref = &returns_reference();
2.7. Hàm biến:
PHP cho phép sử dụng hàm giá trị Nghĩa là khi một biến được goi có kèm theo dấu ngoặc đơn , PHP sẽ tìm hàm có cùng tên với giá trị biến đó và thực hiện.

Ví dụ:
function foo() {
echo "In foo() <br>\n";
}

function bar( $arg = '' ) {
echo "In bar(); argument was '$arg'.<br>\n";
}

$func = 'foo';
$func(); => Kết quả hiển thị: In foo()

$func = 'bar';
$func( 'test' ); => Kết quả hiển thị: In bar(); argument was 'test'.

3. Bài tập:
1) Viết chương trình giải phương trình bậc nhất bằng hàm.
2) Viết chương trình giải phương trình bậc hai bằng hàm.
3) Viết hàm xuất ra form.

Bài 1: Viết chương trình giải phương trình bậc nhất.
function gptb1($a , $b){
if ($a == 0){
if ($b == 0)
return "Phuong trinh vo so nghiem";
else
return "Phuong trinh vo nghiem";
}
else $x = -$b/$a;
return $x;
}

echo gptb1(3 , 6);

Bài 2: Viết chương trình giải phương trình bậc hai.
function gptb2($a , $b, $c){
$delta = pow($b,2) - 4*$a*$c;
if ($delta < 0)
return "Phuong trinh vo nghiem";
else
if ($delta == 0)
return "Phuong trinh co nghiem kep x1 = x2 = " . -$b/(2*$a);
else {
echo "Phuong trinh co 2 nghiem phan biet:";
return "x1 = " . (-$b + sqrt($delta))/(2*$a) . " va x2 = " . (-$b - sqrt($delta))/(2*$a);
}
}

echo gptb2(1 , 6, 5);

Bài 3: Viết hàm xuất ra form.
function xuat($a){
$tam = "Ket qua: ";
$tam .= "<input type=\"text\" name=\"kq\" value = \"" . $a . "\">";
echo $tam;
}

xuat(654);


PHẦN 4:
SESSION & COOKIE


Các vấn đề chính sẽ được đề cập:
- Mục đích sử dụng Session và Cookie.
- Cookie.
- Session.

1. Mục đích sử dụng Session và Cookie:
Dùng để lưu trữ phiên làm việc của một người dùng nào đó từ trang này đến trang khác trong cùng một Web Site.
2. Cookie:
Cookie là một mẩu tin nhỏ được lưu trữ trên client dùng để lưu lại các biến.
Để có thế phát sinh một cookie ta phải sử dụng hàm setcookie().
a. Gán cookie từ PHP:
Cú pháp:


bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

Ví dụ:

setcookie("username", $name)

setcookie("my_cookie","my_id",
time()+(60*60*24*30),"/",".mydomain.com", 0)

Lệnh trên sẽ phát sinh một cookie với các chức năng sau:
• Chứa một biến tên là my_cookie
• Giá trị của mycookie my_id
• Cookie tồn tại trong vòng 30 ngày kể từ ngày nó phát sinh (time()+(30*24*60*60) ngày giờ hiện tại + 30 ngày được quy ra giây).
• Cookie có tác dụng đến tất cả các trang trong domain. Bạn có thể hạn chế lại bằng cách chỉ ra đường dẫn đến một số trang nào đó trong domain.
• Nó sẽ hiện diện trong tất cả các website có địa chỉ
• Không có xác lập đặc biệt nào về bảo mật.

Một khi cookie được xác lập, các biến phát sinh từ cookie có tác dụng giống như biến phát sinh từ form. Chúng sẽ hiện diện với chức năng là biến global.

b. Đọc giá trị từ Cookie:

Ta có thể đọc giá trị từ Cookie bằng cách truy xuất thông qua mảng.
Ví dụ: $HTTP_COOKIE_VARS["my_cookie"]

c. Ví dụ:


Trang Page1.php:


<?php
if (isset($B1) && $B1 == "Gan Cookie"){
setcookie("username",$ten);
}
?>

<html>
<head>
<title>Cookie</title>
</head>
<body>
<form method="POST" action="<?=$PHP_SELF?>">
<p>Nhap ten cua ban:&nbsp;&nbsp;&nbsp;
<input type="text" name="ten" value = "<?php echo $ten ?>" size="20">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Gan Cookie" name="B1"></p>
<a href="page2.php">Next Page</a>
</form>
</body>
</html>
Khi nhấn nút <Gan Cookie>, trình duyệt sẽ tiến hành gán cookie (lưu biến vừa nhập). Sau đó khi truy cập đến trang kế tiếp (page2.php), ta có thể gọi cookie khai báo trong page1.php dưới dạng biến $username, biến này sẽ có giá trị là tên vừa nhập vào ở trang page1.php.



Trang Page2.php:




<?php
$name = $HTTP_COOKIE_VARS["username"];
echo "Xin chao ban $name!";
?>


3. Session:
Session chỉ đơn giản là một cách thức để duy trì và truyền biến trong khi chuyển tiếp giữa các trang web.
Session được nhận biết bởi một session ID duy nhất, và thường thì ID này được gởi đến user thông qua một cookie. PHP sau đó tạo một tập tin trên server để theo dõi sự thay đổi của biến. Tập tin này có tên giống như tên của SessionID.
Một khi session được tạo, ta có thể đăng ký bất kỳ số lượng biến. Các giá trị của những biến này được lưu giữ trong tập tin trên server. Cũng như sự tồn tại của cookie, các biến trong session sẽ hiện diện trên bất kỳ trang nào được truy cập đến trong phạm vi một domain. Việc xác lập này rất thuận tiện hơn là chuyển tiếp các biến từ trang này sang trang khác thông qua các phần tử ẩn trong form hay cookie.
Các bước làm việc trên session: (gồm 4 bước)
- Khởi động session.
- Đăng ký biến session.
- Sử dụng biến session.
- Hủy bỏ session.

a. Khởi động Session:

session_start();

b. Đăng ký biến session:

session_register(tenbien);

Vd:
$value = 69;
Session_register(“value”);

c. Sử dụng biến session:

Vd: Đọc giá trị biến session
echo “Bien value moi dang ky co gia tri la: $value”;

d. Hủy Session:
Hủy một biến session:

session_unregister(tenbien);

Hủy tất cả biến session đang có hiệu lực:

session_unset();

Kết thúc tất cả các biến session.

session_destroy();


e. Ví dụ:
Trang page1.php: Đăng ký các biến session.





<?php
if (isset($B1) && $B1 == "Register"){
session_start();
session_register("name");
session_register("email","fullname");
}

?>

<html>
<head>
<title>Cookie</title>
</head>
<body>
<form method="POST" action="<?=$PHP_SELF?>">
<p>UserID:&nbsp;&nbsp;&nbsp;
<input type="text" name="name" value = "<?php echo $name?>"></p>

<p>Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" name="email" value = "<?php echo $email ?>"></p>

<p>Fullname:&nbsp;
<input type="text" name="fullname" value = "<?php echo $fullname ?>"></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp

<input type="submit" value="Register" name="B1"></p>

<a href="page2.php">Next Page</a>

</form>
</body>
</html>

Khi nhấn nút Register, trình duyệt sẽ tiến hành đăng ký 3 biến session: $name, $email, $fullname.
Sau đó, nếu ta chọn Next Page từ trang page1.php, thì trang page2.php sẽ được gọi, và ta sẽ nhận được kết quả như hình dưới đây:





<?php
session_start();
?>
<html>
<head>
<title>Continue to get sessions</title>
</head>
<body>
<?php
echo "Userid: $name.<br>";
echo "Email: $email.<br>";
echo "Fullname: $fullname.<br>";
?>

<a href="page1.php">[Previous Page]</a>
<a href="page3.php">[Next Page]</a>

</body>

Khi chọn Next Page từ trang page2.php, thì trang page3.php sẽ được gọi, trong trang page3.php có khai báo phát biểu xóa biến session có tên $name.



Khi chọn lại trang Previous Page (trang page2.php), kết quả sẽ hiển thị như sau:


Report this post
Top
 Profile E-mail  
Reply with quote  
 Post subject: Re: DE CUONG VE LAP TRINH PHP PHAN1
PostPosted: Tue Mar 31, 2009 10:35 pm 
Offline

Joined: Thu Feb 12, 2009 5:29 pm
Posts: 9
vanliem wrote:
PHẦN 1:
GIỚI THIỆU LẬP TRÌNH PHP


Các vấn đề chính sẽ được đề cập:
- Php là gì?
- Những đặc điểm trong php
- Cơ chế hoạt động của PHP
- Yêu cầu về công cụ
- Nhúng PHP vào HTML
- Hàm echo()
- Biến - Khai báo biến
- Kiểu dữ liệu
- Cách truyền biến
- Hằng số
- Toán tử
- Các cấu trúc lệnh
- Bài tập

1. Php là gì?
PHP là một ngôn ngữ lập trình kiểu script, chạy trên Server và trả về mã HTML cho trình duyệt.
Ví dụ:

<html>
<head>
<title>Example</title>
</head>
<body>
<?php echo "Hello PHP!"; ?>
</body>
</html>



Mã PHP được đặt trong kiểu tag đặc biệt cho phép chèn bất cứ vị trí nào trong file HTML.

2. Những đặc điểm trong php:
- Tốc độ nhanh, dễ sử dụng.
- Chạy trên nhiều hệ điều hành.
- Làm việc trên đa số các loại cơ sở: SQL server, Access, MySQL, PostgreSQL, Oracle …
- Luôn được cải tiến và cập nhật.

3. Cơ chế hoạt động của PHP:
PHP là một ngôn ngữ máy chủ, mã lệnh PHP sẽ tập trung trên máy chủ để phục vụ các trang web theo yêu cầu của người dùng thông qua trình duyệt.
Cơ chế hoạt động của PHP:




Khi người dùng truy cập website viết bằng PHP, máy chủ sẽ đọc mã lệnh PHP và xử lý chúng theo các hướng dẫn đã được mã hóa. Nếu có yêu cầu truy vấn cơ sở dữ liệu, nó sẽ truy vấn đến hệ cơ sở dữ liệu MySQL để lấy dữ liệu về. Sau đó PHP sẽ yêu cầu máy chủ gửi một dữ liệu thích hợp (mã lệnh HTML) đến trình duyệt Web. Trình duyệt sẽ xem nó như một trang HTML tiêu chuẩn.

4. Yêu cầu về công cụ:
1. Web Server (Apache, Xitami hoặc IIS)
2. PHP
3. MySQL
4. Trình duyệt Web (Internet Explorer …)
5. Trình soạn thảo văn bản (Dreamweaver, Frontpage, Notepad++, AceHTML …)
6. Ứng dụng ftp nếu dùng máy chủ từ xa.

5. Nhúng PHP vào HTML: có 4 cách nhúng PHP:
Cách 1: (kiểu short)
<?
Các mã lệnh PHP
?>

vd: <? echo ("Welcome to PHP"); ?>
->Nếu sử dụng cách 1 phải cấu hình tập tin php.ini với, short_open_tag = on

Cách 2: (kiểu định dạng XML)
<?php
Các mã lệnh PHP
?>

vd: <?php echo ("Welcome to PHP"); ?>

Cách 3: (kiểu script)
<script language="php">

Các mã lệnh PHP

</script>

vd: <?php echo ("Welcome to PHP"); ?>

Cách 4: (kiểu ASP)
<%

Các mã lệnh PHP

%>

vd: <% echo ("Welcome to PHP"); %>

->Nếu sử dụng cách 4 phải cấu hình tập tin php.ini với, asp_tags = on

6. Hàm echo():
Hàm echo() dùng để gửi mã lệnh HTML đến trình duyệt web.

Ví dụ:

<html>
<head>
<title>Vi du ham echo</title>
</head>
<body>
<?php
echo "<form name='form1' action='xuly.php' method='post'>";
echo "Xin chao ban <input type='text' name='ten' size='10'>";
echo "</form>"
?>
</body>
</html>

7. Biến - Khai báo biến:
a. Khai báo biến:
Định nghĩa biến: $tenbien
PHP không cần khai báo biến trước khi sử dụng nó.
Chú ý:
- Nên khai báo biến và khởi tạo giá trị ban đầu cho biến trước khi sử dụng.
- Không nên khai báo biến trùng tên với hàm.
- Tên biến không bắt đầu bằng ký tự số và không có khoảng trống.
- Giống ngôn ngữ C, PHP có phân biệt kiểu chữ. Vd: $a ≠ $A
Vd:
$a = "Hello PHP!"; //day la bien chuoi
$b = 9; //day la bien so
$c = 6.354; //day la bien so thuc
$d = "8"; //day cung la bien chuoi
--------------------------------------------------------------
$e = $b + $d;
echo "\$e co kieu la " . gettype($e);
echo "\$e = $e";

 kết quả hiển thị: $e co kieu la integer $e = 17

--------------------------------------------------------------
$f = "8.687 la mot so thuc";
$kq = $b + $f;
echo "\$kq co kieu la " . gettype($kq);
echo "\$kq = $kq"; => kết quả hiển thị: $kq co kieu la double $kq = 17.687

b. Giới thiệu một số biến được xây dựng sẳn trong PHP:

Tên biến Ý nghĩa
$PHP_SELF: Trả về địa chỉ trang web đang chạy.
$HTTP_COOKIE_VARS: Tất cả cookies được gởi đến trình duyệt sẽ có thể được đọc trong mảng kết hợp này.
$HTTP_POST_VARS: Đây là mảng chứa tất cả các biến thông qua phương thức POST thông thường qua form.
$ HTTP_GET_VARS: Đây là mảng chứa tất cả các biến thông qua phương thức GET.

c. Phạm vi giá trị:
PHP coi 1 biến có một giới hạn. Để xác định một biến toàn cục (global) có tác dụng trong một hàm , ta cần khai báo lại. Nếu không giá trị của biến sẽ được coi như là cục bộ trong hàm.
Ví dụ 1 Ví dụ 2

$a = 2;
$b = 3;
Function tinhtong () {
$b = $a + $b;
}

tinhtong ();
echo $b;

=> kết quả hiển thị: 3
$a = 2;
$b = 3;
Function tinhtong () {
global $a, $b;
$b = $a + $b;
}
tinhtong ();
echo $b;

=> kết quả hiển thị: 5

d. Khai báo static.
Với khai báo này bên trong một hàm với 1 biến cục bộ, giá trị của biến cục bộ đó sẽ không bị mất đi khi ra khỏi hàm.

Ví dụ:
Function test() {
static $a = 0;
echo $a;
$a++;
}
test(); => kq: $a = 0
test(); => kq: $a = 1
test(); => kq: $a = 2

Với khai báo như trên, $a sẽ không mất đi giá trị sau khi thực hiện lời gọi hàm Test() mà $a sẽ được tăng lên 1 sau mỗi lần gọi hàm Test().

8. Kiểu dữ liệu:
a. Số nguyên: Được khai báo và sử dụng giá trị giống với C:
Ví dụ:
$a = 1234; # decimal number
$a = -123; # a negative number
$a = 0x12; # hexadecimal number (equivalent to 18 decimal)

b. Số thực:
Ví dụ : $a = 1.234; $a = 1.2e3;
Chú ý: Khi sử dụng các số thực để tính toán , có thể sẽ làm mất giá trị của nó. Vì vậy, nên sử dụng các hàm toán học trong thư viện chuẩn để tính toán.

c. Chuỗi:
Có 2 cách để xác định 1 chuỗi:
- Đặt giữa 2 dấu nháy kép (")
- Đặt giữa 2 dấu nháy đơn (').
Chú ý:
Các biến giá trị sẽ không được khai triển trong chuỗi giữa 2 dấu nháy đơn.
Vd:
$name = "Fahasa";

$str = "Nha sach $name";
echo $str; => kết quả hiển thị: Nha sach Fahasa

$str = 'Nha sach $name';
echo $str; => kết quả hiển thị: Nha sach $name
Khi dùng lệnh echo để xuất các ký tự đặc biệt: dấu nháy kép (“), dấu gạch (\), dấu đôla ($) thì ta phải thêm dấu gạch (\) ở trước nó.
Vd:
echo "<form action = \"hello.php\" method = \"post\">";

Phép toán nối chuỗi: dùng dấu “.” để nối 2 chuỗi lại với nhau.
Vd:
$str = "Nha sach " . "Fahasa";
echo $str; => kết quả hiển thị: Nha sach Fahasa

Đổi kiểu chuỗi sang kiểu số:
Vd:
--------------------------------------------------------------
//doi kieu chuoi sang kieu so
echo "\$d co kieu la " . gettype($d); => kết quả hiển thị: $d co kieu la string

$d = 0 + $d;
echo "\$d co kieu la " . gettype($d);
echo "\$d = $d"; => kết quả hiển thị: $d co kieu la integer $d = 8

d. Mảng :
Mảng một chiều:
 Khai báo mảng:

array( [key =>] value
, ...
)

Trong đó:
+ key: chỉ số mảng (có kiểu integer hoặc string)
+ value: giá trị (dùng cho tất cả các kiểu dữ liệu)
Ví dụ:
$mang = array(1, 2, 3, 4, 5);
print_r($mang); => kq:Array([0]=> 1 [1]=> 2 [2]=> 3 [3]=> 4 [4]=> 5)
$a = array();
$a[0] = 'apple';
$a[1] = 'banana';
$a[2] = 'orange';
$a[3] = 'lemon';
print_r($a);
=> kq: Array([0] => apple [1]=> banana [2]=> orange [3]=> lemon)

$b = array (“a” => 'apple', “b” => 'banana',
“c” => array (“x”, “y”, “z”));
print_r($b);
=> kq: Array ( [a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z))

 Truy xuất mảng:
Vd:
echo $a[0];
echo $b[“a”];
echo $a["c"][0];

Mảng 2 chiều:
 Khai báo mảng:

Vd1: Giả sử ta có 1 ma trận như sau:

i\j 0 1 2
0 1 2 3
1 4 5 6
2 7 8 9

=> cách khai báo: $mang = array(array(1,2,3), array(4,5,6), array(7,8,9));

Vd2:
$a = array();

$a[0][0] = 'apple';
$a[0][1] = 'banana';
$a[1][0] = 'orange';
$a[1][1] = 'lemon';

Vd3:
$b = array("Huong" => array("chieu cao" => "1m76", "tuoi" => "26tuoi"),
"Binh" => array("chieu cao" => "1m82", "tuoi" => "39tuoi"));
 Truy xuất mảng:
Vd:
echo $mang[0][1];
echo $b["Huong"][“chieu cao”]; => kq: 1m76
echo "Huong co chieu cao la {$a["Huong"]["chieu cao"]}";

9. Cách truyền biến:
Truyền biến thông qua Form
Để lấy giá trị của các đối tượng do người dùng nhập vào, ta thường sử dụng thẻ form trong trang Web. Các đối tượng trong form đều được gán với một cái tên duy nhất. Đối với PHP, tên đó sẽ trở thành biến và giữ giá trị của đối tượng đó.
Ví dụ: Giả sử, trong form có chứa đối tượng như sau:

Mã HTML:
<input type="text" name="diachi">

=> $diachi là biến và chứa giá trị do người dùng nhập vào (“Vinh long”).
Ta có thể sử dụng biến $HTTP_POST_VARS["tendoituong"] để truy xuất giá trị của đối tượng trong form.
Ví dụ: $HTTP_POST_VARS["diachi"]
Chú ý: Không được đặt tên biến trùng với tên của đối tượng trong form.

Ví dụ: Viết chương trình tính tổng của 2 số a và b.


Cách 1:
Trang tinhtong.php
<html>
<head>
<title>Tinh tong</title>
</head>
<body>
<form name="form1" action="xuly.php" method="post">
NHAP 2 SO A VA B: <br>
So a: <input type="text" name="soa" size="10"><br>
So b: <input type="text" name="sob" size="10"><br>
<input type="submit" value="Tinh tong">
</form>
</body>
</html>

Trang xuly.php

<html>
<head>
<title>Trang xu ly 1</title>
</head>
<body>
<?php
$kq = $soa + $sob;
echo "Ket qua: $kq";
?>
</body>
</html> <html>
<head>
<title> Trang xu ly 2</title>
</head>
<body>
<?php
$kq = $HTTP_POST_VARS["soa"] + $HTTP_POST_VARS["sob"];
echo "Ket qua: $kq";
?>
</body>
</html>

Cách 2:
Trang tinhtong.php
<html>
<head>
<title>Tinh tong</title>
</head>
<body>
<form name="form1" action="xuly.php" method="get">
NHAP 2 SO A VA B: <br>
So a: <input type="text" name="soa" size="10"><br>
So b: <input type="text" name="sob" size="10"><br>
<input type="submit" value="Tinh tong">
</form>
</body>
</html>

Trang xuly.php

<html>
<head>
<title>Trang xu ly 1</title>
</head>
<body>
<?php
$kq = $soa + $sob;
echo "Ket qua: $kq";
?>
</body>
</html> <html>
<head>
<title> Trang xu ly 2</title>
</head>
<body>
<?php
$kq = $HTTP_GET_VARS["soa"] + $HTTP_GET_VARS["sob"];
echo "Ket qua: $kq";
?>
</body>
</html>

Truyền mảng từ HTML form:
Khi một đối tượng trong form cùng lúc mang nhiều giá trị, để lấy giá trị của đối tượng đó ta phải làm bằng cách là truyền qua mảng.
Ví dụ 1: Giả sử ta có đối tượng trong form như sau:

 Để lấy 3 giá trị được chọn (DVD, MONITOR, HDD) ta làm như sau:

<p>Chon linh kien: </p>
<p>
<select size="4" name="linhkien[]" multiple>
<option>DVD</option>
<option>MOUSE</option>
<option>MONITOR</option>
<option>HDD</option>
<option>CPU</option>
</select>
</p>

<?php print_r ($linhkien); ?>
=> kết quả hiển thị:Array ( [0] => DVD [1] => MONITOR [2] => HDD )

Ví dụ 2: Viết chương trình hiển thị các giá trị mà người dùng chọn:



Trang giao dien:

<html>
<head>
<title>Trang chon cac tinh ma ban da den</title>
</head>
<body>
Chon cac tinh ma ban da den:
<form name="form1" action="xuly.php" method="post">
<select name="quequan[]" multiple>
<option value="Vinh Long"> Vinh Long</option>
<option value="Can Tho"> Can Tho</option>
<option value="Nha Trang"> Nha Trang</option>
<option value="Da Lat"> Da Lat</option>
</select>
<input type="submit" value="Submit">
</form>
</body>
</html>

Trang xuly.php

<html>
<head>
<title>Trang xu ly</title>
</head>
<body>
<?php
echo "Cac mon ban da chon:";
$n = count($quequan); //so phan tu trong mang
for($i = 0; $i < $n-1; $i++){
echo "$quequan[$i], ";
}
echo $quequan[$n-1];
?>
</body>
</html>


10. Hằng số:
a. Cú pháp:
define(“tenhang”, giatri);


Ví dụ:
define("MAX", 10);
echo MAX;

b. Hằng được định nghĩa sẵn:
Tên biến Ý nghĩa
_FILE_: Tên của script file đang được thực hiện.
_LINE_ : Số dòng của mã script đang được thực hiện trong script file hiện tại.
_PHP_VERSION_ : Version của PHP
E_ERROR: Báo hiệu có lỗi

11. Toán tử:
- Toán tử so sánh: = =, = = =, !=, >, <, >=, <=
- Toán tử logic: and, &&, or, ||, xor
12. Các cấu trúc lệnh:
a. Cấu trúc if:
if (dieukien){
thực hiện lệnh nếu điều kiện đúng;
}
if (dieukien){
lệnh 1
}
else {
lệnh 2
}
if (điều kiện)
{ lệnh 1 }
elseif ( điều kiện )
{ lệnh 2}
else
{ lệnh 3}

b. Vòng lặp :
while (dieukien) { ...}
do { .....} while ( dieukien );
for (bieuthuc1; bieuthuc2; bieu thuc3) {.....}
foreach(array_expression as $value) { thực hiện câu lệnh }
foreach(array_expression as $key => $value) { thực hiện câu lệnh }
Ví dụ 1:
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => "lemon");
foreach($a as $value){
echo $value . ", ";
}
foreach($a as $key => $value){
echo "<b>$key: </b> $value <br>";
}

Ví dụ 2: Thiết kế phần giao diện để cho phép người dùng chọn ngày, tháng, năm

<html>
<head>
<title></title>
<body>
<?php
$months = array("Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sep","Oct","Nov","Dec");
$days = range(1,31);

//lay ngay hien hanh
$today = getdate();
$years = range(1970,$today["year"]);

//hien thi combobox chua Thang
echo "<select name=\"cboThang\">";
foreach($months as $value){
echo "<option value=\"$value\"> $value </option>";
}
echo "</select>";

//hien thi combobox chua Ngay
echo "<select name=\"cboNgay\">";
foreach($days as $value){
echo "<option value=\"$value\"> $value </option>";
}
echo "</select>";

//hien thi combobox chua Nam
echo "<select name=\"cboNam\">";
foreach($years as $value){
echo "<option value=\"$value\"> $value </option>";
}
echo "</select>";

?>
</body>
</html>



c. break và continue:
break : thoát ra khỏi vòng lặp hiện thời
continue : bỏ qua vòng lặp hiện tại, tiếp tục vòng tiếp theo.
d. switch
switch (tên biến) {
case trường hợp 1: ..... break;
case trường hợp 2: ..... break;
case trường hợp 3: ..... break;
default :
}

13. BÀI TẬP:
Bài 1: Hãy thiết kế giao diện như hình dưới đây bằng ngôn ngữ PHP.


CODE HTML:
<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php">
Ho ten: <input type="text" name="hoten" size="20"><br>
Gioi tinh: <input type="radio" value="nam" name="R1" checked>
<input type="radio" value="nu" name="R1"> Nu <br>

Que quan: <select size="1" name="D1">
<option selected>vinh long</option>
<option>can tho</option>
</select><br>

<input type="submit" value="Submit" name="B1"><br>
</form>
</body>
</html>

Bài 2: Ta có một file php có mã code như hình dưới đây:

<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php">
Ho ten: <input type="text" name="hoten" size="20"><br>
Dia chi: <input type="text" name="hoten" size="20"><br>

Gioi tinh: <input type="radio" value="nam" name="R1" checked>
<input type="radio" value="nu" name="R1"> Nu <br>
Que quan: <select size="1" name="D1">
<option selected>vinh long</option>
<option>can tho</option>
</select><br>
<input type="submit" value="Submit" name="B1"><br>
</form>
</body>
</html>

Giả sử trong php có 4 biến có giá trị như sau:
<?php $a = "Tran Ngoc Lan"; $b = "F1"; $c = "nu"; $d = "ct";?>

Yêu cầu: Viết code sao cho khi chạy trang web các đối tượng trong form lần lượt mang giá trị của các biến trên.



Bài 3: Bạn Mai có mua 30 cái điện thoại với đơn giá là $88.32 với thuế xuất là 0.05. Viết trang web để thông báo cho bạn Mai biết tổng số tiền phải trả cho cửa hàng đó.



Bài 4: Ta có giao diện như hình dưới đây.

a. Khi người dùng nhập thông tin và nhấn nút Submit, dữ liệu sẽ được truyền qua một trang khác (trang xuly.php) và cho hiển thị thông tin mà người dùng vừa nhập. Yêu cầu: viết trang xử lý.
b. Khi người dùng nhập thông tin và nhấn nút Submit, dữ liệu sẽ được truyền vào chính trang đó và cho hiển thị thông tin mà người dùng vừa nhập. Yêu cầu: viết thêm phần xử lý đó.


Bài 5: Viết một trang web để thăm dò ý kiến của người dùng. Khi người dùng nhập xong, và nhấn nút submit sẽ nhận được một trang web phản hồi như sau.



Bài 6: Viết chương trình tính toán đơn giản (cộng, trừ, nhân, chia)

14. BÀI GIẢI:
Bài 1:
<html>
<head>
<title>Bai tap 1</title>
</head>
<body>
<?php
echo "<form method=\"POST\" action=\"xuly.php\">";
echo "Ho ten: <input type=\"text\" name=\"hoten\" size=\"20\"><br>";
echo "Gioi tinh: <input type=\"radio\" value=\"nam\" name=\"R1\" checked>";
echo "<input type=\"radio\" value=\"nu\" name=\"R1\"> Nu <br>";
echo "Que quan: <select size=\"1\" name=\"D1\">";
echo "<option selected>vinh long</option>";
echo "<option>can tho</option></select><br>";
echo "<input type=\"submit\" value=\"Submit\" name=\"B1\"><br>";
echo "</form>";
echo "</body>";
echo "</html>";
?>
</body>
</html>


Bài 2:
<html>
<head>
<title>bai 2</title>
</head>
<body>
<?php $a = "Tran Ngoc Lan"; $b = "F1"; $c = "nu"; $d = "ct";?>
<form method="POST" action="xuly.php">
Ho ten: <input type="text" name="hoten" value = "<?=$a?>" size="20"><br>
Dia chi: <input type="text" name="dia chi" value = "<?=$b?>" size="20"><br>

Gioi tinh: <input type="radio" value="nam" name="R1"
<?php if ($c == "nam") echo "checked"?>>
<input type="radio" value="nu" name="R1"
<?php if ($c == "nu") echo "checked"?>> Nu <br>

Que quan:
<select size="1" name="D1">
<option value = "vl" <?php if ($d == "vl") echo "selected"?> >vinh long</option>
<option value = "ct" <?php if ($d == "ct") echo "selected"?> >can tho</option>
</select><br>

<input type="submit" value="Submit" name="B1"><br>
</form>
</body>
</html>

Bài 3:

<html>
<head>
<title></title>
</head>
<body>
<?php
$soluong = 30;
$gia = 88.32;
$thue = 0.05;

$tongtien = $soluong * $gia;
$tongtien = $tongtien + ($tongtien*$thue); //bo sung thue
$tongtien = number_format($tongtien, 2); //dinh dang ket qua

echo "Ban mua <b>$soluong</b> mat hang voi don gia <b>\$$gia</b>. Cong voi thue, tong so tien la <b>\$$tongtien</b>";

?>
</body>
</html>

Bài 4:
 Câu a:
Trang giao diện:
<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php”>
<p><b>TRANG DANG NHAP</b></p>
<p>email: <input type="text" name="email" size="20"></p>
<p>password: <input type="password" name="password" size="20"></p>
<p><input type="submit" value="Submit" name="B1"></p>
<p>&nbsp;</p>
</form>
</body>
</html>

Trang xuly.php
<html>
<head>
<title>New Page 1</title>
</head>
<body>
<?PHP
if (isset($B1)){
echo "<hr>";
echo "<b>THONG TIN BAN VUA NHAP LA:<BR>";
echo "Email: $email <BR>";
echo "Password: $password";
}
?>
</body>
</html>

Câu b:

<html>
<head>
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="<?=$PHP_SELF?>">
<p><b>TRANG DANG NHAP</b></p>
<p>email: <input type="text" name="email" value = "<?=$email?>" size="20"></p>
<p>password: <input type="password" value = "<?=$password?>" name="password" size="20"></p>
<p><input type="submit" value="Submit" name="B1"></p>
<p>&nbsp;</p>
</form>
<?PHP
if (isset($B1)){
echo "<hr>";
echo "<b>THONG TIN BAN VUA NHAP LA:<BR>";
echo "Email: $email <BR>";
echo "Password: $password";
}
?>
</body>
</html>

Bài 5:
Trang giao diện:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body>
<form method="POST" action="xuly.php">
<fieldset style="width: 345px; height: 219px"><legend align="left"><b>Bang dong gop y kien</b></legend>

Ho: <input type="text" name="ho" size="20"><br>

Ten: <input type="text" name="ten" size="20"><br>

Email: <input type="text" name="email" size="20"><br>

Tuoi: <select size="1" name="tuoi">
<option selected>duoi30tuoi</option>
<option>tu30den50tuoi</option>
<option>tren50tuoi</option>
</select> <br>

Y kien: <textarea rows="3" name="ykien" cols="28"></textarea><br>

<input type="submit" value="Submit" name="B1">&nbsp;

</fieldset>
</form>
</body>
</html>

Trang xuly.php:

<html>
<head>
<title>Phan hoi</title>
</head>
<body>
<?php
$hoten = $ho . " " . $ten;
$ykien = stripslashes($ykien);
echo "Cam on $hoten da dong gop ý kien sau: <br> $ykien<br><br>";
echo "Chung toi se hoi am cho ban theo dia chi email <i>$email</i>";
?>
</body>
</html>

Bài 6:

<html>
<head>
<title></title>
</head>
<body>
<?php
if (isset($b1)){
if ($toantu == "+"){
$kq = $soa + $sob;
}
else if ($toantu == "-"){
$kq = $soa - $sob;
}
else if ($toantu == "*"){
$kq = $soa * $sob;
}
else {
$kq = $soa / $sob;
}
}
?>


<form name="f1" action="form1.php" method="get">
so thu nhat: <input type="text" name="soa" value="<?php echo $soa;?>" size="10">
<select name="toantu">
<option value="+" <?php if ($toantu == "+") echo "selected";?>> +</option>
<option value="-" <?php if ($toantu == "-") echo "selected";?>> -</option>
<option value="*" <?php if ($toantu == "*") echo "selected";?>> *</option>
<option value="/" <?php if ($toantu == "/") echo "selected";?>> /</option>
</select>
<br>
so thu hai: <input type="text" name="sob" value="<?php echo $sob;?>" size="10"><br>


<input type="submit" name = "b1" value="Tinh">


<br>
ketqua: <input type="text" name="kq" value="<?php echo $kq;?>" size="20" maxlength="70">
</form>
</body>
</html>




PHẦN 2:
DỮ LIỆU DẠNG CHUỖI


Các vấn đề chính sẽ được đề cập:
- Một số điều khi sử dụng chuỗi
- Các hàm quản lý chuỗi
- Bài tập

1. Một số điều khi sử dụng chuỗi:
- Chuỗi được đặt trong (“”) hoặc (‘’).
- Để nối 2 chuỗi lại với nhau ta dùng dấu “.”
- Dùng lệnh echo để xuất chuỗi.
- Khi xuất các ký tự đặc biệt: “, \, $ ta phải thêm dấu gạch (\) ở trước nó.
Vd:
echo "<input type = \"text\" value = \"ABC\” name = \”kq\”>";

- Để xuống dòng ta dùng thẻ <br> hoặc dùng hàm thay kí tự \n thành thẻ <br> nl2br(string str).
Vd:
echo "Ten: Huong <br> Dia chi: Vinh long";

Trong định dạng HTML:

<p><?echo nl2br("Ten: Huong \n Dia chi: Vinh long"); ?></p>
- Biến kiểu chuỗi: $tenbien.

2. Các hàm quản lý chuỗi:
Hàm thay đổi kiểu chữ của chuỗi:

Hàm Diễn giải Sử dụng Kết quả
string strtolower (string str)
string strtoupper (string str)
string ucfirst (string str)
string ucwords (string str) Chữ thường
Chữ hoa
Chữ hoa ký tự đầu tiên
Chữ hoa ký tự đầu tiên của mỗi từ strtolower(“HEllo”)
strtoupper (“hello”)
ucfirst(“helLO php”)
ucwords (“helLO pHp”) Hello
HELLO
HelLO php
HelLO PHp

Hàm loại bỏ ký tự:

Hàm Diễn giải
STRIP_TAGS():
Hàm loại các thẻ HTML và PHP khỏi chuỗi.
 Cú pháp:
string strip_tags(string str [, string allowable_tags])
 Ví dụ:

$str = "<font face=Arial><b>HTML va PHP</b></font><br>";
echo $str; => HTML va PHP
echo strip_tags($str, "<b>"); => HTML va PHP


TRIM()

Loại bỏ ký tự trắng ở ký tự đầu và cuối chuỗi.
 Cú pháp:
string trim(string str)
 Ví dụ:
echo "Ten: Lan Chi";
echo trim(" Dia chi: Soc Trang ");
echo "Email: lan@yahoo.com";
=> Ten: Lan ChiDia chi: Soc TrangEmail: lan@yahoo.com

LTRIM()



Loại bỏ ký tự trắng ở bên trái chuỗi.
 Cú pháp:
string ltrim(string str)
 Ví dụ:
echo "Ten: Lan Chi";
echo ltrim(" Dia chi: Soc Trang ");
echo "Email: lan@yahoo.com";
=> Ten: Lan ChiDia chi: Soc Trang Email: lan@yahoo.com



CHOP()



Loại bỏ ký tự trắng ở cuối chuỗi.
 Cú pháp:
string chop(string str)
 Ví dụ:
echo "Ten: Lan Chi";
echo chop(" Dia chi: Soc Trang ");
echo "Email: lan@yahoo.com";
=> Ten: Lan ChiDia chi: Soc Trang Email: lan@yahoo.com



Hàm tìm kiếm và thay thế chuỗi:

Hàm Diễn giải
STRPOS()
Tìm vị trí chuỗi con.
 Cú pháp:
int strpos(string str1, string str2 [,int offset])
Hàm trả về vị trí xuất hiện của chuỗi 2 trong chuỗi 1 ngược lại hàm trả về FALSE (có kiểu là BOOLEAN)
Đối số thứ 3 là vị trí bắt đầu tìm, nếu không chỉ ra hàm sẽ tìm từ đầu chuỗi.
Ký tự đầu tiên tính từ 0.

 Ví dụ:

$str1 = "Email: lan@yahoo.com";
echo "vi tri: " . strpos($str1, "lan");
=> vi tri: 7


STRRPOS()

Tương tự hàm strpos() những nó tìm vị trí xuất hiện cuối cùng của chuỗi thứ 2 trong chuỗi thứ 1.
 Cú pháp:
int strrpos(string str1, string str2)
 Ví dụ:

$str1 = "Nha Sach Phuong Nam";
echo "vi tri: " . strrpos($str1, " ");
=> vi tri: 15

STRLEN()
Tìm chiều dài của chuỗi.
 Cú pháp:
int strlen(string str)
 Ví dụ:

$str = "Nha Sach Nguyen Thi Minh Khai";
echo strlen($str);
=> kết quả: 29

SUBSTR()
Lấy chuỗi con với chiều dài l bắt đầu từ vị trí thứ i
 Cú pháp:
string substr(string str, int i [,int l)
 Ví dụ:

$str = "Nha Sach Nguyen Thi Minh Khai";
echo substr($str, 6, 7);
=> kết quả: “ch Nguy”

echo substr($str, 6);
=> kết quả: “ch Nguyen Thi Minh Khai”

echo substr($str, 5, -3);
=> kết quả: “ach Nguyen Thi Minh K”



STRTR()
Thay thế từng ký tự trong đối số thứ 2 xuất hiện trong đối thứ nhất với từng ký tự tương ứng trong đối thứ 3
 Cú pháp:
string strtr (string str1, string str2, string str3) hoặc
string strtr (string str, array arr)

 Ví dụ:

$str1 = "This is a book";
echo strtr($str1, "is", "??");
=> kết quả: Th?? ?? a book

$str = "Apache, PHP, MySQL";
$arr = array("Apache" => "IIS", "PHP" => "ASP", "MySQL" => "SQL Server");
echo strtr($str, $arr);
=> kết quả: IIS, ASP, SQL Server

STR_REPLACE()

Thay thế chuỗi str1 bằng chuỗi str2 trong chuỗi str.
 Cú pháp:
string str_replace (string str1, string str2, string str)
 Ví dụ:

$str = "This is a book.";
echo str_replace("book", "pen", $str);
=> kết quả: This is a pen.




Hàm kết hợp hay tách chuỗi:

Hàm Diễn giải
EXPLODE()
Tách chuỗi str thành nhiều chuỗi con bằng 1 chuỗi hay 1 ký tự phân cách nào đó.
 Cú pháp:
array explode(string seperator, string str [,int limit])
Trong đó:
- seperator: chuỗi chỉ định phân cách.
- str: chuỗi cần tách.
- limit: giới hạn số phần tử trong mảng.
 Ví dụ:

$str = "Mon, Tue, Wed, Thu, Fri, Sat, Sun";
print_r (explode(",", $str));
 kết quả: Array (
[0] => Mon
[1] => Tue
[2] => Wed
[3] => Thu
[4] => Fri
[5] => Sat
[6] => Sun )

print_r (explode(",", $str, 3));
 kết quả: Array (
[0] => Mon
[1] => Tue
[2] => Wed, Thu, Fri, Sat, Sun )

IMPLODE()
Chuyễn mảng thành chuỗi.
 Cú pháp:
string implode ( string glue, array arr)
Trong đó:
- glue: chuỗi dùng để phân cách các phần tử trong chuỗi.
- arr: mảng cần chuyển.
 Ví dụ:

echo implode(", ", $arr);
 kết quả: “Mon, Tue, Wed, Thu, Fri, Sat, Sun”

3. Bài tập:
a. Nhập vào một MSSV (05.020.321). Cho biết SV đó thuộc khóa nào và số tứ tự là mấy?
b. Nhập vào một địa chỉ. Kiểm tra đó có phải là địa chỉ email không?
(1 email: không có khoảng trắng & phải có @)
c. Ta có một file chứa thông tin cá nhân của một người. Thông tin được lưu dưới hình thức như sau: hoten?gioitinh?sothich1&sothich2&sothich3?email. Giả sử sau khi truy xuất file, ta có dữ liệu dạng chuỗi như sau: "pham duy phuong?nu?Xem phim&Du lich&Nghe nhac&Doc sach?vana@yahoo.com";
Yêu cầu: Tách chuỗi này và cho hiển thị như hình dưới đây:



4. Bài giải:
a. Nhập vào một MSSV (05.020.321). Cho biết SV đó thuộc khóa nào và số tứ tự là mấy?

Trang nhap.php (trang giao diện):


<html>
<head>
<title>Bai tap MSSV</title>
</head>
<body>
<form name="form" action="xuly.php" method="get">
Nhap Ho ten: <input type="text" name="hoten" size="30" maxlength="256"><br>
Nhap MSSV: <input type="text" name="mssv" size="30" maxlength="256"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>

Trang xuly.php:
Cách 1:
<html>
<head>
<title>Bai tap MSSV</title>
</head>
<body>
<?php
echo strrpos($mssv,".");
echo "<br>";
$a = 0 + substr($mssv, 0, strpos($mssv,"."));
echo "Ban $hoten hoc khoa " . $a;
echo "Ban $hoten co so thu tu la " . substr($mssv, strrpos($mssv,".")+1, strlen($mssv));
?>
</body>
</html>

Cách 2:
<html>
<head>
<title>Bai tap MSSV</title>
</head>
<body>
<?php
$a = explode(".", $mssv);
echo "Ban $hoten hoc khoa " . $a[0];
echo "<br>";
echo "Ban $hoten co so thu tu la " . $a[2];
?>
</body>
</html>

b. Nhập vào một địa chỉ. Kiểm tra đó có phải là địa chỉ email không?
(1 email: không có khoảng trắng & phải có @)

Trang kiemtra_email.php (trang giao diện):

<html>
<head>
</head>
<body>
<form name="frame1" action="xuly1.php" method="post">
Nhap email: <input type="text" name="email" size="25" maxlength="256"><br>
<input type="submit" value="Submit">

</form>
</body>
</html>

Trang xuly1.php:
<html>
<head>
</head>
<body>
<?php
if (strpos($email, " ") === FALSE && strpos($email, "@") > -1){
echo "$email la dia chi email";
}
else echo "$email khong phai la dia chi email";
?>
</body>
</html>

c. Ta có một file chứa thông tin cá nhân của một người. Thông tin được lưu dưới hình thức như sau: hoten?gioitinh?sothich1&sothich2&sothich3?email. Giả sử sau khi truy xuất file, ta có dữ liệu dạng chuỗi như sau: "pham duy phuong?nu?Xem phim&Du lich&Nghe nhac&Doc sach?vana@yahoo.com";
Yêu cầu: Tách chuỗi này và cho hiển thị như hình dưới đây:




<html>
<head>
<title>BT xu ly chuoi file</title>
</head>
<body>
<?php
$s = "pham duy phuong?nu?Xem phim&Du lich&Nghe nhac&Doc sach?vana@yahoo.com";

$arr_info = explode("?", $s);
$ten = strtoupper(substr($arr_info[0], strrpos($arr_info[0], " ")+1,
strlen($arr_info[0])));
echo "THONG TIN VE BAN " . "<b>" . $ten . "</b><br>";
echo "Ho ten:" . ucwords($arr_info[0]) . "<br>";
echo "Gioi tinh: " . ucfirst($arr_info[1]) . "<br>";
echo "So thich:" . str_replace("&", ", ", $arr_info[2]) . "<br>";
echo "Email: " . $arr_info[3];
?>
</body>
</html>










PHẦN 3:
XÂY DỰNG HÀM NGƯỜI DÙNG
VÀ SỬ DỤNG LẠI MÃ PHP


Các vấn đề chính sẽ được đề cập:
- Cách sử dụng lại mã chương trình.
• Lợi ích khi sử dụng lại mã chương trình
• Sử dụng khai báo REQUIRE VÀ INCLUDE
• Ứng dụng
- HÀM.
• Định nghĩa hàm
• Gọi hàm
• Tham trị
• Tham biến
• Tham số có giá trị mặc định
• Giá trị trả lại của hàm
• Hàm biến
• Bài tập



1. Cách sử dụng lại mã chương trình:
1.1. Lợi ích khi sử dụng lại mã chương trình:
- Tăng tính mềm dẻo, tính nhất quán trong ứng dụng.
- Giảm thời gian xây dựng và thiết kế ứng dụng.
- Giảm chi phí phát triển phần mềm.
1.2. Sử dụng khai báo REQUIRE VÀ INCLUDE
require() và include(): dùng để chèn tập tin có mã lệnh là PHP hoặc HTML vào chương trình.

Cú pháp:

require(tên tập tin);
include(tên tập tin);

Chú ý:
Đối với các phiên bản trước phiên bản PHP 4.0.2, thì hàm require() có điểm khác với hàm include() là :
Khi gọi bằng require() thì tất cả các lệnh đều được biên dịch.
Khi gọi bằng include() thì chỉ biên dịch các lệnh thỏa điều kiện.

Ví dụ 1:





Trang doicoso.php



Giả sử $giatri = 30 => CS2: 11110 ; => CS16: 1e

Trang doicoso.php:

if ($CSO == "hex")
include("coso16.php");
else
include("coso2.php");

Trang coso2.php:

<?php
$s = "" . base_convert($giatri, 10, 2);
echo "<p align=\"center\"><b> Ket qua: " . strtoupper($s) ."</b></p>";
?>
Trang coso16.php:

<?php
$s = "" . base_convert($giatri, 10, 2);
echo "<p align=\"center\"><b> Ket qua: " . strtoupper($s) ."</b></p>";
?>



Đối với các phiên bản trước phiên bản PHP 4.0.2:
 Dùng hàm require():
- Cả 2 file coso16.php và coso2.php đều được biện dịch.
 Dùng hàm include():
- Hàm include() chỉ gọi file coso16.php khi $CSO == “hex”.
- Hàm include() chỉ gọi file coso2.php khi $CSO != “hex”.

1.3. Ứng dụng:
- Dùng để thiết kế giao diện.
- Gọi các kết nối CSDL.
Vd:



<table>
<tr>
<td> <?require("banner.php");?></td>
</tr>
<tr>
<td> <?require("menu.php");?> </td>
<td> <?require("trangchinh.php");?> </td>
<td> <?require("quangcao.php");?> </td>
</tr>
<tr>
<td> <?require("lienhe.php");?> </td>
</tr>
</table>


2. HÀM:
Dùng giống với C++. Ngoại trừ không cần phải khai báo kiểu cho tham số của hàm:
2.1. Định nghĩa hàm:

Function tenham(thamso)

Ví dụ:
function tinh_tong($a, $b){
$tong = $a + $b;
echo "Ket qua: " . $tong;
}
function tinhtong($a, $b){
$tong = $a + $b;
return $tong;
}

2.2. Gọi hàm:
Ví dụ: tinh_tong(5, 6);
$t = tinhtong(5, 6);
2.3. Tham trị :
Ví dụ:
function takes_array($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}

$input = array(5,6,8);
takes_array($input);

=> Kết quả hiển thị: 5 + 6 = 11
2.4. Tham biến:
Ví dụ:
function congchuoi(&$string) {
$string .= " World!";
}

$string = "Hello ";
echo $string; => Kết quả hiển thị: Hello

congchuoi(&$string);
echo $string; => Kết quả hiển thị: Hello World!

2.5. Tham số có giá trị mặc định:
Ví dụ:
function makecoffee ($type = "coffee") {
return "Making a cup of $type.\n";
}

echo makecoffee(); => Kết quả hiển thị: Making a cup of coffee.
echo makecoffee("tea"); => Kết quả hiển thị: Making a cup of tea.

Chú ý : khi sử dụng hàm có đối số có giá trị mặc định, các biến này sẽ phải nằm về phía phải nhát trong danh sách đối số.
Ví dụ: Sai
function buy_thing($color = "red", $thing) {
return "buying a $color $thing.\n";
}
Đúng
function buy_thing($thing, $color = "red") {
return "buying a $color $thing.\n";
}

2.6. Giá trị trả lại của hàm:
Có thể là bất kỳ giá trị nào, Tuy vây, không thể trả lại nhiều giá trị riêng lẻ nhưng có thể trả lại một mảng các giá trị.
Ví dụ:
function small_numbers() {
return array (0, 1, 2);
}
Để trả lại một tham trỏ, bạn cần có dấu & ở cả khai báo của hàm cũng như ở giá trị trả lại.
function &returns_reference() {
return &$someref;
}

$newref = &returns_reference();
2.7. Hàm biến:
PHP cho phép sử dụng hàm giá trị Nghĩa là khi một biến được goi có kèm theo dấu ngoặc đơn , PHP sẽ tìm hàm có cùng tên với giá trị biến đó và thực hiện.

Ví dụ:
function foo() {
echo "In foo() <br>\n";
}

function bar( $arg = '' ) {
echo "In bar(); argument was '$arg'.<br>\n";
}

$func = 'foo';
$func(); => Kết quả hiển thị: In foo()

$func = 'bar';
$func( 'test' ); => Kết quả hiển thị: In bar(); argument was 'test'.

3. Bài tập:
1) Viết chương trình giải phương trình bậc nhất bằng hàm.
2) Viết chương trình giải phương trình bậc hai bằng hàm.
3) Viết hàm xuất ra form.

Bài 1: Viết chương trình giải phương trình bậc nhất.
function gptb1($a , $b){
if ($a == 0){
if ($b == 0)
return "Phuong trinh vo so nghiem";
else
return "Phuong trinh vo nghiem";
}
else $x = -$b/$a;
return $x;
}

echo gptb1(3 , 6);

Bài 2: Viết chương trình giải phương trình bậc hai.
function gptb2($a , $b, $c){
$delta = pow($b,2) - 4*$a*$c;
if ($delta < 0)
return "Phuong trinh vo nghiem";
else
if ($delta == 0)
return "Phuong trinh co nghiem kep x1 = x2 = " . -$b/(2*$a);
else {
echo "Phuong trinh co 2 nghiem phan biet:";
return "x1 = " . (-$b + sqrt($delta))/(2*$a) . " va x2 = " . (-$b - sqrt($delta))/(2*$a);
}
}

echo gptb2(1 , 6, 5);

Bài 3: Viết hàm xuất ra form.
function xuat($a){
$tam = "Ket qua: ";
$tam .= "<input type=\"text\" name=\"kq\" value = \"" . $a . "\">";
echo $tam;
}

xuat(654);


PHẦN 4:
SESSION & COOKIE


Các vấn đề chính sẽ được đề cập:
- Mục đích sử dụng Session và Cookie.
- Cookie.
- Session.

1. Mục đích sử dụng Session và Cookie:
Dùng để lưu trữ phiên làm việc của một người dùng nào đó từ trang này đến trang khác trong cùng một Web Site.
2. Cookie:
Cookie là một mẩu tin nhỏ được lưu trữ trên client dùng để lưu lại các biến.
Để có thế phát sinh một cookie ta phải sử dụng hàm setcookie().
a. Gán cookie từ PHP:
Cú pháp:


bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

Ví dụ:

setcookie("username", $name)

setcookie("my_cookie","my_id",
time()+(60*60*24*30),"/",".mydomain.com", 0)

Lệnh trên sẽ phát sinh một cookie với các chức năng sau:
• Chứa một biến tên là my_cookie
• Giá trị của mycookie my_id
• Cookie tồn tại trong vòng 30 ngày kể từ ngày nó phát sinh (time()+(30*24*60*60) ngày giờ hiện tại + 30 ngày được quy ra giây).
• Cookie có tác dụng đến tất cả các trang trong domain. Bạn có thể hạn chế lại bằng cách chỉ ra đường dẫn đến một số trang nào đó trong domain.
• Nó sẽ hiện diện trong tất cả các website có địa chỉ
• Không có xác lập đặc biệt nào về bảo mật.

Một khi cookie được xác lập, các biến phát sinh từ cookie có tác dụng giống như biến phát sinh từ form. Chúng sẽ hiện diện với chức năng là biến global.

b. Đọc giá trị từ Cookie:

Ta có thể đọc giá trị từ Cookie bằng cách truy xuất thông qua mảng.
Ví dụ: $HTTP_COOKIE_VARS["my_cookie"]

c. Ví dụ:


Trang Page1.php:


<?php
if (isset($B1) && $B1 == "Gan Cookie"){
setcookie("username",$ten);
}
?>

<html>
<head>
<title>Cookie</title>
</head>
<body>
<form method="POST" action="<?=$PHP_SELF?>">
<p>Nhap ten cua ban:&nbsp;&nbsp;&nbsp;
<input type="text" name="ten" value = "<?php echo $ten ?>" size="20">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Gan Cookie" name="B1"></p>
<a href="page2.php">Next Page</a>
</form>
</body>
</html>
Khi nhấn nút <Gan Cookie>, trình duyệt sẽ tiến hành gán cookie (lưu biến vừa nhập). Sau đó khi truy cập đến trang kế tiếp (page2.php), ta có thể gọi cookie khai báo trong page1.php dưới dạng biến $username, biến này sẽ có giá trị là tên vừa nhập vào ở trang page1.php.



Trang Page2.php:




<?php
$name = $HTTP_COOKIE_VARS["username"];
echo "Xin chao ban $name!";
?>


3. Session:
Session chỉ đơn giản là một cách thức để duy trì và truyền biến trong khi chuyển tiếp giữa các trang web.
Session được nhận biết bởi một session ID duy nhất, và thường thì ID này được gởi đến user thông qua một cookie. PHP sau đó tạo một tập tin trên server để theo dõi sự thay đổi của biến. Tập tin này có tên giống như tên của SessionID.
Một khi session được tạo, ta có thể đăng ký bất kỳ số lượng biến. Các giá trị của những biến này được lưu giữ trong tập tin trên server. Cũng như sự tồn tại của cookie, các biến trong session sẽ hiện diện trên bất kỳ trang nào được truy cập đến trong phạm vi một domain. Việc xác lập này rất thuận tiện hơn là chuyển tiếp các biến từ trang này sang trang khác thông qua các phần tử ẩn trong form hay cookie.
Các bước làm việc trên session: (gồm 4 bước)
- Khởi động session.
- Đăng ký biến session.
- Sử dụng biến session.
- Hủy bỏ session.

a. Khởi động Session:

session_start();

b. Đăng ký biến session:

session_register(tenbien);

Vd:
$value = 69;
Session_register(“value”);

c. Sử dụng biến session:

Vd: Đọc giá trị biến session
echo “Bien value moi dang ky co gia tri la: $value”;

d. Hủy Session:
Hủy một biến session:

session_unregister(tenbien);

Hủy tất cả biến session đang có hiệu lực:

session_unset();

Kết thúc tất cả các biến session.

session_destroy();


e. Ví dụ:
Trang page1.php: Đăng ký các biến session.





<?php
if (isset($B1) && $B1 == "Register"){
session_start();
session_register("name");
session_register("email","fullname");
}

?>

<html>
<head>
<title>Cookie</title>
</head>
<body>
<form method="POST" action="<?=$PHP_SELF?>">
<p>UserID:&nbsp;&nbsp;&nbsp;
<input type="text" name="name" value = "<?php echo $name?>"></p>

<p>Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" name="email" value = "<?php echo $email ?>"></p>

<p>Fullname:&nbsp;
<input type="text" name="fullname" value = "<?php echo $fullname ?>"></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp

<input type="submit" value="Register" name="B1"></p>

<a href="page2.php">Next Page</a>

</form>
</body>
</html>

Khi nhấn nút Register, trình duyệt sẽ tiến hành đăng ký 3 biến session: $name, $email, $fullname.
Sau đó, nếu ta chọn Next Page từ trang page1.php, thì trang page2.php sẽ được gọi, và ta sẽ nhận được kết quả như hình dưới đây:





<?php
session_start();
?>
<html>
<head>
<title>Continue to get sessions</title>
</head>
<body>
<?php
echo "Userid: $name.<br>";
echo "Email: $email.<br>";
echo "Fullname: $fullname.<br>";
?>

<a href="page1.php">[Previous Page]</a>
<a href="page3.php">[Next Page]</a>

</body>

Khi chọn Next Page từ trang page2.php, thì trang page3.php sẽ được gọi, trong trang page3.php có khai báo phát biểu xóa biến session có tên $name.



Khi chọn lại trang Previous Page (trang page2.php), kết quả sẽ hiển thị như sau:


Report this post
Top
 Profile E-mail  
Reply with quote  
 Post subject: Re: DE CUONG VE LAP TRINH PHP PHAN1
PostPosted: Tue Mar 31, 2009 10:38 pm 
Offline

Joined: Thu Feb 12, 2009 5:29 pm
Posts: 9
PHẦN 5:
PHP và CSDL


Các vấn đề chính sẽ được đề cập:
- Tìm hiểu CSDL MySQL.
- SQL.
- Thiết lập kết nối cơ sở dữ liệu.

1. Tìm hiểu CSDL MySQL:
Cũng giống như các hệ cơ sở dữ liệu khác, khi làm việc với cơ sở dữ liệu MySQL, ta cũng phải đăng ký kết nối, tạo CSDL, quản lý người dùng, phân quyền sử dụng, thiết kế Table và xử lý dữ liệu.
Hệ CSDL MySQL quản lý nhiều CSDL, trong mỗi CSDL có nhiều Table, trong mỗi table sẽ có nhiều cột (trường) và trong mỗi Table cần phải định nghĩa một khóa chính.
Trước khi thiết kế Table, cần phải xem xét các kiểu dữ liệu có phù hợp với từng trường và với dữ liệu thực hay không.
Những ưu điểm khi sử dụng MySQL:
- MySQL là một hệ quản trị cơ sở dữ được sử dụng cho hầu hết các ứng dụng Web có quy mô vừa và nhỏ.
- MySQL được sử dụng hoàn toàn miễn phí.
- Nhanh, mạnh và được cải tiến liên tục.
 MySQL cũng được xem là một hệ quản trị cơ sở dữ liệu chuyên nghiệp.
2. SQL:
Phát biểu SQL bao gồm các loại như sau:
 SELECT (Truy vấn mẩu tin)
 INSERT (Thêm mẩu tin)
 UPDATE (Cập nhật dữ liệu)
 DELETE (Xóa mẩu tin)

Vd: Ta có một Table như sau:
SINHVIEN(MASV, HOTEN, GIOITINH, NGSINH, NOISINH, MA_LOP)

Viết câu truy vấn:
a. Liệt kê các sinh viên có nơi sinh ở Vĩnh Long
Select * from SINHVIEN
Where NOISINH = “Vinh long”
b. Thêm một sinh viên
Insert into SINHVIEN
values ('K1', 'Le Hung', 'nam', '23/10/1985', 'binh duong', 1)
c. Cập nhật sinh viên
Update SINHVIEN
Set HOTEN = ‘Le Huong’, GIOITINH = ‘Nu’
Where MASV = ‘K1’
d. Xóa sinh viên có mã số là K1
Delete from SINHVIEN where MASV = ‘K1’
3. Thiết lập kết nối cơ sở dữ liệu:
Các bước thao tác trên CSDL: (4 bước)
 Bước 1: Kết nối CSDL
 Bước 2: Chọn CSDL
 Bước 3: Gởi SQL
 Bước 4: Nhận kết quả


a. Kết nối cơ sở dữ liệu:
Cú pháp:
int mysql_connect ( “servername”, “username”, “password”)

Giá trị trả về: TRUE: kết nối thành công.
FALSE: kết nối không thành công.

Vd: $lk = mysql_connect ("localhost", "root", "");
if (!$lk){
echo “ket noi khong thanh cong.”;
exit;
}

Ta có thể dùng cách dưới đây để thông báo lỗi:
$lk = mysql_connect ("localhost", "root", "")
or die ("ket noi khong thanh cong.");

b. Chọn cơ sở dữ liệu:
Cú pháp:
int mysql_select_db ( “tenCSDL”)
int mysql_select_db ( “tenCSDL”, bienketnoi)

Vd:
mysql_select_db(“QLHH”);
mysql_select_db(“QLHH”, $lk);

c. Thực hiện truy vấn:
Cú pháp:
mysql_query ( “cautruyvan”, bienkenoi)

kết quả -> biến lưu kết quả.
Vd: Ta có: HANGHOA(MAHH, TENHANG, SLUONG)

MAHH TENHANG SLUONG
A Tivi 3
B Điện thoại 5
C Tủ lạnh 100
$sql = “select * from HANGHOA”;
$kq = mysql_query ( $sql, $lk);

d. Truy xuất kết quả:
Hàm lấy số record của kết quả:
mysql_num_rows($kq)

Truy xuất: Đọc từng dòng -> dùng vòng lặp
mysql_fetch_array($kq)
mysql_fetch_row($kq) (hàm chỉ trả về mảng số)

While ($dong = mysql_fetch_array($kq)){
//truy xuat gia tri theo tung cot
$dong[“MAHH”] -> A
$dong[“TENHANG”] -> Tivi
$dong[“SLUONG”] -> 3
}
Ví dụ:



<html>
<title>Fetch Data</title>
<body>
<table border=1>
<tr>
<td><b>MAHH</b></td>
<td><b>TENHANG</b></td>
<td><b>SLUONG</b></td>
</tr>
<?php
$lk = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("QLHH", $lk);

$sql="select * from hanghoa";
$kq = mysql_query($sql,$lk);

if (mysql_num_rows($kq)!=0){
while($row = mysql_fetch_array($kq)){
$mahang = $row["MAHH"];
$tenhang = $row["TENHANG"];
$sl = $row["SLUONG"];

echo "<tr><td>$mahang</td>";
echo "<td>$tenhang</td>";
echo "<td>$sl</td></tr>";
}
}
?>

Đóng kết nối:
mysql_close(bienketnoi)

4. Bài tập :
Bài tập 1: Giả sử ta có 1 bảng Table như sau:
USER(USERNAME, NAME, PASSWORD, ADDRESS)
-> Viết trang đăng nhập.
Yêu cầu: Phải có kiểm tra sự tồn tại của username và password trong CSDL.



Giao diện:

<html>
<head>
<title>Dang nhap</title>
</head>
<body>

<form method="POST" action="xuly.php">
<p>username:&nbsp; <input type="text" name="username" size="20"></p>
<p>password:&nbsp; <input type="password" name="passw" size="20"></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="&#272;&#259;ng nh&#7853;p" name="dangnhap"></p>
</form>
</body>
</html>

Xuly.php

<?php
require("ketnoi.php");

$sql="select * from NSD where username = '$username' and password = '$passw' ";
$kq = mysql_query($sql,$lk);

if (mysql_num_rows($kq)==0){
echo "Ban chua dang ky!";
}
else {
echo "Dang nhap thanh cong!";
session_start();
session_register("username");
}
?>

ketnoi.php

<?php
$lk = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("QLHH", $lk);
?>


Bài tập 2: Viết trang đăng ký thành viên.



Giao diện:

<html>

<head>
<title>Dang ky</title>
</head>

<body>

<form method="POST" action="xuly.php">
<p>Username:&nbsp; <input type="text" name="username" size="20"></p>
<p>Password:&nbsp; <input type="password" name="password" size="20"></p>
<p>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
<input type="text" name="name" size="20"></p>
<p>Address:&nbsp;&nbsp;&nbsp;
<input type="text" name="address" size="20"></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="&#272;&#259;ng ký" name="dangky"></p>
</form>
<p>&nbsp;</p>

</body>

</html>


Xuly.php

<?php

if (empty($username) || empty($password) || empty($name) || empty($address)) {
echo "chua nhap du thong tin";
}
else{
require("ketnoi.php");

$sql="select * from NSD where username = '$username'";
$kq = mysql_query($sql,$lk);

if (mysql_num_rows($kq)!=0){
echo "username da ton tai.";
}
else {
$sql="insert into NSD values ('$username', '$name', password('$password'),'$address')";
$result = mysql_query($sql,$lk);
mysql_close($lk);
echo "Dang ky thanh cong!";
}
}
?>


ketnoi.php

<?php
$lk = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("QLHH", $lk);
?>





Bài tập 3: Viết trang tìm các mặt hàng theo giá đã định



Kết quả hiển thị như sau:


Giao diện:

<html>
<head>
<title>Tim</title>
</head>

<body>

<form method="POST" action="xuly.php">
<p><b><font size="5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Tìm theo giá hàng hóa
</font></b></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Giá:&nbsp;
<input type="text" name="txttim" size="20">&nbsp;
(vd: &quot;= 20000&quot; ho&#7863;c &quot;&gt;=2000&quot;)
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Tìm" name="tim">
</p>
</form>

<p>&nbsp;</p>

</body>
</html>

Xuly.php

<?php

if (empty($txttim)) {
echo "chua nhap du thong tin";
}
else{
require("ketnoi.php");

$sql="select tenhang, gia from hanghoa where gia $txttim";
$kq = mysql_query($sql,$lk);


if (mysql_num_rows($kq)>0){
echo "<table border=1><tr><td><b>Tên hàng</b></td>";
echo "<td><b>Giá</b></td></tr>";
while($dong = mysql_fetch_array($kq)){
$t= $dong["tenhang"];
$g= $dong["gia"];
echo "<tr><td>$t</td>";
echo "<td>$g</td></tr>";
}
}
else echo "khong tim thay";
mysql_close($lk);
}
?>








PHẦN 6:
THAO TÁC TRÊN HỆ THỐNG TẬP TIN


Các vấn đề chính sẽ được đề cập:
- Đóng & Mở file bằng PHP.
- Truy xuất nội dung tập tin.
- Giới thiệu một số hàm thông dụng trên file.
- Bài tập minh họa.


1. Đóng & Mở file bằng PHP:
1.4. Mở file bằng PHP:
Cú pháp:

$ft = fopen(filename, filemode);

Chế độ mở file:

Chế độ Diễn giải
r
r+
w
w+
a
a+ Mở dưới dạng Read-Only.
Mở dưới dạng Read-Write.
Mở dưới dạng Write-Only.
Mở dưới dạng Write-Read.
Mở để nối thêm vào cuối tập tin.
Một một tập tin để đọc, ghi. Nếu tập tin đã có trên đĩa thì nối thêm. Nếu chưa có thì tạo tập tin mới

Ví dụ:
<?php
$ft = fopen("c:\data\info.txt", "r");

//mo file thong qua HTTP
$ft = fopen("http://www.example.com/info.txt", "a");

?>

<?php
$username = “info”;
$f = "D:\PHP\files\\$username.txt";
@ $ft = fopen($f,"w");
?>


1.5. Đóng tập tin:
Khi không còn làm việc với tập tin, ta nhất thiết phải đóng tập tin lại để bảo đảm an toàn dữ liệu.
Cú pháp:

bool fclose ( int ft)

Ví dụ:

<?php
$ft = fopen("c:\data\info.txt", "r");
fclose($ft);
?>



2. Truy xuất nội dung tập tin.
2.1. Ghi dữ liệu vào tập tin:
a. Hàm fwrite():

Cú pháp:

int fwrite ( int ft, string str [, int length])

Hàm fwrite() ghi chuỗi str vào ft cho đến hết nội dung của chuỗi hay ghi đúng bằng số lượng byte đã định nghĩa trong tham số length.

Ví dụ:

<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";

//file duoc phep ghi
if (is_writable($filename)) {

//khong mo duoc file->thong bao & thoat
if (!$ft = fopen($filename, 'a')){
echo "Cannot open file ($filename)";
exit;
}

//ghi bi loi -> thong bao & thoat
if (fwrite($ft, $somecontent) === FALSE) {)){
echo "Cannot write to file ($filename)";
exit;
}

// ghi thanh cong
echo "Success, wrote ($somecontent) to file ($filename)";

fclose($ft);

} else {
echo "file $filename nay khong cho phep ghi";
}
?>

b. Hàm fputs():

Cú pháp:

int fputs ( int ft, string str [, int length])

Giống như hàm fwrite() dùng để ghi một chuỗi ký tự vào tập tin đang mở.

Ví dụ:

<?php
$username = “info”;
$f = "D:\PHP\files\\$username.txt";
@ $ft = fopen($f,"w");
$values = array(“Man”, “Tao”, “Buoi”, “Oi”);
for ($i = 0; $i < count($values); $i++){
echo $values[$i];
fputs($ft, $values[$i]);
}
fclose($ft);

?>


2.2. Đọc dữ liệu từ tập tin:
a. Hàm fgets():

Cú pháp:

string fgets ( int ft, int length)

Hàm fgets() trả về một dòng dữ liệu từ tập tin chỉ ra bởi con trỏ tập tin.

Ví dụ:

<?php

$ft = fopen("D:\PHP\Files\info.txt", “r”);
while ($ft && !feof($ft)){
print fgets($ft, 2084);
}
fclose($ft);

?>

b. Hàm readfile():

Cú pháp:

int readfile (string filename)

Hàm readfile () dùng để đọc toàn bộ nội dung của file.

Ví dụ:
<?php
$f = "D:\PHP\files\info.txt";
@ $data = readfile($f);
if(!$data){
echo "file khong doc duoc <br>";
exit;
}
else{
echo $data;
}
echo "<br>Doc file thanh cong!";

?>

2.3. Xóa tập tin:
Hàm unlink():

Cú pháp:

bool unlink(string filename)
Ví dụ:

<?php
$f="D:\PHP\files\info.txt";
if (file_exists($f)){
$ok=unlink($f);
if ($ok)
echo "Da xoa!";
else
echo “File khong the xoa duoc”;
}
else
echo “file khong ton tai”;
?>
3. Một số hàm thông dụng thao tác trên file:
a. Hàm file_exists(): kiểm tra file có tồn tại hay không.
Cú pháp:

bool file_exists (string filename)
Ví dụ:

<?php
$filename = “D:\PHP\files\info.txt”;

if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?>
b. Hàm filesize(): kiểm tra dung lượng của file.
Cú pháp:

int filesize (string filename)
Ví dụ:

<?php
$filename = “D:\PHP\files\info.txt”;
echo $filename . ': ' . filesize($filename) . ' bytes';
?>

c. Hàm feof(): kiểm tra xem con trỏ tập tin đã đến cuối tập tin chưa.
Cú pháp:

bool feof ( int ft)

d. Hàm file(): đọc từng dòng của tập tin và mỗi dòng sẽ thành một phần tử của mảng.
Cú pháp:

array file ( string filename)

Ví dụ:
<?php
$f = “D:\PHP\files\info.txt”;
if (file_exists($f)){
$values = file($f);

echo "noi dung dong thu 1: $values[0] ";
echo "noi dung dong thu 2: $values[1] ";
}
?>

e. Hàm fseek(): cho phép điều khiển con trỏ tập tin di chuyển đến vị trí mong muốn.
Cú pháp:

int fseek ( int ft, long offset [, mốc])


- Long offset: là số nguyên long chỉ ra số byte kể từ vị trí trước đó đến vị trí bắt đầu đọc.
- Mốc: chỉ ra điểm xuất phát để tính offset, có 3 mốc được chọn như sau:

Mốc Giá trị Offset xuất phát
SEEK_SET
SEEK_CUR
SEEK_END 0
1
2 Ở đầu tập tin
Ở vị trí hiện hành của con trỏ tập tin
Ở cuối tập tin

Ví dụ:
<?php
$ft = fopen(“D:\PHP\files\info.txt”);
$data = fgets($ft, 4096);
fseek($ft, 0);
?>

f. Hàm rewind(): quay lại từ đầu tập tin.
Cú pháp:

bool rewind (int ft)

g. Hàm realpath(): trả về đường dẫn của tập tin.
Cú pháp:

string realpath (string filename)
Ví dụ:

<?php
$real_path = realpath("xoathanhvien.php");
echo "duong dan chua file: " .$real_path;
?>
4. Bài tập minh họa:
Viết chương trình Quản lý thành viên, gồm các chức năng sau:
 Đăng ký một thành viên:
Yêu cầu: kiểm tra thông tin trước khi cho đăng ký:
- Điền đầy đủ mọi thông tin.
- Kiểm tra ngày nhập (ngày nhập > 1900 và < ngày hiện hành)
- Kiểm tra email.
 Tìm thông tin thành viên.
 Xóa thành viên.
 Đổi mật khẩu.
 Tìm mật khẩu.
Yêu cầu: dữ liệu lưu dưới dạng file.
Mô tả chương trình bằng giao diện:

Trang chủ:




Trang Đăng ký thành viên:




Khi nhập thông tin sai:



Trang Đăng ký thành viên:






Trang Đổi mật khẩu:




Trang Tìm mật khẩu:






Trang Xóa mật khẩu:




CODE:

 Phần code xử lý đăng ký thành viên:

<?php
function luufile(&$username, &$password, &$Hoten, &$gioitinh, &$ngay, &$thang, &$nam, &$diachi, &$email){
$nbiet = "";
if (empty($username) || empty($password) || empty($Hoten) || empty($nam) || empty($diachi) || empty($email)) {
$nbiet = "Ban chua nhap du thong tin";
}

$today = getdate();
if (intval($nam) < 1900 || intval($nam) > $today[year]){
$nbiet = $nbiet . "Ban nhap nam sai";
}
if(!eregi("^[A-Za-z0-9\_-]+@[A-Za-z0-9\_-]+.[A-Za-z0-9\_-]+.*",$email)) {
$nbiet = $nbiet . "Email khong dung";
}
if ($nbiet == ""){
$f="D:\PHP\files\\$username.txt";
if (!file_exists($f)){
@ $ft=fopen($f,"w");

$f = $username . "\n" . $password . "\n" . $Hoten . "\n" . $gioitinh . "\n" . $ngay . "/" . $thang . "/" . $nam;

$f = $f . "\n" . $diachi . "\n" . $email;
fwrite($ft,$f);

$nbiet = "Dang ky thanh cong";
fclose($ft);
}
else {
$nbiet = "Ten dang ky bi trung";
}
}
return $nbiet;
}
?>

 Phần code đổi mật khẩu:

<?php

if (isset($doimatkhau) && $doimatkhau == "&#272;&#7893;i m&#7853;t kh&#7849;u"){
if (empty($username) || empty($mkcu) || empty($mkmoi)) {
echo "Nhap khong du thanh tin”;
}
else{
$f="D:\PHP\files\\$username.txt";
if (file_exists($f)){
$values = file($f);
$mkcu = $mkcu . "\n";
if (strcmp($values[1], $mkcu) != 0) {
echo "Nhap mat khau sai";
}
else {
@ $ft=fopen($f,"w");
$values[1] = $mkmoi."\n";
for ($i = 0; $i < count($values); $i++){
fputs($ft, $values[$i]);
}
echo “Doi mat khau thanh cong”;
fclose($ft);
}
}
else
echo "Ten dang ky sai";
}
}
?>

 Phần code Tìm thông tin:

<?php
if (isset($tim) && $tim == "Tìm"){
if (empty($username)) {
echo "Ban chua nhap ten";
}
else{
$f="D:\PHP\files\\$username.txt";
if (file_exists($f)){
$values = file($f);
echo "<hr size = \"1\">";
echo "<table align=\"center\" border=\"1\" width=\"48%\" id=\"table1\" style=\"border-width: 0px\">";
echo "<tr>";
echo "<td valign=\"top\" style=\"border-style: none\">";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > <b>Tên &#273;&#259;ng ký: " . $values[0]."</b></p>";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > M&#7853;t kh&#7849;u: " . md5($values[1])."</p>";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > H&#7885; tên: " . $values[2]."</p>";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > Gi&#7899;i tính: " . $values[3]."</p>";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > Ngày sinh: " . $values[4]."</p>";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > &#272;&#7883;a ch&#7881;: " . $values[5]."</p>";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > Email: " . $values[6]."</p>";
echo "</td>";
echo "</tr>";
echo "</table>";
}
else echo "file $username khong ton tai";
}
}

?>

 Phần code Tìm mật khẩu:

<?php
if (isset($timmk) && $timmk == "Tìm"){
if (empty($username)) {
echo "Ban chua nhap ten dang ky";
}
else{
$f="D:\PHP\files\\$username.txt";
if (file_exists($f)){
@ $ft=fopen($f,"r");
fseek($ft, strlen($username)+1);
$mk = fgets($ft,1000);
echo "<hr size = \"1\">";
echo "<table align=\"center\" border=\"1\" width=\"48%\" id=\"table1\" style=\"border-width: 0px\">";
echo "<tr>";
echo "<td valign=\"top\" style=\"border-style: none\">";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > <b>Tên &#273;&#259;ng ký: " . $username."</b></p>";
echo "<p style=\"margin-top: 0; margin-bottom: 0\" > M&#7853;t kh&#7849;u: " . $mk ."</p>";
echo "</td>";
echo "</tr>";
echo "</table>";
fclose($ft);
}
}
}

?>

 Phần code Xóa thành viên:
<?php
if (isset($xoa) && $xoa == "Xóa"){
if (empty($username)) {
echo "Ban chua nhap ten dang ky";
}
else{
$f="D:\PHP\files\\$username.txt";
if (file_exists($f)){
$ok=unlink($f);
if ($ok)
echo "<p align=\"center\"><b><font size=\"4\">&#272;ã xóa !</font></b></p>";
else
echo "<p align=\"center\"><b><font size=\"4\">Không th&#7875; xóa !</font></b></p>";
}
else
echo "<p align=\"center\"><b><font size=\"4\">file $username khong ton tai</font></b></p>";
}

}

?>
5. BÀI TẬP:
Ta có trong trang web Đăng ký thành viên dưới đây, tính đến thời điểm tháng 3 năm 2007 thì mục quê quán đã chứa được 64 tỉnh thành (dữ liệu ở mục quê quán được lưu ở dạng file và được truy xuất bởi hàm require())



File chứa danh sách các tỉnh:



Giả sử vào ngày 15 tháng 7 năm 2007, huyện Bình Minh và tỉnh Vĩnh Long được tách ra làm 2 khu vực tỉnh Bình Minh và thành phố Vĩnh Long.
Yêu cầu: Viết trang web để người quản trị cập nhật lại các tỉnh – thành đã được thay đổi sau ngày 15 tháng 7 năm 2007.
Chú thích:
- Xóa tỉnh Vĩnh Long.
- Thêm tỉnh Bình Minh
- Thêm Thành phố Vĩnh Long

6. BÀI GIẢI
Trang Web chính: capnhatquequan.php



Trang Xem quê quán:




Trang Thêm quê quán:



Sau khi nhấn nút thêm:



Kết quả hiển thị ở phần xem quê quán: (các tỉnh đã được sắp xếp theo thứ tự)




Trang Xóa quê quán:





Sau khi nhấn nút xóa:



Kết quả hiển thị ở phần xem quê quán: (các tỉnh đã được sắp xếp theo thứ tự)



CODE:
Trang chính: (capnhatquequan.php)

<html>
<head>
<title>Cap nhat que quan</title>
</head>
<body>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center"><b>C&#7852;P NH&#7852;T QUÊ QUÁN</b></p>
<p align="center">
[<a href = "xemtinh.php">Xem quê quán</a>]&nbsp;
[<a href = "themtinh.php">Thêm m&#7899;i quê quán</a>]&nbsp;
[<a href = "xoatinh.php">Xóa quê quán</a>]&nbsp;
</body>
</html>

Trang xem quê quán: (xemtinh.php)

<html>
<head>
<title>Xem que quan</title>
</head>
<body>
<p><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XEM QUÊ QUÁN</b></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<select size="5" name="tinh">
<?php require("dstinh.txt");?>
</select>&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;
[<a href = "capnhatquequan.php">Tr&#7903; v&#7873; trang C&#7853;p nh&#7853;t quê quán</a>]&nbsp;
</body>
</html>

Trang thêm quê quán: (themtinh.php)

<html>
<head>
<title>Them que quan</title>
</head>
<body>
<form method="POST" action="xulythem.php">
<p><b>Thêm t&#7881;nh thành:</b></p>
<p>Nh&#7853;p t&#7881;nh c&#7847;n thêm:&nbsp;&nbsp;
<input type="text" name="ten" size="20"></p>
<p><input type="submit" value="Thêm" name="them"></p>
</form>
</body>
</html>

Trang xử lý nút thêm: (xulythem.php)

<?php
$f="D:\PHP\files\dstinh.txt";
$values = file($f);
$str = implode(",",$values);

if (strpos($str, $ten) > 0) {
echo "&#272;ã t&#7891;n t&#7841;i!";
}
else {
array_push($values,"<option>$ten</option>\n");
sort($values);
@ $ft=fopen($f,"w");
for ($i = 0; $i < count($values); $i++){
fputs($ft, $values[$i]);
}
fclose($ft);
echo "&#272;ã thêm!";
}

echo "<br><a href = \"capnhatquequan.php\"> Tr&#7903; v&#7873; trang C&#7853;p nh&#7853;t quê quán </a>";
?>

Trang xóa quê quán: (xoatinh.php)

<html>
<head>
<title>Xoa que quan</title>
</head>
<body>
<form method="POST" action="xulyxoa.php">
<p><b>&nbsp;&nbsp; XÓA T&#7880;NH:</b></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ch&#7885;n quê quán:&nbsp;
<select size="1" name="tinh">
<option selected>---select---</option>
<?php require("dstinh.txt");?>
</select>&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Xóa" name="xoa"></p>
</form>
</body>
</html>


Trang xử lý nút xóa: (xulyxoa.php)
<?php
$f="D:\PHP\files\dstinh.txt";
$values = file($f);
$key = array_search("<option>$tinh</option>\n", $values);
array_splice($values, $key, 1);
@ $ft=fopen($f,"w");
for ($i = 0; $i < count($values); $i++){
fputs($ft, $values[$i]);
}
fclose($ft);
echo "&#272;ã xóa!";
echo "<br><a href = \"capnhatquequan.php\"> Tr&#7903; v&#7873; trang C&#7853;p nh&#7853;t quê quán </a>";
?>


PHẦN 7:
MỘT SỐ CHỨC NĂNG CỦA PHP


Các vấn đề chính sẽ được đề cập:
- Chức năng gởi mail.
- Chức năng upload file.
- Chức năng phân trang.

1. Chức năng gởi mail trong PHP:
a. Giới thiệu:
Chức năng mail có thể được sử dụng trong một số trường hợp sau::
- Khi người dùng đăng ký thành công vào trang web, trang web sẽ tự động gởi mail cho người dùng thông báo thông tin về username và password để đăng nhập vào trang web.
- Khi người dùng quên mật khẩu, trang web sẽ có chức năng gởi mail cho người dùng để cho biết password mà người dùng đã quên.
- Khi có thông tin mới, hệ thống web sẽ gởi mail để thông báo cho các thành viên.
Điều kiện để sử dụng chức năng mail:
- Để gởi mail đến một địa chỉ mail nào đó, trước tiên ta phải cài đặt một Mail Server.
- Mail Server không bắt buộc phải có địa chỉ mail tồn tại mới gởi đến được, nó sẳn sàng gởi mail chuyển tiếp đến một mail server khác.
- Để sử dụng PHP gởi một nội dung mail đến một địa chỉ mail hợp lệ nào đó, địa chỉ mail (from) này phải là một địa chỉ mail hợp lệ tồn tại trong Mail Server. Ví dụ: ta sử dụng Mail Server với tên miền là mekong.uni , khi gởi mail đến một địa chỉ mail, thì ta phải sử dụng địa chỉ mail (from) là một địa chỉ mail hợp lệ của mekong.uni ví dụ là admin@mekong.uni
- Ta có thể sử dụng một trong số các phần mềm Mail Server sau: MS Exchange Server, Mdaemon, Apache,…
Chức năng của Mail Server:
- Tiếp nhận mail do trình khách (mail client) gởi lên (SMTP Server).
- Lưu trữ mail trong thư mục nhất định cho phép người dùng sử dụng giao thức POP3 đọc mail (POP3 server).
- Chuyển mail đến máy chủ khác hoặc phân tán địa chỉ mail gửi thẳng đến đích.

b. Hàm gởi Mail:
mail($nguoinhan, $tieude, $ndmail, $header)

Trong đó:
$nguoinhan: thông tin của người nhận mail
$tieude: tiêu đề của mail (subject)
$ndmail: nội dung của mail
$header: là một chuỗi các thông số để định dạng mail
$header gồm các thông số sau:
+ Nơi gởi:
X_Sender: < @ >
+ Loại mail:
X_Mailer: PHP
+ Độ ưu tiên:
X_Priority: n (số 1, 2, 3…)
+ Nếu gởi mail bị lỗi hay địa chỉ mail nhận không hợp lệ mail, mail thông báo lỗi sẽ trả về địa chỉ này:
Return_Path: < @ >
+ Kiểu dữ liệu mail, định dạng nội dung:
Content-Type: text/html
charset=iso-8859-1
Ví dụ: Hãy xác định các đối số của hàm gởi mail với thông tin được cho dưới đây:
Người nhận: abc@yahoo.com
Tiêu đề: Thông báo
Nội dung: Giá Monitor: 234$
Người gởi: xyz@yahoo.com

$nguoinhan = “abc@yahoo.com”;
$tieude = "thong bao";
$noidung = " Giá Monitor: 234$";

$headers = "From: Cua hang May tinh ABC <xyz@yahoo.com>\n
X-Sender: <xyz@yahoo.com>\n
X-Mailer: PHP\n
X-Priority: 1\n
Return-Path: <xyz@yahoo.com>\n
Content-Type: text/html;
charset=iso-8859-1\n”;


c. Bài tập:
Bài 1: Viết chương trình cho phép người dùng đăng ký mới, nếu thông tin đăng ký hợp lệ chương trình sẽ cho đăng ký và gởi mail đến người dùng để thông báo.


Trang ketnoi.php
<?php
$lk = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("QLHH", $lk);
?>
Trang giao diện:
<html>
<head>
<title></title>
</head>
<body>
<form name="f1" action="xuly.php" method="get">
DANG KY <BR>
Username: <input type="text" name="username" size="20" maxlength="25"><br>
Password: <input type="password" name="password" size="20" maxlength="25"><br>
email: <input type="text" name="email" size="20" maxlength="25"><br>
<input type="submit" value="Dang ky">

</form>
</body>
</html>

Trang xử lý:
<?php
require("ketnoi.php");
$sql="select * from NSD where username = '$username'";
$kq = mysql_query($sql,$lk);


if (mysql_num_rows($kq)!=0){
echo "da ton tai";
require("bai1.php");
}
else {
$sql="insert into NSD(username,password,email)
values ('$username','$password','$email')";
mysql_query($sql,$lk);
mysql_close($lk);
echo "da them";
$tieude = "thong bao";
$nd = "Chao mung ban $username den trang web cua chung toi";


$headers = "From: Cua hang THANH NHAN ";
$headers .= "<thanhnhan@mekong.uni>\n";
$headers .= "X-Sender: <"<thanhnhan@mekong.uni>\n";
$headers .= "X-Mailer: PHP\n";

$headers .= "X-Priority: 1\n";

$headers .= "Return-Path: <"<thanhnhan@mekong.uni>\n";

$headers .= "Content-Type: text/html; ";
$headers .= "charset=iso-8859-1\n";

mail($email, $tieude, $nd, $headers);
}
?>

Bài 2: Viết chương trình gởi thông báo đến tất cả các thành viên trong trang web.

Trang ketnoi.php
<?php
$lk = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("QLHH", $lk);
?>

Trang giao diện:
<html>
<head>
<title></title>
</head>
<body>

<form name="form1" action="goithongbao.php" method="get">
<b>GUI THONG BAO </b><BR><BR>
TIEU DE: <input type="text" name="tieude" size="20" maxlength="20"><BR><BR>
OI DUNG:<blockquote><textarea name = "noidung" rows = "7"> </textarea></blockquote>
<input type="submit" value="Goi">

</form>
</body>
</html>

Trang gởi thông báo:
<html>
<head>
<title></title>
</head>
<body>
<?php


require("ketnoi.php");


$headers = "From: InterShop System ";
$headers .= "<tuyen@mekong.uni>\n";

$headers .= "X-Sender: <tuyen@mekong.uni>\n";
$headers .= "X-Mailer: PHP\n";
$headers .= "X-Priority: 1\n";
$headers .= "Return-Path: <tuyen@mekong.uni>\n";
$headers .= "Content-Type: text/html; ";
$headers .= "charset=iso-8859-1\n";

$sql="select email from NSD";
$kq = mysql_query($sql,$lk);

if (mysql_num_rows($kq)>0){
while($dong = mysql_fetch_array($kq)){
$mail= $dong["email"];
mail($mail, $tieude, $noidung, $headers);
}
echo "da goi";
}
else echo "khong tim thay";
mysql_close($lk);
?>
</body>
</html>


2. Chức năng upload file từ client lên server:
Điều kiện để upload một tập tin từ client lên server:
Trên Server:
o Phải có thư mục để chứa file.
o Thư mục phải được cấp quyền ghi file từ client (được chia sẻ).
o Thư mục lưu tập tin phải thuộc trong ứng dụng web.
Cách chia sẻ 1 thư mục:
Click phải vào thư mục cần chia sẻ -> chọn Sharing and Sercurity -> Ở tab Sharing -> chọn mục NetWork sharing và security -> check 2 mục: Sharing this folder on the network và Allow network users to change my files -> Chọn OK.

Trong bất kỳ ứng dụng web nào, để cho phép người dùng có thể upload tập tin từ client lên server, trong thẻ form cần khai báo thêm một thuộc tính đó là enctype="multipart/form-data".

Hàm upload một tập tin từ client lên server:
Copy($userfile, $uploadfile)
Trong đó:
$userfile : Tập tin trên máy con (đường dẫn)
$uploadfile : Đường dẫn server
Truy xuất một số thông tin về tập tin được upload lên server:
- Truy xuất tên file upload: $userfile_name
- Truy xuất kích thước file: $userfile_size
- Truy xuất kiểu file: $userfile_type
Có nhiều kiểu file:
+ application/msaccess -> file access
+ application/msword -> file word
+ application/pdf -> file pdf
+ application/vnd.ms-powerpoint -> file powerpoint
+ text/plain -> ht.txt -> file ở dạng text (.txt)

+ image/pjpeg -> file hình (.jpg)
+ image/gif -> file hình (.gif)
+ image/bmp -> file hình (.bmp)

Bài tập:
Bài 1: Viết chương trình cho phép người dùng upload một file hình lên server.









TRANG NHAP.PHP
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>UPLOAD FILE</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data" action="xuly.php">
<b>UPLOAD PICTURE</b><br>
Chon hinh: <input type="file" name="userfile" size="20"><br>
<input type="submit" name="B1">
</form>
</body>
</html>

TRANG XULY.PHP

<?php
/*
echo "userfile = $userfile<br>";
echo "userfile_name = $userfile_name<br>";
echo "userfile_size = $userfile_size<br>";
echo "userfile_type = $userfile_type<br>";
*/

if ($userfile=="none")
{
echo "khong co file nào de load";
exit;
}

if ($userfile_size==0)
{
echo "kich thuoc cua file la rong";
exit;
}

if ($userfile_type != "image/gif" && $userfile_type != "image/pjpeg" && $userfile_type != "image/bmp")
{
echo "khong phai la file image/gif,jpeg,bmp";
exit;
}

$upfile = "D:\\PHP\\upload file\\bai1\\uploadtemp\\$userfile_name";

if (!copy($userfile, $upfile))
{
echo "khong the chuyen file nay vao thu muc";
exit;
}

echo "Da upload thanh cong<br><br>";

echo "<hr size=1><br>Click de xem hinh <a href='uploadtemp/$userfile_name'><b>$userfile_name";

?>

Bài 2: Viết chương trình cho phép người dùng soạn một bài viết để đưa lên trang web (có chức năng upload tập tin tham khảo).







TRANG NHAP.PHP:

<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>MUC THAO LUAN</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data" action="xuly.php">
MUC THAO LUAN</p>
<p>CHU DE:&nbsp; <input type="text" name="chude" size="20"></p>
<p>NOI DUNG:</p>
<p><textarea rows="6" name="noidung" cols="36"></textarea></p>
<p>TAI LIEU: <input type="file" name="userfile" size="20"></p>
<p>&nbsp;</p>
<p><input type="submit" name="B1"></p>
</form>
</body>
</html>

TRANG XULY.PHP

<?php

echo "XEM LAI NOI DUNG BAN VUA NHAP<br>";
echo "Chu de: $chude <br>";
echo "Noi dung: $noidung <br>";
echo "Tai lieu tham khao: ";


$upfile = "D:\\PHP\\upload file\\uploadtemp\\$userfile_name";

if (!copy($userfile, $upfile)) {
echo "Problem: Could not move file into directory";
exit;
}

move_uploaded_file($userfile, $upfile);
echo "<a href='uploadtemp/$userfile_name'><b> $userfile_name </b></a>" ;

?>

LƯU CSDL
TRANG KETNOI.PHP

<?php
$lk = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("diendan", $lk);
?>

TRANG XULY.PHP

<?php
require("ketnoi.php");

$sql="insert into thaoluan(chude,noidung,tailieu) values('$chude','$noidung','uploadtemp/$userfile_name')";

mysql_query($sql,$lk);
echo "da them";

$upfile = "uploadtemp/$userfile_name";
copy($userfile, $upfile);

?>

Bài 3: ViẾt thêm yêu cầu: hiển thị các phần chủ đề được thảo luận.



TRANG HIENTHI.PHP

<html>
<head>
<title></title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="author" content="overdays.net">
<meta name="generator" content="AceHTML 5 Pro">
</head>
<body>
<?php
require("ketnoi.php");

$sql="select chude, noidung, tailieu from thaoluan";
$kq = mysql_query($sql,$lk);

if (mysql_num_rows($kq) > 0){
while ($dong = mysql_fetch_array($kq)){
echo "<hr>";
echo "<b>CHU DE: </b>" . $dong["chude"] . "<br>";
echo "<b>NOI DUNG: </b>" . $dong["noidung"] . "<br>";
$tl = explode("/",$dong["tailieu"]);

echo "<b>TAI LIEU: </b><a href='" . $dong["tailieu"] . "'> $tl[1] </a><br>";
}
}
?>
</body>
</html>


3. Chức năng upload file từ client lên server:
Bài ví dụ về chức năng phân trang:




<html><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<head>
<title>Bai thi du</title>

<script language=javascript>
function GotoPage(iPage) {
document.form1.curPg.value=iPage
document.form1.submit()
}
</script>

</head>
<body>

<form action="phantrang.php" method=post name=form1>
<table width="500" border="0" cellspacing="0" cellpadding="0" >
<tr>
<td valign="top" >

<?php
$lk = mysql_connect ("localhost", "root", "")
or die ("Could not connect to MySQL Database");
mysql_select_db("QLHH", $lk);

$totalRows = 0;
$paging="";

$sql="select * from nsd";
$kq = mysql_query($sql,$lk);


$totalRows = mysql_num_rows($kq);

$maxRows = 3;
$maxPages = 10;

if($totalRows%$maxRows==0)
$totalPages = (int)($totalRows/$maxRows);
else
$totalPages = (int)($totalRows/$maxRows+1);

$curPage =1;

if($HTTP_POST_VARS{"curPg"}=="")
$curPage =1;
else
$curPage = $HTTP_POST_VARS{"curPg"};

$curRow = ($curPage-1)*$maxRows+1;
$paging ="Current Page :&nbsp;<font color=red>".$curPage."</font>&nbsp;&nbsp;&nbsp;"."Total pages :&nbsp;<FONT color=red>".$totalPages."</FONT><br> ";
if($totalRows>$maxRows) {
$start=1;
$end=1;
$paging1 ="";
for($i=1;$i<=$totalPages;$i++)
{ if(($i>((int)(($curPage-1)/$maxPages))* $maxPages) && ($i<=((int)(($curPage-1)/$maxPages+1))* $maxPages))
{
if($start==1) $start=$i;
if($i==$curPage)
$paging1 .= $i."&nbsp;&nbsp;";
else
$paging1 .= "<a href='javascript:GotoPage(".$i.")'>".$i."</a>&nbsp;&nbsp;";
$end=$i;
}
}
$paging.= "Go to page :&nbsp;&nbsp;" ;
if($curPage>$maxPages)
$paging .="<a href='javascript:GotoPage(".($start-1).")'>Previous</a>&nbsp;&nbsp;";
$paging.=$paging1;
if(((($curPage-1)/$maxPages+1)*$maxPages) < $totalPages)
$paging .= "<a href='javascript:GotoPage(".($end+1).")'>Next</a>&nbsp;&nbsp;";
}


?>

<table border="0" width="100%">
<tr><td align=left><b>DANH SACH THANH VIEN</b></td></tr>
<tr><td align=left><font face="Arial" color="#0066cc">Tong so thanh vien: <b>
<font color="#ff0000"> <?php echo $totalRows?> </font></b></font></td>
<td align=right> <?php echo $paging?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="middle" valign="top" >

<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr valign="center">
<td width="5%" height="14" align="middle"><font face="Arial" color="#ff6600">STT</font></td>
<td width="29%" height="14" align="middle"><font face="Arial" color="#ff6600">USERNAME</font></td>
<td width="29%" align="middle" height="14"><font face="Arial" color="#ff6600">PASSWORD</font></td>
<td width="10%" align="middle" height="14"><font face="Arial" color="#ff6600">EMAIL</font></td>
</tr>
<tr valign="top">
<td colspan="7" align="middle">
<hr noshade size="1">
</td>
</tr>

<?php

if($totalRows>0){
$i=0;
$low=$curRow;
$curRow=1;

while (($row = mysql_fetch_array ($kq))&&($curRow<=$totalRows) && ($curRow <= $curPage*$maxRows))
{
$curRow++;

if($curRow>$low){
$username = $row["USERNAME"];
$password = $row["PASSWORD"];
$email = $row["EMAIL"];

$i+=1;
?>

<tr valign="top">
<td width="5%" height="14" align="middle"><font face="Arial" color="#0066cc">
<?php echo $curRow-1;?>
</font> </td>

<td width="29%" height="14" align="middle"><font face="Arial" color="#0066cc">
<?php echo $username;?>
</font></td>
<td width="29%" align="middle" height="14"><font face="Arial" color="#0066cc">
<?php echo $password?>
</font></td>
<td width="10%" align="middle" height="14"><font face="Arial" color="#0066cc">
<?php echo $email?>
</font></td>
</tr>
<?php
}}
}else{
?>


<tr valign="top">
<td width="5%" align="middle">&nbsp;</td>
<td colspan=6 valign=center align="center"><b><font face="Arial" color="#FF0000">Oop!
Chua co thanh vien nao ca</font></b></td>
</tr>
<?php
}
?>
</table>
</td>
</tr>
<tr>

<td width="96%" colspan=6><font face="Arial" color="#FF6600">
<input type=hidden name="curPg" >
</font></td>
</tr>

</table>

</td>
</tr>

</table>
</form>
</body>
</html>


Report this post
Top
 Profile E-mail  
Reply with quote  
 Post subject: Re: DE CUONG VE LAP TRINH PHP
PostPosted: Mon Jun 01, 2009 12:26 pm 
Offline

Joined: Mon Feb 16, 2009 9:47 am
Posts: 12
---------
liem co the tach ra tung muc de xem hon do
than!!


Report this post
Top
 Profile E-mail  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 


Who is online

Users browsing this forum: No registered users and 0 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron

Create Forum · php-BB© · Internationalization Project · Report abuse · Terms Of Use/Privacy Policy
© Forums-Free.com 2009