Bản thân tôi

Enabling MySQL with Windows Server 2003/IIS 6.0:
Find your php.ini file first, check phpinfo() to see where php is currently looking for php.ini. (i.e. Using the Windows installer for PHP 5.0.4, the php.ini file was placed in the C:\Windows dir.) I recommend, however, that you don't use the installer - go with full manual install.

Set the following in php.ini:
display_errors = on
error_reporting = E_ALL
This will make sure that you'll see any errors that arise during configuration. MAKE SURE TO CORRECT THESE WHEN YOU ARE DONE PLAYING WITH PHP.INI! Do not leave these settings like this on a production machine.

In php.ini set the following:
extension_dir = "pathtoextensions (ususally [yourpathtophp]\ext)"
extension=php_mysql.dll (make sure this is un-commented if its already in your php.ini)

In IIS, open Web Service Extensions, click "Add a new Web service extension..."
Type-in PHP for the extension name
Under required files:
Add  [yourpathtophp]\php5isapi.dll
Add  [yourpathtophp]\php5ts.dll
Click 'Apply' then click 'OK'

Create web sites like you normally would, but make sure they have executable permissions, not just script access. Under the "Home Directory" tab, click 'Configuration'. Scroll down the list at the top and see if you can find PHP. If you do, make sure the path to the executable for PHP is correct. If you don't find PHP in the list, click 'Add...', then browse to the correct executable, [yourpathtophp]\php5isapi.dll, and click OK. In the extension field, enter 'PHP'. Verbs should already be set to 'All verbs', leave it like that.

Create a test page with this code:

call it test.php, and place this file into the web site you just created. Browse to the page, with firefox preferably ;), and make sure that you have a MySql section with some MySql info in there. If not, then your paths are possibly screwed up, or you're still not editing the correct php.ini (again, look at the location that phpinfo() shows you, and just edit it there if you have to, then move it afterwards and re-config).

Hope this helps!

Sự khác biệt và chức năng của các phần mở rộng MySQL được mô tả trong phần tổng quan của phần này

Không có ghi chú nào do người dùng đóng góp cho trang này

Các trang này sẽ chỉ ra cách xử lý các biểu mẫu PHP có tính đến bảo mật. Xác thực đúng dữ liệu biểu mẫu là rất quan trọng để bảo vệ biểu mẫu của bạn khỏi tin tặc và kẻ gửi thư rác

Biểu mẫu HTML mà chúng ta sẽ làm việc trong các chương này, chứa các trường nhập liệu khác nhau. trường văn bản bắt buộc và tùy chọn, nút radio và nút gửi

Các quy tắc xác thực cho biểu mẫu trên như sau

Quy tắc xác thực trường TênYêu cầu. + Chỉ được chứa các chữ cái và khoảng trắngE-mailBắt buộc. + Phải chứa địa chỉ email hợp lệ (có @ và. ) Trang webTùy chọn. Nếu có, nó phải chứa một URLCommentOptional hợp lệ. Trường nhập nhiều dòng (vùng văn bản)Giới tínhBắt buộc. Phải chọn một

Đầu tiên chúng ta sẽ xem mã HTML đơn giản cho biểu mẫu



Trường văn bản

Các trường tên, email và trang web là các thành phần nhập văn bản và trường nhận xét là một vùng văn bản. Mã HTML trông như thế này

Tên.
E-mail.
Trang mạng.
Nhận xét.


Nút radio

Các trường giới tính là các nút radio và mã HTML trông như thế này

Giới tính
Giống cái
Nam giới
Khác


Phần tử biểu mẫu

Mã HTML của biểu mẫu trông như thế này

">

Khi biểu mẫu được gửi, dữ liệu biểu mẫu được gửi với method="post"

Biến $_SERVER["PHP_SELF"] là gì?

$_SERVER["PHP_SELF"] là một biến siêu toàn cầu trả về tên tệp của

Vì vậy, $_SERVER["PHP_SELF"] sẽ gửi dữ liệu biểu mẫu đã gửi đến chính trang đó, thay vì chuyển sang một trang khác. Bằng cách này, người dùng sẽ nhận được thông báo lỗi trên cùng một trang với biểu mẫu

Hàm htmlspecialchars() là gì?

Hàm htmlspecialchars() chuyển đổi các ký tự đặc biệt thành các thực thể HTML. Điều này có nghĩa là nó sẽ thay thế các ký tự HTML như < và > bằng < và >. Điều này ngăn kẻ tấn công khai thác mã bằng cách chèn mã HTML hoặc Javascript


Lưu ý lớn về bảo mật biểu mẫu PHP

Biến $_SERVER["PHP_SELF"] có thể bị tin tặc sử dụng

Nếu PHP_SELF được sử dụng trong trang của bạn thì người dùng có thể nhập dấu gạch chéo (/) và sau đó nhập một số lệnh Cross Site Scripting (XSS) để thực thi

