Bài 1: Những khái niệm căn bản về mạng máy tính « on: January 18, 2007, 08:18:43 AM » Mục đích và yêu cầu: - Nắm được các khái niệm cơ bản nhất về mạng máy tính. - Biết cách cài đặt giao thức TCP/IP và web server. Yêu cầu: - Một tờ giấy trắng - Một gói café + 1 cốc nước nóng, hoặc một ít chè xanh. - Bộ cài Windows. - File phpdev.zip đi kèm tài liệu này. Bắt đầu: Bước 1: Ghi vào tờ giấy dòng chữ: "Đang bận làm việc, không tiếp khách, chỉ tiếp gái đẹp" rồi dán trước cửa hoặc trên bàn làm việc Bước 2: Pha một cốc café. Bước 3: Bắt đầu với những khái niệm: I. Khái niệm cơ bản: 1. Mạng máy tính: Là 2 hay nhiều máy tính được kết nối với nhau. 2. Máy chủ - Máy khách: Trong mạng máy tính, máy chủ (hay còn gọi là server) là một máy tính được sử dụng để các máy tính khác truy cập. Các máy tính truy cập vào 1 máy chủ được gọi là máy khách. Như vậy, 1 máy tính trong mạng có thể vừa là 1 máy chủ (khi có máy khác truy cập đến nó), vừa là một máy khách (nếu nó truy cập đến một máy tính khác). Vì vậy đừng nên nghĩ rằng máy chủ là 1 cái gì đó cao siêu cho mệt óc 3. Giao thức mạng: Các máy tính trên mạng "nói chuyện" với nhau thông qua một ngôn ngữ đặc biệt gọi là các giao thức mạng. Có rất nhiều giao thức khác nhau, mỗi giao thức có 1 nhiệm vụ riêng. Ở đây tôi tạm chia ra làm 2 nhóm giao thức: - Giao thức truyền dữ liệu, chuyên dùng để vận chuyển dữ liệu giữa 2 máy tính. - Giao thức xử lý dữ liệu, có nhiệm vụ xử lý dữ liệu nhận được từ giao thức truyền dữ liệu Túm lại: Không nên phát hoảng khi nghe thấy 2 từ giao thức. Chẳng qua nó chỉ là 1 dạng ngôn ngữ để trao đổi với nhau mà thôi. Và bạn cứ yên chí rằng nếu thích, bạn có thể tự định nghĩa ra một cái giao thức nào đó. Chẳng hạn như các chương trình chat của Yahoo, hay các chương trình remote trojan… Chúng tự đẻ ra các giao thức riêng dựa trên nền giao thức TCP/IP đấy. 4. Chùm giao thức TCP/IP Giao thức TCP/IP là 1 giao thức được sử dụng để truyền dữ liệu giữa 2 máy tính. Theo giao thức này, mỗi máy tính sẽ có 1 địa chỉ xác định trên mạng gọi là địa chỉ IP. Địa chỉ IP là một cụm chữ số có dạng a.b.c.d (a,b,c,d là các số từ 0 đến 255). VD: 174.178.0.1. Giao thức TCP/IP chỉ có nhiệm vụ duy nhất là truyền dữ liệu giữa 2 máy tính và đảm bảo giữ nguyên vẹn dữ liệu khi truyền đi. Ngoài ra nó chẳng cần biết dữ liệu đó là gì và được xử lý như thế nào. Dựa trên khả năng vận chuyển của giao thức TCP/IP, người ta xây dựng nên một nhóm các giao thức khác chuyên xử lý dữ liệu nhận được từ TCP/IP, gọi là chùm giao thức TCP/IP hay họ giao thức TCP/IP. Để phân chia các giao thức con trong chùm giao thức TCP/IP, người ta sử dụng một khái niệm khác gọi là Cổng giao thức. Đây là 1 con số nguyên từ 0 đến 32767 thì phải :p. Mỗi giao thức con trong chùm giao thức sẽ chiếm hữu một cổng riêng. Thông thường thì mỗi chương trình ứng dụng trên server sẽ chịu trách nhiệm mở một cổng TCP/IP, định nghĩa giao thức cho cổng đó, và sau đó là lắng nghe các yêu cầu từ máy khách và xử lý các yêu cầu đó. Như vậy, trong hệ giao thức TCP/IP, một máy khách sẽ truy cập thành công đến máy chủ nếu như nó có địa chỉ IP và cổng đang mở của dịch vụ trên máy chủ. Chẳng hạn: Với 1 máy chủ quản lý web (web server), chúng ta cần phải có một ứng dụng web gọi là web server. Ứng dụng này sẽ mở 1 cổng (mặc định là 80) và xử lý các tín hiệu đến từ cổng đó. Bây giờ hãy nhấp 1 ngụm café cho tỉnh táo đã II. Trang Web tĩnh và Trang Web động 1. Trang web tĩnh và trang web động Bạn đã từng xây dựng một trang Web và đưa nó lên mạng? Trang web của bạn thật là thú vị (ít nhất là theo ý nghĩ của bạn ) và tất nhiên bạn muốn tham khảo ý kiến của người đọc? Chẳng nhẽ bạn lại cho số điện thoại và yêu cầu người góp ý phải gọi điện đến? Hic… Đảm bảo sẽ chẳng có ma nào thèm gọi điện. Bạn muốn "xin" một ít thông tin về người duyệt Web… hic. Làm cách nào bây giờ??? Vâng, đó chính là nhược điểm của cái gọi là trang web tĩnh. Đó là các trang Web không cho phép bạn có thể tương tác với người dùng (chẳng hạn như là trao đổi hay thu thập các thông tin từ phía người dùng). Nó là các trang web có đuôi *.htm thông thường. Ngược lại, các trang Web động cho phép bạn nhận thông tin từ người dùng, xử lý thông tin đó, và có thể đáp trả lại các yêu cầu của họ. Xem ra nó cũng linh động ra phết đấy chứ? Để làm được điều đó, tất nhiên là bạn phải … theo dõi các bài viết này 2. Lập trình Script Các trang web nguyên thuỷ sử dụng ngôn ngữ định dạng chuẩn là HTML (HyperText Markup Language). HTML chuẩn chỉ bao gồm các cặp thẻ đánh dấu để định khuôn dạng của tài liệu. Tuỳ theo tên thẻ là gì mà trình duyệt sẽ tự động hiểu và làm các công việc do thẻ đó quy định. Chẳng hạn như cặp thẻ <B>….</B> quy định đoạn văn bản trong đó sử dụng chữ đậm. Vì vậy, trên thực tế người ta không coi nó là một ngôn ngữ (vì nó chẳng liên quan gì đến những thứ mà ta hay gặp trong lập trình như biến, câu lệnh rẽ nhánh, lặp…). Cũng chính vì nguyên nhân này, nó phải tự mở rộng bằng cách cho phép "nhúng" vào bản thân nó một số đoạn mã lệnh chương trình đặc biệt, người ta thường gọi chúng là các đoạn mã Script hay các đoạn mã nhúng . Ngôn ngữ sử dụng trong các đoạn mã lệnh đó gọi là các ngôn ngữ Script. Các ngôn ngữ script thường đơn giản và không có nhiều sức mạnh như các ngôn ngữ "kinh điển" cùng tên, hay nói cách khác, chúng là một phần rất nhỏ của một ngôn ngữ nào đó được tích hợp vào trình duyệt để thực hiện một số thao tác nhất định. Chi tiết về ngôn ngữ HTML đã có đầy rẫy trên Internet, cũng như ở các hiệu sách, nên chúng không được nhắc lại ở đây. Nếu các bạn chưa biết gì về nó thì bạn phải tìm đọc các tài liệu về HTML trước khi tiếp tục theo dõi khoá học này. Lập trình Script ở máy khách Như tên gọi của nó, lập trình script ở máy khách là viết các đoạn script chạy trên máy khách. Các đoạn mã này được máy chủ gửi kèm trong tài liệu, đưa về máy khách và được thực hiện ở đây. Trong tài liệu gửi về trình duyệt, các đoạn mã này thường được tìm thấy trong cặp thẻ <Script language ="xxxxxx">…</Script>. Có nhiều ngôn ngữ script phía máy khách. Nổi tiếng hơn cả là Javascript. Kế đến là VbScript và PerlScript. Vì tài liệu này chủ yếu tập trung vào PHP - một ngôn ngữ script chạy trên máy chủ, nên chi tiết những ngôn ngữ này không được nhắc đến trong tài liệu. Riêng về JavaScript, các bạn có thể tìm thấy các tài liệu tiếng Việt qua trang tìm kiếm Vinaseek.com. Nếu có thời gian, tôi khuyên các bạn nên tìm hiểu về chúng. Rất nhiều xảo thuật bắt mắt có thể tìm thấy trong các đoạn mã này. Kích chuột vào đây để tham khảo một tài liệu về JavaScript Lập trình Script ở máy chủ Trái ngược với lập trình Script ở máy khách (thực thi mã lệnh ở máy khách), lập trình script ở máy chủ cho phép thực thi các đoạn mã ngay ở trên máy chủ. Không như các đoạn mã script hoạt động ở máy khách, các tài liệu có chứa các đoạn mã script phía máy chủ thường được lưu ở các file tài liệu có đuôi mở rộng riêng biệt, và các đoạn mã thi hành trên máy chủ cũng phải được đặt trong một cặp thẻ đặc biệt tuỳ theo quy định của chương trình xử lý. Chú ý rằng đối với mỗi loại ngôn ngữ server script sẽ có một chương trình xử lý riêng. Chẳng hạn các đoạn mã ASP thường được đặt trong các file *.asp, và chúng được xử lý bằng file ASP.dll. Chi tiết về cách thức hoạt động của loại này, có thể tóm tắt như sau: - Bước 1: Client gửi yêu cầu đến máy chủ - Bước 2: Web server kiểm tra xem yêu cầu đó cần loại tài liệu nào. Nếu đó là loại tài liệu có chứa các đoạn mã server script, nó sẽ triệu gọi chương trình xử lý tương ứng với loại tài liệu đó - Bước 3: Chương trình xử lý sẽ thực thi các đoạn mã server script trong tài liệu đó, và trả kết quả (thường là dưới khuôn dạng HTML) về cho web server. - Bước 4: Web server trả kết quả tìm được cho Client và ngắt kết nối. Bây giờ, 5 phút dành cho café. Ơ nhưng mà hết café rồi, hix, thôi đi ngủ vậy Bài 2: Cài đăt web server Apache, MySQL và PHP « on: January 18, 2007, 08:30:59 AM » Cài đăt web server Apache, MySQL và PHP. 1. Cài đặt giao thức TCP/IP Các dịch vụ web server dựa trên nền giao thức TCP/IP. Vì vậy trước khi cài đặt server, ta phải tiến hành cài đặt giao thức TCP/IP. Để cài đặt giao thức TCP/IP, ta vào Control Panel, chọn Network. Nếu thấy dòng chữ TCP/IP đã xuất hiện trong ô Configuration, tức là giao thức TCP/IP đã được cài đặt trên máy. Còn nếu không, ta kích chuột vào Add. Hộp thoại Select Component hiển thị ra. Kích chọn tiếp Protocol -> Add. Trong danh sách bên trái, chọn Microsoft. Sau đó sang danh sách bên phải, chọn TCP/IP. Bấm Enter để bắt đầu quá trình cài đặt. Trong quá trình cài đặt, nếu máy tính của bạn chưa có card mạng thì hệ thống sẽ yêu cầu cài một trình điều khiển card mạng nào đó. Đừng lo, cứ chọn đại theo chỉ dẫn sẽ xong thôi. Sau khi cài đặt xong, mở cửa sổ Command Prompt ra. Gõ lệnh C:\ping 127.0.0.1 Nếu thấy có 4 dòng chữ có dạng: Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx Reply from 127.0.0.1: byte = xx time<xx ms TTL =xxx tức là giao thức TCP/IP đã được cài đặt thành công. Ghi chú: Dãy số 127.0.0.1 chính là địa chỉ IP mặc định của chính máy tính bạn đang sử dụng. Bạn cũng có thể sử dụng cái tên localhost thay cho địa chỉ IP 127.0.0.1 để truy cập vào máy tính của chính mình. 2. Cài đặt web server, PHP, MySQL: Trước khi cài đặt và vận hành hệ thống, hãy ngắt toàn bộ các website mặc định của IIS/PWS, và tắt luôn dịch vụ nếu các bạn đã từng cài các webserver này. Nếu các bạn đang chạy Apache và MySQL thì cũng gỡ bỏ (uninstall) đi. Chạy chương trình phpdev423.exe để tiến hành cài đặt. PHPDev là một phần mềm tích hợp bao gồm Web server Apache, bộ xử lý PHP, và CSDL My SQL. Các bạn có thể tham khảo chi tiết phần mềm tại: http://www.firepages.com.au/dev423.htm Nhập tên thư mục cài đặt (chẳng hạn ở đây tôi chọn là c:\phpdev). Kích chọn Install để bắt đầu quá trình cài đặt: Sau khi cài đặt xong, các bạn đã có thể vận hành Apache, PHP và MySQL. Để vận hành hệ thống, các bạn vào thư mục của hệ thống (c:\phpdev theo ví dụ trên), chạy file 2K-NT-XP- phpdev_start.bat. Nếu trình duyệt hiện ra như hình dưới tức là bạn đã cài đặt thành công: 3. Một số thông tin về hệ thống: - Thư mục gốc ảo: Là thư mục www của hệ thống. Đây là thư mục gốc của Apache. Mọi địa chỉ URL gửi lên server sẽ được phân tích thành đường dẫn tương ứng với đường dẫn của thư mục gốc ảo trên. Thư mục dữ liệu của MySQL: Nằm trong thư mục /mysql/data. Trong thư mục này, MySQL sẽ lưu trữ các CSDL (Database) dưới dạng các thư mục, mỗi bảng trong CSDL được ghi trong một file riêng biệt. - Để thao tác với CSDL MySQL, các bạn có thể mở trình duyệt và vào trang http://localhost/phpmyadmin/ . Chữ Localhost đã được giải thích ở trên. - Để xem các thông tin của hệ thống, các bạn mở trang http://localhost/phpinfo.php - Các bạn có thể sử dụng thử diễn đàn IBF Forum được cài đặt miễn phí mặc định kèm hệ thống. Re: Bài 2: Cài đăt web server Apache, MySQL và PHP « Reply #1 on: March 14, 2007, 10:29:17 PM » Xin phép admin cho em được bổ sung thêm cách cài đặt thủ công (manual) từng phần nhé. Link tải - Apache HTTP server: http://httpd.apache.org/download.cgi , chọn Win32 Binary (MSI Installer). - PHP: http://www.php.net/downloads.php , chọn Windows Binaries, gói zip package. - MySQL: http://dev.mysql.com/downloads/ , chọn MySQL Community Server, chọn bản Without installer (unzip in C:\). Cài đặt Trước khi cài đặt, các bạn cũng phải chú ý một số điều như ở bài trên. 1. Apache Cài đặt Apache với các lựa chọn mặc định (cứ thoải mái nhấn Next, trừ khi bạn muốn có 1 vài rắc rối ). Trong mục network domain, server name và emai, có thể khai gì cũng được (nếu cần có thể chỉnh lại sau). Sau khi cài đặt xong, Apache sẽ chạy dưới dạng 1 service của Windows và nó được thiết lập mặc định khởi động cùng Windows. 1 chương trình nhỏ có tên Apache Service Monitor cũng được tự động chạy dưới khay hệ thống để có thể mở hoặc tắt Apache thuận tiện. Để kiểm tra, hãy vào trình duyệt và gõ vào khung address: http://localhost/. Dòng url này sẽ gọi file index.html nằm trong thư mục htdocs trong thư mục cài đặt Apache, đây là thư mục gốc mặc định của Apache, website của bạn sẽ dc chứa tại đây. Nhấn Enter và dòng chữ "It works!!!" to tướng hiện ra. Chú ý: Với Windows SP2, Apache có thể bị block. Cách giải quyết: Unblock Sau khi chạy thành công, có lẽ bạn sẽ muốn cấu hình lại Apache cho phù hợp hơn. Dùng Notepad mở file httpd.conf nằm trong thư mục conf trong thư mục cài đặt Apache (hoặc vào Start menu để mở) và tiến hành chỉnh sửa: - Để chứa website của mình trong thư mục khác thuận tiện hơn thư mục mặc định htdocs của Apache, VD: C:\www, chỉnh lại như sau: Code: DocumentRoot "C:/www/" <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Satisfy all </Directory> <Directory "C:/www/"> - Để thiết lập danh sách các file Apache sẽ tự động cung cấp (VD: index.html, index.htm, index.php) khi 1 thư mục được yêu cầu, chỉnh lại như sau: Code: <IfModule dir_module> DirectoryIndex index.html index.htm index.php </IfModule> Như vậy, để truy cập đến file index.html trong thư mục C:\www, bạn ko cần phải gõ: http://localhost/index.html nữa mà chỉ cần gõ http://localhost/. Apache dò tìm các file theo thứ tự từ trái sang phải trong danh sách file mà bạn khai báo. Chú ý: sau mỗi lần chỉnh sửa file httpd.conf, bạn phải restart lại Apache (dùng Apache Service Monitor) để cập nhật các thay đổi. 2. PHP 2.1 Cài đặt và cấu hình: Giải nén ra 1 thư mục nào đó, VD: C:\php. Cần quan tâm đến 2 file sau: - phpXapacheY.dll: đây là module mà Apache cần nạp để nó có thể hoạt động với PHP. X, Y lần lượt là số hiệu phiên bản của PHP và Apache, VD: php5apache2.dll. Bạn phải biết phiên bản Apache và PHP mình đang dùng để lựa chọn cho đúng. VD: nếu bạn có PHP 5.2.0 và Apache 2.2.3, thì ko thể dùng php5apache2.dll được mà phải dùng php5apache2_2.dll (module kết nối PHP5 với Apache 2.2.x). Bạn hãy vào trang chủ của PHP để biết các chú ý từ nhà sx. Để nạp module này (VD: php5apache2_2.dll) vào Apache, hãy mở httpd.conf và thêm vào cuối phần LoadModule các dòng như sau: Code: LoadModule php5_module "C:/php/php5apache2_2.dll" AddType application/x-httpd-php .php PHPIniDir "C:/php" Dòng cuối cùng là đường dẫn đến file cấu hình của PHP: php.ini. - php.ini: đây là file cấu hình của PHP. Vào thư mục cài đặt PHP, chọn 1 trong 2 file php.ini-recommended hoặc php.ini-dist để sửa thành php.ini. Theo khuyến cáo của nhà cung cấp, hãy chọn php.ini-recommended. 2.2 Kiểm tra: Restart Apache. Nếu Apache không thể khởi động, xem lại bước 1. Nếu thành công, dùng Notepad tạo 1 file phpinfo.php với nội dung như sau: Code: <?php phpinfo(); ?> Copy file này vào thư mục chứa website (C:\www), rồi mở nó bằng trình duyệt (http://localhost/phpinfo.php ) bạn sẽ nhận dc 1 bảng chỉ rõ cấu hình của Apache và PHP cài đặt trong máy tính. 3. MySQL 3.1 Cài đặt và kiểm tra - Giải nén ra 1 thư mục nào đó, VD: C:\MySQL. Trong thư mục cài đặt, chọn file ini phù hợp với mức độ CSDL của mình (VD: my-small.ini) rồi đổi tên thành my.ini và copy vào thư mục C:\Windows. - Mặc định, dữ liệu của bạn sẽ được chứa trong C:\MySQL\data, nên chuyển nó ra nơi khác (VD: C:\mydata) đề phòng trường hợp nâng cấp MySQL sẽ làm mất dữ liệu. Mở my.ini, xoá dấu comment # tại dòng dưới đây và chỉnh lại như sau: Code: #innodb_data_home_dir = C:/mydata/ - Vào Start - Run, gõ cmd, cửa sổ Command Prompt thứ 1 hiện ra, gõ "C:\mysql\bin\mysqld" console, MySQL server sẽ khởi động. Chữ console là để bắt MySQL server hiển thị quá trình xử lý trên cửa sổ này, nó sẽ có dạng như sau: Quote C:\>"C:\mysql\bin\mysqld" console InnoDB: The first specified data file .\ibdata1 did not exist: InnoDB: a new database to be created! 061204 22:50:37 InnoDB: Setting file .\ibdata1 size to 10 MB InnoDB: Database physically writes the file full: wait 061204 22:50:38 InnoDB: Log file .\ib_logfile0 did not exist: new to be created InnoDB: Setting log file .\ib_logfile0 size to 5 MB InnoDB: Database physically writes the file full: wait 061204 22:50:39 InnoDB: Log file .\ib_logfile1 did not exist: new to be created InnoDB: Setting log file .\ib_logfile1 size to 5 MB InnoDB: Database physically writes the file full: wait InnoDB: Doublewrite buffer not found: creating new InnoDB: Doublewrite buffer created InnoDB: Creating foreign key constraint system tables InnoDB: Foreign key constraint system tables created 061204 22:50:40 InnoDB: Started; log sequence number 0 0 061204 22:50:42 [Note] C:\mysql\bin\mysqld: ready for connections. Version: '5.0.27-community' socket: '' port: 3306 MySQL Community Edition (GP L) Nhưng để có thể giao tiếp được với CSDL này, bạn phải có 1 giao diện để tương tác với nó, gọi là MySQL client, có thể là giao diện đồ hoạ (phpMyAdmin) hoặc giao diện dòng lệnh - console. MySQL cung cấp sẵn cho bạn 1 MySQL client dạng console là mysql.exe trong C:\MySQL\bin. Để sử dụng nó, bạn tiếp tục mở 1 cửa sổ cmd thứ 2, gõ vào "C:\mysql\bin\mysql" -u root, nó sẽ trông giống thế này: Quote C:\>"c:\mysql\bin\mysql" -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.0.27-community Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> u là viết tắt của user, root là username. MySQL mặc định tạo user là root với quyền cao nhất và chưa đặt password. Bạn nên đặt password tại đây chứ không nên đặt tại file my.ini vì nó sẽ không được mã hoá. Vì chúng ta dùng localhost để thử nghiệm website nên không cần thiết phải đặt password. Để tắt MySQL server, gõ exit tại dấu nhắc mysql>, cửa sổ cmd thứ 2 sẽ trả về thư mục gốc, tiếp tục gõ "C:\mysql\bin\mysqladmin" -u root shutdown. Cửa sổ cmd thứ 1 sẽ hiển thị quá trình tắt: Quote 061204 22:54:49 [Note] C:\mysql\bin\mysqld: Normal shutdown 061204 22:54:49 InnoDB: Starting shutdown 061204 22:54:52 InnoDB: Shutdown completed; log sequence number 0 43655 061204 22:54:52 [Note] C:\mysql\bin\mysqld: Shutdown complete Khi làm việc trên hệ console này, hầu như chúng ta chỉ sử dụng 2 thao tác bật và tắt MySQL server, các thao tác khác sẽ được thực hiện thông qua mã lệnh trong các trang .php. Vì vậy, để thuận tiện, bạn nên tạo 2 file .bat (dạng text): * File thứ 1 đặt tên là MyStart.bat có nội dung: "C:\mysql\bin\mysqld" console. * File thứ 2 đặt tên là MyStop.bat có nội dung: "C:\mysql\bin\mysqladmin" -u root shutdown. Khi cần bật tắt MySQL server chỉ cần chạy 2 file này là được. 3.2 Kết nối MySQL với PHP: - Bạn cần 2 file: libmysql.dll và php_mysql.dll (hoặc php_mysqli.dll). Các file này đều có sẵn trong bộ cài đặt của php. Vào thư mục gốc của php và copy libmysql.dll vào C:\windows\system32. - Dùng Notepad mở php.ini: * Xoá dấu comment ";" tại 2 dòng dưới đây để PHP có thể load 2 extension mysql và mysqli. Tuy nhiên chỉ nên dùng 1 trong 2 extension, dùng cái nào thì xoá dấu ";" tại cái đó: Code: ;extension=php_mysql.dll ;extension=php_mysqli.dll * Khai báo đường dẫn đến thư mục chứa extension của PHP: Code: extension_dir = "C:\php\ext" - Kiểm tra: restart Apache, bật MySQL server, dùng trình duyệt mở file phpinfo.php đã tạo ở mục 2.2 (http://localhost/phpinfo.php). Trong bảng cấu hình của Apache và PHP giờ có thêm mục MySQL (hoặc MySQLi). Vậy là kết nối đã thành công. Chú ý: nếu ko thấy mục MySQL(hoặc MySQLi) nghĩa là php vẫn chưa kết nối dc với mysql. Khi đó bạn hãy sử dụng các file libmysql.dll, php_mysql.dll (hoặc php_mysqli.dll) do MySQL cung cấp. php_mysql.dll (hoặc php_mysqli.dll) được gọi là connector - bộ kết nối. Connector cho MySQL mới nhất và PHP mới nhất có thể download từ http://dev.mysql.com/downloads/connector/php/ , các phiên bản cũ hơn download từ các link dưới đây (có thể sẽ ko có), trong đó thay x.y.z, a.b.c lần lượt bởi số hiệu phiên bản của PHP và MySQL cần dùng: Download php_mysql.dll: http://dev.mysql.com/get/Downloads/Connector-php/php_x.y.z_mysql_a.b.c- win32.zip/from/pick Download php_mysqli.dll: http://dev.mysql.com/get/Downloads/Connector-php/php_x.y.z_mysqli_a.b.c- win32.zip/from/pick php_mysqli.dll là connector cải tiến của php_mysql.dll. Bạn nên download cả 2 về, nhưng mỗi lần chỉ nên dùng 1 trong 2 cái. Sau khi download về, hãy copy đè libmysql.dll vào C:\windows\system32, copy đè php_mysql.dll và php_mysqli.dll vào thư mục extension của php (VD: C:\php\ext). Sau đó kiểm tra lại như trên. Nếu vẫn ko được thì hết cách Bài này tôi viết sau khi cài đặt Apache 2.2.3, PHP 5.2.0, MySQL 5.0.27. Hy vọng các phiên bản mới sẽ không kèm theo các rắc rối mới Bài 3: Lịch sử phát triển các ứng dụng trên Web server. ASP, JSP và PHP « on: January 18, 2007, 08:32:48 AM » Lịch sử phát triển các ứng dụng trên Web server. ASP, JSP và PHP Vài năm trước đây, con đường thực sự duy nhất để vận chuyển các dữ liệu động tới trang Web là kỹ thuật CGI (Common Gateway Interface). Các chương trình CGI cung cấp một sự liên hệ đơn giản để tạo các ứng dụng Web cho phép tiếp nhận các dữ liệu nhập vào, các yêu cầu truy vấn cơ sở dữ liệu từ phía người dùng và trả một vài kết quả về cho trình duyệt. Các chương trình CGI có thể được viết trên một vài ngôn ngữ, trong đó phổ biến nhất là Perl. Web server sử dụng CGI như là một cổng truy cập chặn giữa yêu cầu của người dùng và dữ liệu được yêu cầu. Nó sẽ được nạp vào bộ nhớ như một chương trình bình thường. Thông thường các web server sẽ chuyển các yêu cầu và triệu gọi chương trình CGI. Sau khi chương trình kết thúc, web server sẽ đọc dữ liệu trả về từ chương trình và gửi nó đến trình duyệt. Nhược điểm lớn nhất của kỹ thuật CGI là nó hoạt động kém hiệu quả. Mỗi khi web server nhận một yêu cầu, một tuyến trình mới được tạo ra. Mỗi tuyến trình lại chứa trong nó các đoạn mã lệnh, dữ liệu… và không được chia sẻ lẫn nhau, do đó gây ra lãng phí bộ nhớ. Để khắc phục nhược điểm này, Microsoft và Netscape đã hợp tác và đưa ra một cải tiến đáng kể là chuyển chúng về dạng các file thư viện liên kết động (DLL ), cho phép chia sẻ mã lệnh giữa các tuyến trình. Đây chính là các kỹ thuật ISAPI và NSAPI. Đen đủi thay, các kỹ thuật dựa trên DLL không phải là đã hoàn thiện. Chúng vẫn còn một số vấn đề: - Khi các thư viện nền tảng được gọi, nếu muốn thoát các ứng dụng này, ta phải tắt chương trình triệu gọi (Web server) và khởi động lại máy tính. - Các thư viện cần được đặt trong các tuyến trình bảo vệ, tức là chúng cần phải được cảnh giác về cách sử dụng các biến chung hoặc các biến tĩnh. - Nếu chương trình triệu gọi gây ra lỗi truy cập, nó có thể dẫn đến tình trạng server bị treo tắc tử. - Và cuối cùng: khi đã được dịch ra các file DLL, công việc gỡ lỗi cũng như bảo trì mã lệnh trở nên vất vả hơn bao giờ hết. Kỹ thuật Web mới nhất của Microsoft, kết hợp HTML, các đoạn Script, các thành phần xử lý phía server trong cùng một file, được gọi là ASP (Active Server Pages), với phiên bản mới nhất hiện nay là ASP.Net. ASP được triệu gọi bởi một thư viện liên kết động gắn với các Web server của Microsoft. Về bản chất, ta có thể coi ASP như là một ngôn ngữ thông dịch vậy. Một trang ASP có thể sử dụng HTML, JScript và VBScript. Qua các đoạn mã nhúng này, ASP có thể truy cập đến các thành phần phía server. Các thành phần này có thể được viết trên bất kỳ ngôn ngữ nào hỗ trợ các thành phần COM của Microsoft. Và đây chính là sức mạnh của ASP: Nó có thể làm được bất kỳ cái gì mà máy chủ có thể làm được với các thành phần COM. Sau khi được thi hành, ASP sẽ sản sinh ra một trang Web có khuôn dạng HTML và trả nó về cho Web server. Một bất lợi lớn đối với ASP là nó chỉ có thể hoạt động trên các họ Web server của Microsoft (bao gồm PWS trên Win9x hay IIS trên WinNT/2000/XP). Các nhà phát triển đang hướng đến những môi trường khác như Unix/Linux (hiện đã có bản Chili! ASP chạy trên các môi trường này), nhưng kết quả thì còn phải đợi thêm một thời gian nữa Trước khi đi vào tìm hiểu lịch sử của PHP, có lẽ chúng ta cũng phải nhắc đến một tên tuổi khác là Java Server Pages. hay JSP. Giống như ASP, trang JSP cho phép chứa HTML, các đoạn mã Java và các thành phần Java Bean và chúng sẽ thực hiện các công việc để sản sinh ra một trang Web để gửi về Client. Bất lợi chính của loại này là phải đi kèm với "máy ảo Java", vốn không được coi là nhanh về mặt tốc độ. Lịch sử PHP PHP - viết tắt của PHP Hypertext Preprocessor - một định nghĩa đệ quy khó hiểu! Vào khoảng năm 1994, Rasmus Lerdorf đưa một số đoạn Perl Script vào trang Web để theo dõi xem ai đang đọc tài liệu của ông ta. Dần dần, người ta bắt đầu thích các đoạn Script này và sau đó đã xuất bản một gói công cụ có tên là "Personal Home Pages" (nghĩa đầu tiên của PHP). Ông ta đã viết một cơ chế nhúng và kết hợp với một số công cụ khác để phân tích đầu vào từ các mẫu biểu HTML: FI, Form Interpreter hay Phiên dịch mẫu biểu, được tạo ra theo cách đó và được đặt tên là PHP/FI hay PHP2. Nó được hoàn thành vào khoảng giữa năm 1995. Sau đó, người ta bắt đầu sử dụng các công cụ này để xây dựng những thứ rắc rối hơn, và đội ngũ phát triển đã thay đổi từ một người duy nhất thành một nhóm các nhà phát triển nòng cốt trong dự án, và nó đã được tổ chức hoá. Đó là sự bắt đầu của PHP3. Đội ngũ các nhà phát triển (Rasmus Lerdorf, Andi Gutmans, Zeev Suraski, Stig Bakken, Shane Caraveo và Jim Winstead) đã cải tiến và mở rộng bộ máy nhúng và bổ sung thêm một số hàm API đơn giản cho phép các lập trình viên khác tự do bổ sung nhiều tính năng vào ngôn ngữ bằng cách viết các module cho nó. Cấu trúc của ngôn ngữ đã được tinh chế, được kết cấu thân thiện hơn đối với những người đến từ các ngôn ngữ hướng đối tượng hay các ngôn ngữ hướng thủ tục. Nếu bạn đã biết một vài ngôn ngữ lập trình khác thì khi đến với PHP, bạn sẽ không cảm thấy khó khăn. Phiên bản mới nhất cho đến thời điểm này là PHP 5.0.1. Các bạn có thể tham khảo chi tiết tại trang web http://www.php.net. Chương trình PHP đầu tiên: Hello, World « on: January 25, 2007, 02:15:46 AM » Bắt đầu với Hello, world I. Khởi đầu Nếu các bạn đã từng học lập trình, chắc các bạn cũng biết được "Hello, world" là cái gì, còn nếu bạn nào chưa biết, thì tôi sẽ giải thích ngay đây: "Hello, world" là một chương trình dành cho những người mới bắt đầu học một ngôn ngữ lập trình nào đó. Chương trình này đơn giản chỉ viết duy nhất một dòng chữ "Hello, world" ra màn hình. Các bạn có thể bỏ qua nó nếu đã biết từ trước, còn nếu bạn nào chưa học, thì chúng ta bắt tay vào viết chương trình này bằng PHP nhé. Hãy mở NotePad ra, gõ vào nội dung sau: Code: <HTML> <BODY> <?php echo ("hello, world"); ?> </BODY> </HTML> OK, Save lại với cái tên test.php. Copy nó vào thư mục gốc (Root Directory) mặc định của Web server. Khởi động Web server Apache lên (nó sẽ hiển thị một cửa sổ đen ngòm, bạn cứ để đó, đừng tắt nó đi, vì nếu tắt đi thì tức là bạn đã tắt chương trình Web server Apache đi rồi đấy). Bây giờ mở trình duyệt ra, tại ô địa chỉ, gõ nội dung sau: "http://127.0.0.1/test.php" (nhớ bỏ hai dấu ngoặc kép đi nhé) Nó sẽ hiển thị ra cửa sổ trình duyệt với duy nhất dòng chữ hello, world Chắc bạn thất vọng lắm hả? Vâng, nó chỉ có mỗi dòng chữ "hello, world" trên màn hình trình duyệt, mà bạn có thể làm nó đơn giản hơn rất nhiều, chẳng cần đến cái PHP kia. OK. Đừng thất vọng vội. Chương trình này hoạt động như thế nào? Trước tiên chúng ta hãy tìm hiểu cách thức hoạt động của hệ trình duyệt (Web Client) và máy chủ cung cấp dịch vụ Web (Web server ) đã nhé: Bước 1: Trình duyệt gửi một yêu cầu HTTP đến máy chủ, yêu cầu một file nào đó Bước 2: Máy chủ sẽ chuyển yêu cầu này đến chương trình xử lý tương ứng, chính là chương trình Web server. Bước 3: Web server phân tích chuỗi yêu cầu nhận được, kiểm tra xem trình duyệt ở máy khách yêu cầu gì. Nếu đó là các file bình thường (không phải là các file chứa các đoạn mã script thực thi phía máy chủ), nó sẽ tìm kiếm file đó và trả về cho trình duyệt ở máy khách. Còn nếu đó là các file chứa các đoạn mã script thực thi phía máy chủ (các chương trình CGI, hay các file thư viện liên kết động ISAPI, hoặc các file *.asp hay *.php), nó sẽ triệu gọi chương trình thực thi các đoạn mã này. Chương trình này sẽ chịu trách nhiệm chạy các đoạn mã, trả chúng về cho Web server dưới khuôn dạng của HTML. Sau đó, Web server mới trả kết quả lấy được cho trình duyệt. Như vậy, chương trình của bạn phải được thực thi trên máy chủ, sau đó mới được trả về cho trình duyêt. Và đây chính là cái gọi là "Trang Web động". Không như các trang web tĩnh, trang web động cho phép bạn có sự tương tác với máy chủ thông qua các đoạn script thực thi phía server. Nhờ có sự tương tác này, bạn có thể truy xuất cơ sở dữ liệu, lấy thông tin người sử dụng, điều khiển các hoạt động khác OK. Bây giờ chắc bạn đã có được chút ít kiến thức với các hệ thống điều khiển Web Client - Server rồi. Đến lượt chúng ta bắt đầu phân tích chương trình đầu tiên kia. II. Phân tích chương trình Quay trở về đoạn mã trên: Code: <HTML> <BODY> <?php echo ("hello, world"); [...]... đoạn mã script PHP còn cung cấp một số hàm để thông báo lỗi như E_ERROR, E_WARNING, E_PARSE và E_NOTICE Ngoài ra, PHP còn cung cấp một số biến cung cấp thông tin về môi trường PHP đang sử dụng Để xem các thông tin này,bạn có thể dùng hàm phpinfo() như sau: .php > < ?php phpinfo(); ?> Xin chao tat ca cac ban, day la chuong trinh PHP dau tien cua toi < ?php echo (" CMXQ ") ?> Khởi đầu, chương trình xử lý phía Web server sẽ phân tích file PHP này, trả về... Ltd"); 4 Một số hằng xây dựng sẵn (built in constant) PHP có chứa một số hằng được xây dựng sẵn TRUE và FALSE là 2 hằng đã được dựng sẵn với chỉ định true (1) và false (=0 hoặc một xâu rỗng) Hằng số PHP_ VERSION chỉ định phiên bản của bộ phân tích PHP mà bạn đang dùng hiện tại Hằng PHP_ OS chỉ định hệ điều hành server mà trình phân tích PHP đang chạy echo (PHP_ OS); // in ra màn hình "Linux" (ví dụ) _FILE_and_LINE_... đó là các đoạn mã thực thi PHP luôn luôn được đặt trong thẻ < ?php ?> Chương trình xử lý phía máy chủ sẽ chỉ thực thi các đoạn mã nằm trong thẻ này Tất cả các đoạn mã khác nằm ngoài thẻ trên đều không được xử lý trực tiếp trên server mà được đưa về trình duyệt < ?php // Đoạn mã PHP đặt ở đây ?> Điều thứ 2 bạn cần biết là chương trình của bạn phải được đặt trong các file * .php Nếu bạn đặt nó vào file... Khối câu lệnh endfor; Ví dụ: < ?php for ($i=1; $i < ?php endfor ?> OK, Như vậy các bạn đã học qua các lệnh cơ bản nhất của php, và cũng là các lệnh cơ bản của tất cả các ngôn ngữ lập trình (gán, rẽ nhánh và lặp) Sau này nếu phải triển khai trên các ngôn ngữ lập trình khác, cách viết các lệnh này có thể khác nhau, nhưng bản chất của chúng thì mãi mãi... Các thông tin này được lưu trữ trong biến mảng $_SERVER (đối với các phiên bản mới) hoặc $HTTP_SERVER_VARS (đối với các phiên bản cũ hơn bản 4.1.0): $_SERVER[ 'PHP_ SELF']: Tên file nằm trên thư mục gốc của website Ví dụ: biến $_SERVER[ 'PHP_ SELF'] trong script đặt tại địa chỉ http://example.com/test .php/ foo.bar sẽ là /test .php/ foo.bar $_SERVER['SERVER_NAME']: Tên của máy chủ host, nơi mà đoạn script... về trình duyệt, và nó sẽ được xử lý như các thẻ HTML khác III Một số lưu ý Dấu chú thích: Các đoạn chú thích rất hữu dụng trong các chương trình của bạn (chẳng hạn muốn chú thích câu lệnh này làm gì, đoạn chương trình này làm gì ) Khi phân tích mã PHP, các đoạn chú thích sẽ bị bỏ qua, nhưng một lập trình viên thì không bao giờ bỏ qua chúng Chúng ta có thể sử dụng một số dấu chú thích sau trong PHP: ... có thể xem trong PHP Manual Bài 11: Các thông tin khác liên quan đến trình duyệt và máy chủ « on: January 23, 2007, 01:19:48 AM » Trong PHP, ngoài các thông tin trình duyệt gửi lên thông qua các con đường POST, GET, COOKIES, chúng ta cũng có thể thu được một số thông tin khác có liên quan đến trình duyệt cũng như các thông số liên quan đến máy chủ như: đường dẫn, địa chỉ IP, phiên bản Các thông tin... nhánh trong PHP « on: January 19, 2007, 12:36:12 PM » OK, bây giờ chúng ta chuẩn bị làm việc với các câu lệnh "xương sống" của một ngôn ngữ lập trình Nếu bạn nào đã từng học qua một ngôn ngữ lập trình nào đó, thì các bạn có thể đọc lướt qua phần này Còn nếu bây giờ bạn mới bắt đầu tiếp xúc với một ngôn ngữ lập trình thì hãy chuẩn bị tinh thần đi Các câu lệnh trong ngôn ngữ lập trình Để lập trình giải... một số dấu chú thích sau trong PHP: // dòng văn bản chú thích (chỉ áp dụng trên một dòng) /* Đoạn văn bản chú thích */ (nằm trong cặp /* và */ Lưu ý rằng các dấu chú thích này chỉ có hiệu lực trong các đoạn mã nhúng PHP thôi đấy nhé Ví dụ < ?php echo("Tôi là một oan hồn vô danh"); // Hiển thị lời giới thiệu lên màn hình echo (" Sơ yếu lý lịch"); /* Hiển thị bản sơ yếu lý lịch Copyright © by CMXQ */ echo . sau: Code: LoadModule php5 _module "C: /php/ php5apache2_2.dll" AddType application/x-httpd -php .php PHPIniDir "C: /php& quot; Dòng cuối cùng là đường dẫn đến file cấu hình của PHP: php. ini. - php. ini:. phiên bản của PHP và Apache, VD: php5 apache2.dll. Bạn phải biết phiên bản Apache và PHP mình đang dùng để lựa chọn cho đúng. VD: nếu bạn có PHP 5.2.0 và Apache 2.2.3, thì ko thể dùng php5 apache2.dll. tạo 1 file phpinfo .php với nội dung như sau: Code: < ?php phpinfo(); ?> Copy file này vào thư mục chứa website (C:www), rồi mở nó bằng trình duyệt (http://localhost/phpinfo .php ) bạn sẽ