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

Bài giảng PHP (Hypertext Preprocessing) - Chương 3: Làm việc với Form

18 55 1

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 372,15 KB

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

Nội dung

Bài giảng PHP (Hypertext Preprocessing) - Chương 3: Làm việc với Form trình bày các nội dung chính sau: Các biến Super Global, biến $_SERVER, lấy thông tin từ form, kết hợp mã HTML và PHP trong 1 trang, sử dụng Hidden field để lưu trạng thái, form Upload file,... Mời các bạn cùng tham khảo để nắm nội dung chi tiết.

Trang 1

III Làm việc với Form

III.1 Các biến SuperGlobal

III.2 Biến $_SERVER

III.3 Lấy thông tin từ form

III.4 Kết hợp mã HTML và PHP trong 1 trang III.5 Sử dụng Hidden field để lưu trạng thái III.6 Redirect

III.7 Form Upload file

Trang 2

III.1 Các biến SuperGlobal

 Các biến global là các biến được khai báo ở mức ngoài cùng của PHP được

sử dụng chung cho mọi module

 Các biến SuperGlobal là các biến (mảng) được PHP tạo ra để lưu các thông tin cần thiết

$_COOKIE Contains keys and values set as browser cookies

$_ENV Contains keys and values set by the script's shell context

$_FILES Contains information about uploaded files

$_GET Contains keys and values submitted to the script using the HTTP get

method

$_POST Contains keys and values submitted to the script using the HTTP post

method

$_REQUEST A combined array containing values from the $_GET , $_POST , and

$_COOKIES superglobal arrays

$_SERVER Variables made available by the server

$GLOBALS Contains all global variables associated with the current script

Trang 3

III.2 Biến $_SERVER

$_SERVER['PHP_SELF'] The current script

Suitable for use in links and form element action arguments

/phpbook/source/listing10.1.ph

p

