Lập trình web với PHP - p34

8 266 0
Lập trình web với PHP - p34

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

Thông tin tài liệu

 8 :  Nếu bạn chấp nhận cho người dùng được nhập vào trang web, bạn phải chuẩn bị gặp những lỗi. Có thể chỉ là lỗi đơn giản hoặc những lỗi ảnh hưởng trang web của bạn. Lỗi chung nhất thường gặp là lỗi thuật in cơ bản, lỗi định dạng (ví dụ cho một năm trong một ngày). Những lỗi như người dùng không cung cấp địa chỉ email, hoặc người dùng xâm nhập vào cơ sở dữ liệu của bạn. Tập lệnh cần có phần điều khiển nhập, bằng việc xác định dữ liệu xấu và trả về trang thông báo lỗi cho người dùng. Bao gồm: Làm cho có hiệu lực những giá trị chuỗi đơn giản Làm cho có hiệu lực những giá trị nguyên Làm cho có hiệu lực văn bản nhập vào đã định dạng  2. Lưu file với tên movie.php và đưa đoạn mã mới vào thư mục làm việc của bạn 3. Mở tập lệnh commit.php và chỉnh sửa như những dòng hướng dẫn sau: <?php // COMMIT ADD AND EDITS  $link = mysql_connect(“localhost”, “root”, “”) or die(“Could not connect: “ . mysql_error()); mysql_select_db(„moviesite‟, $link) or die ( mysql_error()); switch ($_GET[„action‟]) { case “edit”: switch ($_GET[„type‟]) { case “people”: $sql = “UPDATE people SET “ . “people_fullname = „“ . $_POST[„people_fullname‟] . “„ WHERE people_id = „“ . $_GET[„id‟] . “„“; break; case “movie”: $movie_name = trim($_POST[„movie_name‟]); if (empty($movie_name)) { $error .= “Please+enter+a+movie+name%21%0D%0A”; } if (empty($_POST[„movie_type‟])) { $error .= “Please+select+a+movie+type%21%0D%0A”; } if (empty($_POST[„movie_year‟])) { $error .= “Please+select+a+movie+year%21%0D%0A”; } if (empty($error)) { $sql = “UPDATE movie SET “ . “movie_name = „“ . $_POST[„movie_name‟] . “„,” . “movie_year = „“ . $_POST[„movie_year‟] . “„,” . “movie_type = „“ . $_POST[„movie_type‟] . “„,” . “movie_leadactor = „“ . $_POST[„movie_leadactor‟] . “„,” . “movie_director = „“ . $_POST[„movie_director‟] . “„ “ . “WHERE movie_id = „“.$_GET[„id‟].”‟”; } else { header(“location:movie.php?action=edit&error =” . $error . “&id=” . $_GET[„id‟] ); } break; } break; case “add”: switch ($_GET[„type‟]) { case “people”: $sql = “INSERT INTO people (people_fullname) “ . “VALUES („“ . $_POST[„people_fullname‟] . “„)”; break; case “movie”: $movie_name = trim($_POST[„movie_name‟]); if (empty($movie_name)) { $error .= “Please+enter+a+movie+name%21%0D%0A”; } if (empty($_POST[„movie_type‟])) { $error .= “Please+select+a+movie+type%21%0D%0A”; } if (empty($_POST[„movie_year‟])) { $error .= “Please+select+a+movie+year%21%0D%0A”; } if (empty($error)) { $sql = “INSERT INTO movie (movie_name,movie_year,” . “movie_type,movie_leadactor,movie_director) “ . “VALUES („“ . $_POST[„movie_name‟] . “„,” . “„“ . $_POST[„movie_year‟] . “„,” . “„“ . $_POST[„movie_type‟] . “„,” . “„“ . $_POST[„movie_leadactor‟] . “„,” . “„“ . $_POST[„movie_director‟] . “„)”; } else { header(“location:movie.php?action=add&error= ” . $error); } break; } break; } if (isset($sql) && !empty($sql)) { echo “<!--”.$sql.”-->”; $result = mysql_query($sql) or die(“Invalid query: “ . mysql_error()); ?> <p align=”center” style=”color:#FF0000”> Done. <a href=”index.php”>Index</a> </p> <?php } ?> 4. Lưu với tên commit.php và đưa lên server 5. Mở trình soạn thảo và vào trang 191Hhttp://localhost/chapter8/index.php và thêm vào một movie không tên, như   6. Nhập vào một movie mới mà không đặt năm và kiểu movie( Như )  7. Soạn thảo một movie từ chỉ số và xóa form tên, submit( Như )  8. Chú ý thông báo lỗi trong việc điền form( Như )  Cách thức hoạt động Khi form chuyển thông tin đến tập lệnh, dữ liệu sẽ được xác nhận. Bạn sử dụng một phương pháp đơn giản: hàm empty() trả về true nếu chuỗi rỗng, trả về false nếu không. Để đảm bảo rằng người dùng không trình bày form với một không gian đơn giản trong vùng tên movie, bạn dùng trim() trong nội dung của vùng để loại trừ bất kỳ dẫn đến nào hoặc kéo dài chuỗi( một vài người làm cho công việc trở nên khó khăn). Cùng lúc đó mà có lỗi được phát hiện thì bạn đưa ra thông báo lỗi, dùng biến $error( tập hợp tất cả các lỗi) if (empty($movie_name)) { $error = “Please+enter+a+movie+name%21%0D%0A”; } Một lần nữa bạn thấy rằng có một lỗi xuất hiện, bạn gởi đến người dùng một thông báo lỗi. Thông báo lỗi được URL mã hóa để đảm bảo nó được chuyển đến tập lệnh move.php mà không bị hỏng if (empty($error)) { . } else { header(“location:movie.php?action=add&error=” . $error); } Một lần gởi đến form, hệ thống cần hiển thị giải mã thông báo lỗi <? if (!empty($_GET[„error‟])) { echo “<div align=\”center\” “ . “style=\”color:#FFFFFF;background-color:#FF0000;” . “font-weight:bold\”>” . nl2br(urldecode($_GET[„error‟])) . “</div><br />”; } ?> Điều này trình bày thông báo quá màu mè mà người dùng sẽ không nhớ. Chính sự cập nhật được thực hiện vào lúc cuối của đoạn mã, cùng với tất cả các điều khiển và đưa ra thông báo bạn cần if (isset($sql) && !empty($sql)) { echo “<!--”.$sql.”-->”; $result = mysql_query($sql) or die(“Invalid query: “ . mysql_error()); ?> <p align=”center” style=”color:#FF0000”> Done. <a href=”index.php”>Index</a> </p> <?php } Nếu biến $sql không được thiết lập trước ( mà có thể xảy ra nếu được gọi ra khỏi nội dung), đoạn mã sẽ không thực thi và không làm gì cả. ( Chú ý nó sẽ là bài tập tốt cho bạn để lập một phản hồi cho biến cố này, như một thông điệp hoặc một đăng ký lỗi trong cở sở dữ liệu) . header(“location:movie .php? action=add&error= ” . $error); } break; } break; } if (isset($sql) && !empty($sql)) { echo “< !-- ”.$sql. -- >”; $result. Done. <a href=”index .php >Index</a> </p> < ?php } ?> 4. Lưu với tên commit .php và đưa lên server 5. Mở trình soạn thảo và vào trang

Ngày đăng: 20/10/2013, 09:15

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan