User Tools

Site Tools


programming:php

This is an old revision of the document!


PHP Programming

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

Installing

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

Show all errors

<?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);

Built-in webserver

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

Composer

Code examples

Here are some snippets for reference.

Hello world

Here is a simple “Hello world” application.

hello.php
<?php
echo "Hello, world!";

Run this example with the php interpreter:

php hello.php

Functions

functions.php
<?php
 
function greet($name, $greeting="Hi") {
  print("$greeting, $name!");
}
 
greet("NanoDano");  // Hi, NanoDano!

Include a PHP file

load_lib.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

Forms

form.php
<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>

Redirect

Use the PHP function header() to send a new Location header.

redirect.php
<?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

SQLite database

This example is for SQLite3 using the PHP PDO_SQLITE, but essentially the same for other databases too.

apt install php-pdo-sqlite

sqlite_example.php
<?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
programming/php.1618363155.txt.gz · Last modified: 2021/04/14 01:19 by nanodano