$_SERVER['HTTP_USER_AGEN

version of the client Mozilla/4.6 –(X11; I;Linux2.2

6-15apmac ppc)

$_SERVER['REMOTE_ADDR'] The IP address of

the client

158.152.55.35

$_SERVER['REQUEST_METHO

was GET or POST

POST

$_SERVER['QUERY_STRING'] For GET requests,

the encoded data sent appended to the URL

name=matt&address=unknown

$_SERVER['REQUEST_URL'] The full address of

the request, including query string

/phpbook/source/listing10.1.ph p? name=matt

$_SERVER['HTTP_REFERER'] The address of the

page from which the request was made

http://p24.corrosive

Trang 4

III.2 Biến $_SERVER (2)

Đoạn lệnh sau liệt kê tất cả các thông tin của biến

$_SERVER

<?php

}

?>

Trang 5

III.3 Lấy thông tin từ form

III.3.1 Lấy thông tin từ form bằng các mảng superglobal

III.3.2 Import thông tin của form vào các biến global

III.3.3 Lấy thông tin của form bằng mảng do người dùng định nghĩa

Trang 6

III.3.1 Lấy thông tin từ form bằng các

mảng superglobal

Dữ liệu từ form được submit lên server thông qua các phương thức: get, post

Để lấy được thông tin từ form, bạn có thể sử dụng các mảng

superglobal tương ứng $_POST[tên_control], $_GET[tên_control],

$_REQUEST[tên_control] (REQUEST có thể sử dụng cho cả POST và GET)

<?php

var_dump ($_POST["Submit"]);

var_dump ($_GET["Submit"]);

var_dump ($_REQUEST["Submit"]);

if ($_POST["Submit"]=="Submit") {

echo $_POST["UserInput1"];

}

?>

<FORM method="POST" name="myForm">

<INPUT TYPE="TEXT" name="UserInput1">

<INPUT TYPE="SUBMIT" value="Submit" name="Submit"></FORM>

Trang 7

III.3.2 Import thông tin của form vào

các biến global

Để thuận tiện cho người lập trình, PHP cung cấp hàm

import_request_variables() cho phép đưa các tham số GET,

POST và COOKIE vào thành các biến global

Cú pháp

bool import_request_variables (string types, [string

prefix])

types : Chỉ ra loại thông tin nào được import, có thể kết hợp giữa các giá trị g, p, c (get, post, cookie)

prefix : tiền tố cho tên biến

<?php

import_request_variables ("gpc", "ui_");

echo "$ui_Submit\n";

if ($ui_Submit=="Submit") {

echo "$ui_UserInput1\n";

}

?>

<FORM method="POST" name="myForm"><INPUT TYPE="TEXT" name="UserInput1">

<INPUT TYPE="SUBMIT" value="Submit" name="Submit"></FORM>

Trang 8

III.3.3 Lấy thông tin của form bằng mảng do người dùng định nghĩa

 Những cách lấy thông tin từ form đã nêu trên cho phép chúng ta làm việc tốt với các control đơn (có 1 giá trị)

 Đối với các control có nhiều giá trị như select hay checkbox, nảy sinh vấn đề là làm sao

nhận được tất cả các control được lựa chọn

 Để giải quyết vấn đề này, đặt tên các control với kết thúc là dấu ngoặc vuông [], khi đó dữ liệu truyền từ form đến server sẽ là mảng

Trang 9

III.3.3 Lấy thông tin của form bằng mảng do người dùng định nghĩa

<?php

var_dump ( $_REQUEST [ "product" ]);

?>

<FORM method="POST" name="AForm">

<INPUT TYPE="CHECKBOX" name="product[]“

value="Sony Ericson">Sony Ericson<br>

<INPUT TYPE="CHECKBOX" name="product[]“

value="Motorola">Motorola<br>

<INPUT TYPE="CHECKBOX" name="product[]“

value="Samsung">Samsung<br>

<INPUT TYPE="CHECKBOX" name="product[]“

value="Hang tau">Hang tau<br>

<INPUT TYPE="SUBMIT" name="Submit“

value="Submit"><br>

</FORM>

Trang 10

III.4 Kết hợp mã HTML và PHP trong 1 trang

 Đối với các trang PHP nhỏ, bạn thường muốn kết hợp form gửi thông tin với các đoạn script PHP xử lý thông tin Điều này có thể dễ dàng thực hiện bằng cách để các kết hợp các cấu trúc điều khiển rẽ nhánh với các đoạn mã

HTML

 Để đặt đoạn mã HTML vào trong cấu trúc rẽ nhánh, sử dụng kết hợp các khối lệnh PHP

(xem ví dụ)

Trang 11

III.4 Kết hợp mã HTML và PHP trong 1 trang (2)

<?php

if ( is_array ($_REQUEST["product"]) &&

! array_search ("Motorola", $_REQUEST["product"] )) {

?>

<h1>Cam on ban da su dung san pham Motorola</h1>

<?php

} else {

?>

<FORM method="POST" name="AForm">

<INPUT TYPE="CHECKBOX" name="product[]“

value="Sony Ericson">Sony Ericson<br>

<INPUT TYPE="CHECKBOX" name="product[]“

value="Motorola">Motorola<br>

<INPUT TYPE="CHECKBOX" name="product[]“

value="Samsung">Samsung<br>

<INPUT TYPE="CHECKBOX" name="product[]“

value="Hang tau">Hang tau<br>

<INPUT TYPE="SUBMIT" name="Submit" value="Submit"><br>

</FORM>

<?php

}

?>

Trang 12

III.5 Sử dụng Hidden field để lưu trạng thái

Để lưu thông tin chung của các form giữa các lần submit (ví dụ: Số lần submit), cách đơn giản nhất là sử dụng trường ẩn (hidden field) trong form

<?php

$g_nSubmit = $_REQUEST [ "nSubmit" ];

if ( $g_nSubmit ==null) $g_nSubmit = 0 ; else

$g_nSubmit ++;

if ( $g_nSubmit > 3 ) echo "Submit gi ma nhieu

the?<br>" ;

echo " $g_nSubmit <br>" ;

?>

<FORM method="POST" name="AForm">

<input type="hidden" name="nSubmit" value="<? echo

$g_nSubmit ; ?>">

<INPUT TYPE="SUBMIT" name="Submit"

value="Submit"><br>

</FORM>

Trang 13

III.6 Redirect

 Rõ ràng là việc hardcode HTML cùng với sử dụng nhiều khối PHP xen lẫn HTML là không tốt Một cách đơn giản và hiệu quả hơn là

sử dụng Redirect để dẫn hướng người dùng đến các trang thích hợp (ví dụ: Trang đăng nhập nếu người dùng chưa đăng nhập, trang chúc mừng nếu người dùng đăng nhập thành công)

 Để làm được việc này, trước hết ta tìm hiểu cơ chế làm việc giữa PHP script và client Đầu tiên, để giao tiếp với client, PHP tự động gửi các thông tin header cho client Tuy nhiên, bạn vẫn có thể tự gửi header

 Để dẫn hướng client đến trang khác, bạn chỉ cần đơn giản đổi

header bằng hàm header() Để sử dụng hàm header() bạn phải đảm bảo rằng cho có dữ liệu nào đã được gửi cho client (sử dụng hàm header_sent() để kiểm tra)

Trang 14

III.6 Redirect (2)

<?php

$g_nSubmit = $_REQUEST [ "nSubmit" ];

if ( $g_nSubmit ==null) $g_nSubmit = 0 ; else

$g_nSubmit ++;

if ( $g_nSubmit > 5 ) {

header ( "Location:ham.html" );

exit;

} else

if ( $g_nSubmit > 3 ) echo "Submit gi ma nhieu the?<br>" ; echo " $g_nSubmit <br>" ;

?>

<FORM method="POST" name="AForm">

<input type="hidden" name="nSubmit"

value="<? = $g_nSubmit ; ?>">

<input type=“submit" name="Submit"

value="Submit"><br>

</FORM>

Trang 15

III.7 Form Upload file

Người dùng có thể gửi các file (upload) lên server là một chức năng không thể thiếu đối với các ứng dụng Web-based

Để form có thể upload file, bạn phải xác định form enctype:

ENCTYPE="multipart/form-data”

Với PHP, bạn có thể xác định kích thước lớn nhất của file upload bằng cách đặt thêm 1 hidden field có tên MAX_FILE_SIZE trước control file

<form enctype="multipart/form-data"

action="<? = $_SERVER [ 'PHP_SELF' ] ?>" method="post">

<p>

<input type="hidden" name="MAX_FILE_SIZE"

value="102400"/>

<input type="file" name="fupload" /><br/>

<input type="submit" value="upload!" />

</p>

</form>

Trang 16

III.7 Form Upload file (2)

$ FILES['fupload']['name'] Name of uploaded file test.gif

$_FILES['fupload']['tmp_name'] Path to temporary file /tmp/phprDfZvN

$_FILES['fupload']['size'] Size (in bytes) of uploaded

file

6835

$_FILES['fupload']['error'] An error code

corresponding to a PHP constant

UPLOAD_ERR_FOR

M_SIZE

$_FILES['fupload']['type'] MIME type of uploaded file

(where given by client)

image/gif

Trang 17

Constant Name

Valu

e Explanation

UPLOAD_ERR_INI_SIZE 1 File size exceeds php.ini limit set in

upload_max_filesize

UPLOAD_ERR_FORM_SI

ZE 2 File size exceeds limit set in hidden element named MAX_FILE_SIZE UPLOAD_ERR_PARTIAL 3 File only partially uploaded

UPLOAD_ERR_NO_FILE 4 File was not uploaded

Trang 18

III.7 Form Upload file (3)

<?php

if ( $_REQUEST ["submit"]=="upload!") {

echo $_FILES ["fupload"]["error"], "\n";

echo $_FILES ["fupload"]["size"], "\n";

echo $_FILES ["fupload"]["name"], "\n";

echo $_FILES ["fupload"]["tmp_name"], "\n";

if ( $_FILES ["fupload"]["error"]==0) {

$source = $_FILES ["fupload"]["tmp_name"]; $dest = $_FILES ["fupload"]["name"];

move_uploaded_file ( $source , $dest );

}

}

?>

<form enctype="multipart/form-data" method="post">

<p>

<input type="hidden" name="MAX_FILE_SIZE" value="102400" />

<input type="file" name="fupload" /><br/>

<input type="submit" value="upload!" name="submit" />

</p>

</form>

Ngày đăng: 11/01/2020, 19:11

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN