Tự học lập trình PHP

  • Tìm hiểu về phương thức $_POST trong PHP từ A - Z

    $ _POST được sử dụng để thu thập các giá trị từ một biểu mẫu có phương thức = "post". Biến $ _POST là một mảng các tên và giá trị biến được gửi bởi phương thức HTTP POST. Khi tìm hiểu về phương thức $_POST trong PHP, chúng ta sẽ thấy được, nó sử dụng để thu thập các giá trị từ một biểu mẫu có phương thức = "post". Thông tin được gửi từ biểu mẫu có phương thức post không hiển thị với người khác và không có giới hạn về lượng thông tin cần gửi.

    1. Giới thiệu $_POST trong PHP

    Có hai cách mà trình duyệt khách có thể gửi thông tin đến máy chủ web.

    • Phương thức GET

    • Phương thức POST

    Trước khi trình duyệt gửi thông tin, trình duyệt sẽ mã hóa thông tin bằng cách sử dụng lược đồ được gọi là mã hóa URL. Trong lược đồ này, các cặp tên/giá trị được nối với các dấu bằng và các cặp khác nhau được phân tách bằng dấu &.

    name1=value1&name2=value2&name3=value3

    Dấu cách được xóa và được thay thế bằng ký tự + và bất kỳ ký tự không phải số nào khác được thay thế bằng giá trị thập lục phân. Sau khi thông tin được mã hóa, nó sẽ được gửi đến máy chủ.

    + Phương thức GET

    Phương thức GET gửi thông tin người dùng được mã hóa được thêm vào yêu cầu trang. Trang và thông tin được mã hóa được phân cách bởi dấu (?).

    http://www.test.com/index.htm?name1=value1&name2=value2

    Phương thức GET tạo ra một chuỗi dài xuất hiện trong nhật ký máy chủ của bạn, trong hộp Location: của trình duyệt. Phương thức GET bị hạn chế chỉ gửi tối đa 1024 ký tự.

    Không bao giờ sử dụng phương thức GET nếu bạn có mật khẩu hoặc thông tin nhạy cảm khác được gửi đến máy chủ.

    GET không thể được sử dụng để gửi dữ liệu nhị phân, như hình ảnh hoặc tài liệu từ, đến máy chủ. Dữ liệu được gửi bằng phương thức GET có thể được truy cập bằng biến môi trường QUERY_STRING. PHP cung cấp mảng kết hợp $ _GET để truy cập tất cả các thông tin được gửi bằng phương thức GET.

    Hãy thử ví dụ sau bằng cách đặt mã nguồn trong tập lệnh test.php.

    <?php

      if( $_GET["name"] || $_GET["age"] ) {

         echo "Welcome ". $_GET['name']. "<br />";

         echo "You are ". $_GET['age']. " years old.";

         exit();

      }

    ?>

    <html>

      <body>

         <form action = "<?php $_PHP_SELF ?>" method = "GET">

            Name: <input type = "text" name = "name" />

            Age: <input type = "text" name = "age" />

            <input type = "submit" />

         </form>

      </body>

    </html>

    Nó sẽ tạo ra kết quả sau:

     

    + Phương thức POST

    Phương thức POST chuyển thông tin qua các tiêu đề HTTP. Thông tin được mã hóa như được mô tả trong trường hợp phương thức GET và được đưa vào tiêu đề có tên QUERY_STRING. Phương thức POST không có bất kỳ hạn chế nào về kích thước dữ liệu được gửi đi.

    Phương thức POST có thể được sử dụng để gửi ASCII cũng như dữ liệu nhị phân.

    Dữ liệu được gửi bằng phương thức POST đi qua tiêu đề HTTP để bảo mật phụ thuộc vào giao thức HTTP. Bằng cách sử dụng HTTP bảo mật, bạn có thể đảm bảo rằng thông tin của bạn được bảo mật.

    PHP cung cấp mảng kết hợp $ _POST để truy cập tất cả các thông tin được gửi bằng phương thức POST.

    Hãy thử ví dụ sau bằng cách đặt mã nguồn trong tập lệnh test.php.

    <?php

      if( $_POST["name"] || $_POST["age"] ) {

         if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {

            die ("invalid name and name should be alpha");

         }

         echo "Welcome ". $_POST['name']. "<br />";

         echo "You are ". $_POST['age']. " years old.";

         exit();

      }

    ?>

    <html>

      <body>

         <form action = "<?php $_PHP_SELF ?>" method = "POST">

            Name: <input type = "text" name = "name" />

            Age: <input type = "text" name = "age" />

            <input type = "submit" />

         </form>

      </body>

    </html>

    Nó sẽ tạo ra kết quả sau:

     

    + Biến $ _REQUEST

    Biến PHP $ _REQUEST chứa nội dung của cả $ _GET, $ _POST và $ _COOKIE. Chúng tôi sẽ thảo luận về biến $ _COOKIE khi chúng tôi sẽ giải thích về cookie.

    Biến PHP $ _REQUEST có thể được sử dụng để lấy kết quả từ dữ liệu biểu mẫu được gửi với cả hai phương thức GET và POST.

    Hãy thử ví dụ sau bằng cách đặt mã nguồn trong tập lệnh test.php.

    <?php

      if( $_REQUEST["name"] || $_REQUEST["age"] ) {

         echo "Welcome ". $_REQUEST['name']. "<br />";

         echo "You are ". $_REQUEST['age']. " years old.";

         exit();

      }

    ?>

    <html>

      <body>

         <form action = "<?php $_PHP_SELF ?>" method = "POST">

            Name: <input type = "text" name = "name" />

            Age: <input type = "text" name = "age" />

            <input type = "submit" />

         </form>

      </body>

    </html>

    Ở đây $ _PHP_SELF biến chứa tên của kịch bản tự mà nó đang được gọi.

    Nó sẽ tạo ra kết quả sau:

    2. So sánh GET với POST

    Cả GET và POST tạo một mảng (ví dụ mảng (key => value, key2 => value2, key3 => value3, ...)). Mảng này chứa các cặp khó/giá trị, trong đó các khóa là tên của các điều khiển biểu mẫu và các giá trị là dữ liệu đầu vào từ người dùng.

    Cả GET và POST đều được coi là $ _GET và $ _POST. Đây là superglobals, có nghĩa là chúng luôn có thể truy cập, bất kể phạm vi - và bạn có thể truy cập chúng từ bất kỳ hàm, lớp hoặc tệp nào mà không phải làm bất cứ điều gì đặc biệt.

    $ _GET là một mảng các biến được truyền cho tập lệnh hiện tại thông qua các tham số URL.

    $ _POST là một mảng các biến được truyền cho kịch bản lệnh hiện tại thông qua phương thức HTTP POST.

    Khi nào sử dụng GET?

    Thông tin được gửi từ một biểu mẫu có phương thức GET hiển thị cho tất cả mọi người (tất cả các tên và giá trị biến được hiển thị trong URL). GET cũng có giới hạn về lượng thông tin cần gửi. Giới hạn là khoảng 2000 ký tự. Tuy nhiên, vì các biến được hiển thị trong URL, bạn có thể đánh dấu trang. Điều này có thể hữu ích trong một số trường hợp.

    Khi nào sử dụng POST?

    Thông tin được gửi từ một biểu mẫu có phương thức POST là ẩn với người khác (tất cả các tên / giá trị được nhúng bên trong phần thân của yêu cầu HTTP) và không có giới hạn về lượng thông tin cần gửi.

    Hơn nữa POST hỗ trợ chức năng nâng cao như hỗ trợ cho đầu vào nhị phân nhiều phần trong khi tải tệp lên máy chủ. Tuy nhiên, vì các biến không được hiển thị trong URL, bạn không thể đánh dấu trang đó.

    Qua bài viết này các bạn đã không chỉ được tìm hiểu về phương thức $_POST trong PHP mà còn tìm hiểu được về phương thức GET. Hãy tiếp tục theo dõi những bài tập tiếp theo của chúng tôi về lập trình PHP.

    Một số kiến thức về PHP khác bạn nên đọc:

Đánh giá của học viên đã tốt nghiệp

  • Các anh chị nhiệt tình, thân thiện. Em được mở mang nhiều kiến thức

    Nguyễn Hằng ly
  • Các chị dạy rất dễ hiểu và nhiệt tình. Các kiến thức như trong thực tế khi em đi thực tập tại RikkeiSoft. Cám ơn các anh chị nhiều ạ. Chúc Dev có nhiều học viên hơn nữa.

    Vũ Thị Hà Phương
  • Học ở DevPro đã giúp mình có nhiều kinh nghiệm lập trình android thực tế. Tại đây mình được các thầy dạy rất chi tiết theo một lộ trình rõ ràng của dự án cụ thể nên sau này đi làm mình rất dễ bắt nhịp với công việc.

    Nguyễn Trọng Duy
  • Qua khoá học ở DevPro thì em đã có một “ít” vốn trong tay để có thể "bò" trong lĩnh vực vạn người mê này Trong qúa trình học thì em cảm thấy trung tâm suppost rất nhiệt tình từ đồ ăn tối, event và đầu ra :p. Có chị Quyên "sinh gái" siêu nhây và siêu lầy dụ dỗ bán rẻ học viên cho các nhà tuyển dụng :3 **** Đặc biệt các thầy có rất nhiều kinh nghiệm chỉ dạy và giúp đỡ rất nhiệt tính < mấy tháng liền bám càng đi nhờ thấy :p>

    PhạmTiến Đạt
  • Tôi sẽ không khuyên các bạn phải đến DevPro để học tập thay vì những chỗ khác nhưng tôi đã từng là một người giống các bạn. Tôi băn khoăn không biết chọn nơi đâu làm ngọn đèn chỉ lối và tôi đến với Devpro . Mọi người khá hoà đồng , các thầy cũng cực nhiệt tình nhưng cũng có vốn kiến thức rất rộng còn lại là phụ thuộc vào sự nỗ lực của các bạn nữa thôi. Cố lên nhé. #ATran

    Trần Xuân Ái
  • em thấy mọi thứ đều ổn, thầy giáo nhiệt tình trong cách giảng dậy, dev cũng rất quan tâm học viên . Nhưng theo quan điểm của em và nhìn từ sự phát triển của các trung tâm khác , em nghĩ mỗi khóa học ở dev nên có bài tập cũng như dự án giao cho học sinh làm để tạo áp lực cho học viên code, giữa học viên và công ty cần có những buổi giao lưu nhiều hơn, và cũng nên có 1 số bạn trợ giảng giúp thầy đi fix những lỗi cơ bản cho những bạn hay sai , chứ nhiều khi 1 mình thầy mà phải chạy đến từng bàn fix lỗi cũng k xuể , Xin chúc devpro ngày càng phát triển hơn

    Nguyễn Đình Thành
  • Thầy giáo dạy rất nhiệt tình rất dễ hiểu, các chị quản lý vui vẻ, tạo động lực học viên. Bài giảng phong phú bao gồm nhiều kiến thức nền tảng. .., giúp học viên nắm chắc kiến thức. Có điều lớp toàn nam, ko có nữ ạ

    Vũ Văn Thủy
  • -Thầy giáo rất nhiệt tình trong công tác giảng dạy , cũng như vui tính , thầy luôn giúp đỡ bọn e rất nhiệt tình ! Tuy chỉ học với lớp 1 thời gian không quá dài nhưng e cũng cảm thấy tuyệt vời vì đã từng là học trò của thầy ! - Chị Hằng và Chị Quyên rất vui tính và nhiệt tình giúp đỡ bọn e nữa ạ - e chúc trung tâm ngày càng đông học viên hơn nữa

    Phan Trung Phú
  • DevPro là một môi trường tốt để cho những ai chưa biết gì về lập trình theo học. Bên cạnh đó, đội ngũ giảng viên rất chất lượng, nhiệt tình chỉ bảo cả trên lớp lẫn ở nhà. Ngoài ra tôi rất thích chính sách giới thiệu việc làm cho học viên sau khi tốt nghiệp để có thể tiếp với các doanh nghiệp uy tín. Sau hơn 4 tháng học tập tại công ty, tôi đã hoàn toàn tự tin rằng mình có thể tự học hỏi và bắt đầu làm việc ở một công ty mới với vai trò Web Developer. Cảm ơn DevPro vì tất cả!!

    Nguyễn Đức Huy
  • Học một lúc 2 trường, nhưng mình vấn chưa biết tìm đam mê từ đâu. Từ lúc gặp chị Hằng mình đã quyết chọn theo android, và bây giờ mình chưa bao giờ thấy hạnh phúc đến thế. Mình có công việc ổn định, chuẩn bị onsite ở nhật 1 năm hi hi.

    Trần An Hưng
  • 1.Thầy đẹp trai thì không phải bàn rồi!! Lại được cái nhiệt tình!! ok. 2. Công ty có nhiệt tình hỗ trợ không? Công ty có nhiệt tình hỗ trợ sinh viên, vd:tiền học phí được chia làm 3 đợt giúp đỡ những sv khó khăn,.....

    Trương Quang Trường
  • Em thấy trung tâm dạy tốt và chất lượng ạ. Thầy và các chị đều tận tâm, nhiệt tình và hòa đồng. Đặc biệt là giải lao giữa giờ chúng em còn được ăn nhẹ, e rất thích khoản này.

    Trần Thị Hồng Nhung
  • Tại DevPro mình còn được học code trên tool mới nhất của Android, điều đó càng khiến mình thích thú hơn và trở nên say mê từ lúc nào không biết nữa. Không khí học ở đây rất vui vẻ, ngoài giờ học mình cùng các bạn còn được giải lao ăn nhẹ và trò chuyện cùng nhau nên rất thoải mãi.

    Trương Ngọc Đức
  • Dev chính là nơi giúp mình tìm thấy niềm yêu thích code, cũng chính là nơi đã cho mình những bước đi đầu tiên, cho mình những kiến thức nền tảng tốt nhất trên con đường theo đuổi nghề Dev.

    Nguyễn Thanh Hằng
  • Thầy giáo vui tính, nhiệt tình trả lời và giúp đỡ các bạn khi các bạn có thắc mắc hay khi gặp khó khăn. Các anh chị vui tính, thân thiện tạo cảm giác thoải mái và vui vẻ cho các bạn khi học ở đây.

    Cao Minh Lâm
  • Nghĩ lại hồi đấy, không có Devpro thì chắc giờ em phát rồ mất thôi! Em vốn nghĩ mình có thể tự học được, nhưng kiến thức vốn là vô tận, không có người hướng dẫn thì mình sẽ chẳng biết bắt đầu dư lào, bước tiếp là gì? Nhờ DevPro, sự tận tâm của các thầy mà em mới biết à hóa ra mọi thứ thật đơn giản.

    Kim Erico
  • Hồi học ở DevPro, mình rất quý thầy Việt và những người bạn. Từ kiến thức học được từ trung tâm mình đã mạnh dạn đi thực tập ở một công ty lớn của Nhật Bản và đến giờ đã là nhân viên chính thức ở đây rồi. Vui hơn nữa là có bạn học cùng lớp đó giờ đang là đồng nghiệp cùng mình luôn rồi. Hihi

    Nguyễn Thanh Việt
Nguyễn Hằng ly Vũ  Thị Hà Phương Nguyễn Trọng Duy PhạmTiến Đạt Trần Xuân Ái Nguyễn Đình Thành Vũ Văn Thủy Phan Trung Phú Nguyễn Đức Huy Trần An Hưng Trương Quang Trường Trần Thị Hồng Nhung Trương Ngọc Đức Nguyễn Thanh Hằng Cao Minh Lâm Kim Erico Nguyễn Thanh Việt