diff --git a/assets/templates/_table_of_contents.phtml b/assets/templates/_table_of_contents.phtml index cb71f4e..87cbbfa 100644 --- a/assets/templates/_table_of_contents.phtml +++ b/assets/templates/_table_of_contents.phtml @@ -31,6 +31,7 @@
  1. HTTP
  2. HTTP POST
  3. +
  4. PHP HTTP Server
Credits diff --git a/chapters/web/03-http-server.md b/chapters/web/03-http-server.md new file mode 100644 index 0000000..667105d --- /dev/null +++ b/chapters/web/03-http-server.md @@ -0,0 +1,58 @@ +In PHP, you usually use a separate web server program that accepts HTTP requests and passes them to PHP to create a response. Common examples of separate web server programs are Apache and Nginx. However, PHP has a built in web server we can use during development. + +To use the development web server, open a terminal and a new folder for holding your code. Create a file called `index.php` and put this PHP code in it: +```php +"; +foreach ($headers as $key => $header) { + echo "$key: $header
"; +} +``` +Reload `localhost:8080` and you will see the main request line and all of the headers printed on the web page. The `
` tag is HTML for a new line. Since we are outputting to a web browser, we can no longer use `"\n"` to create a new line. + +By default, PHP will generate the necessary response line and headers. If you open your browser console and open the network tab, you can see the response code and headers. +```http +HTTP/1.1 200 OK +Host: localhost:8080 +Date: Sun, 28 Apr 2019 10:19:25 -0500 +Connection: close +X-Powered-By: PHP/7.2.17 +Content-type: text/html; charset=UTF-8 +``` +PHP set the response code to `200 OK` and the content type to `text/html`. Even though PHP will output good defaults, we can change them in our code if we want. Update your `index.php` file with this code: +```php + 'HTTP POST', 'subtitle' => 'Sending data to a server', 'previous' => 'web/http', + 'next' => 'web/http-server', + ]), + Page::create('web/http-server', 'web/03-http-server.md', [ + 'title' => 'PHP HTTP Server', + 'subtitle' => 'Handling HTTP Requests in PHP', + 'previous' => 'web/http-post', 'next' => '', ]), ],