Cross-site scripting (XSS) là một loại lỗ hổng bảo mật máy tính thường thấy trong các ứng dụng Web. XSS cho phép kẻ tấn công đưa tập lệnh phía máy khách vào các trang Web được người dùng khác xem.

Giả sử chúng ta có biểu mẫu sau trong một trang có tên "test_form. php"

">

Bây giờ, nếu người dùng nhập URL thông thường vào thanh địa chỉ như "http. //www. thí dụ. com/test_form. php", đoạn mã trên sẽ được dịch sang

Càng xa càng tốt

Tuy nhiên, hãy xem xét rằng người dùng nhập URL sau vào thanh địa chỉ

http. //www. thí dụ. com/test_form. php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

Trong trường hợp này, đoạn mã trên sẽ được dịch sang

Mã này thêm thẻ tập lệnh và lệnh cảnh báo. Và khi tải trang, mã JavaScript sẽ được thực thi (người dùng sẽ thấy hộp cảnh báo). Đây chỉ là một ví dụ đơn giản và vô hại về cách khai thác biến PHP_SELF

Xin lưu ý rằng bất kỳ mã JavaScript nào cũng có thể được thêm vào bên trong

- điều này sẽ không được thực thi, bởi vì nó sẽ được lưu dưới dạng mã thoát HTML, như thế này

Mã hiện an toàn để được hiển thị trên một trang hoặc bên trong một e-mail

Chúng tôi cũng sẽ làm thêm hai việc nữa khi người dùng gửi biểu mẫu

  1. Loại bỏ các ký tự không cần thiết (dấu cách thừa, tab, dòng mới) khỏi dữ liệu đầu vào của người dùng (với hàm trim() của PHP)
  2. Xóa dấu gạch chéo ngược (\) khỏi dữ liệu đầu vào của người dùng (với chức năng dải dấu gạch chéo () của PHP)

Bước tiếp theo là tạo một hàm sẽ thực hiện tất cả việc kiểm tra cho chúng ta (thuận tiện hơn nhiều so với việc viết đi viết lại cùng một đoạn mã)

Chúng ta sẽ đặt tên hàm là test_input()

Bây giờ, chúng ta có thể kiểm tra từng biến $_POST bằng hàm test_input() và tập lệnh trông như thế này

Thí dụ

// định nghĩa các biến và đặt giá trị rỗng
$name = $email = $gender = $comment = $website = "";

nếu ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$website = test_input($_POST["trang web"]);
$comment = test_input($_POST["comment"]);
$gender = test_input($_POST["giới tính"]);
}

hàm test_input($data) {
$data = trim($data);
$data = striplashes($data);
$data = htmlký tự đặc biệt($data);
trả lại dữ liệu $;
}
?>

Chạy ví dụ »

Lưu ý rằng khi bắt đầu tập lệnh, chúng tôi kiểm tra xem biểu mẫu đã được gửi hay chưa bằng cách sử dụng $_SERVER["REQUEST_METHOD"]. Nếu REQUEST_METHOD là POST, thì biểu mẫu đã được gửi - và nó phải được xác thực. Nếu nó chưa được gửi, hãy bỏ qua xác thực và hiển thị một biểu mẫu trống

Tuy nhiên, trong ví dụ trên, tất cả các trường đầu vào là tùy chọn. Tập lệnh hoạt động tốt ngay cả khi người dùng không nhập bất kỳ dữ liệu nào

PHP_SELF được sử dụng để làm gì?

$_SERVER["PHP_SELF"] là một biến siêu toàn cầu trả về tên tệp của tập lệnh hiện đang thực thi . Vì vậy, $_SERVER["PHP_SELF"] sẽ gửi dữ liệu biểu mẫu đã gửi đến chính trang đó, thay vì chuyển sang một trang khác. Bằng cách này, người dùng sẽ nhận được thông báo lỗi trên cùng một trang với biểu mẫu.

$_ MÁY CHỦ [' PHP_SELF '] là gì?

$_SERVER['PHP_SELF'] Trả về tên tệp của tập lệnh hiện đang thực thi .

Làm cách nào để tạo biểu mẫu PHP tự gửi?

Cách thích hợp là sử dụng $_SERVER["PHP_SELF"] (kết hợp với htmlspecialchars để tránh khả năng bị khai thác). Bạn cũng có thể bỏ qua phần hành động = trống, phần này không hợp lệ với W3C, nhưng hiện đang hoạt động trong hầu hết (tất cả?) Trình duyệt - mặc định là tự gửi nếu nó trống.

Biểu mẫu tự xử lý trong PHP là gì?

PHP_SELF là một biến trả về tập lệnh hiện tại đang được thực thi . Bạn có thể sử dụng biến này trong trường hành động của biểu mẫu. Trường hành động của biểu mẫu hướng dẫn nơi gửi dữ liệu biểu mẫu khi người dùng nhấn nút gửi. Hầu hết các trang PHP duy trì xác thực dữ liệu trên cùng một trang với chính biểu mẫu.