DevDungeon
- Labs
Knowledge
Social
DevDungeon
Knowledge
Social
This is an old revision of the document!
PHP is a web-native language that essentially embeds itself within HTML.
While the wiki is still being built, refer to: https://www.devdungeon.com/topics/php and https://github.com/DevDungeon/Cookbook/tree/master/php
In Debian and most Linux distributions, it's as simple as using the package manager:
apt install php php-pdo-sqlite php --version # For Apache2 httpd apt install apache2 libapache2-mod-php
See the web servers page for more info on configuring
<?php // The ini_set options could go in php.ini ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
PHP has a built-in web server that is useful for local developing and testing.
# Serves current directory, no directory listing php -S localhost:9999 # Specify path to serve php -S localhost:9999 -t /path/to/serve
Here are some snippets for reference.
Here is a simple “Hello world” application.
<?php echo "Hello, world!";
Run this example with the php
interpreter:
php hello.php
<?php // Pick one method for loading another PHP file include('my_lib.php'); // Include if available require('my_lib.php'); // Fail if not available require_once('my_lib.php'); // Ensure not loaded twice
<html> <body> <?php if ($_POST['something']) { print("Received: " . $_POST['something']; } <form method="post"> <input type="text" name="something" id="something" /> <br /> <button type="submit">Submit</button> </form> </body> </html>
Use the PHP function header() to send a new Location
header.
<?php // Set HTTP header to redirect // Must go before any content is output header('Location: /'); // Defaults to 302 // Or specify status code //header('Location: /', TRUE, 301); exit; // If you want to ensure nothing else gets output
This example is for SQLite3 using the PHP PDO_SQLITE, but essentially the same for other databases too.
apt install php-pdo-sqlite
<?php // Connect (Use `sqlite::memory:` for memory-only) $db = new PDO('sqlite:'.__DIR__.'/bookmarks.sqlite3'); // Create table $db->exec( "CREATE TABLE IF NOT EXISTS urls ( url TEXT, notes TEXT )" ); // Prepared statement for changes $query = $db->prepare('INSERT INTO urls (url) VALUES (?)'); $query->execute(['https://www.devdungeon.com/']); // Query $result = $db->query('SELECT * FROM urls'); foreach ($result as $result) { print($result['url'].'<br />'); } $db = null; // Close it