PAD - PHP Application Driver


home | manual | reference | regression | sequence | develop | apps


Guestbook

PHP
guestbook.php
HTML
guestbook.pad
Result
<?php

$title
= 'Guestbook';
$dataFile = DAT . 'demo/guestbook.json';
$message = '';
$error = '';

if ( !
is_dir ( DAT . 'demo' ) )
@
mkdir ( DAT . 'demo', 0755, TRUE );

$entries = [];
if (
file_exists ( $dataFile ) ) {
$json = file_get_contents ( $dataFile );
$entries = json_decode ( $json, TRUE ) ?: [];
}

if (
$_SERVER['REQUEST_METHOD'] == 'POST' && $action == 'add' ) {
$name = trim ( $name ?? '' );
$comment = trim ( $comment ?? '' );

if (
$name && $comment ) {
$entry = [
'name' => htmlspecialchars ( $name ),
'comment' => htmlspecialchars ( $comment ),
'date' => date ( 'Y-m-d H:i:s' )
];
array_unshift ( $entries, $entry );
file_put_contents ( $dataFile, json_encode ( $entries, JSON_PRETTY_PRINT ) );
$message = 'Thank you for signing the guestbook!';
}
else
$error = 'Please fill in both name and message.';
}

$hasEntries = count ( $entries ) > 0;

?>
<p>Sign our guestbook and leave a message for other visitors!</p>

{if $message}
<div class="message">{$message}</div>
{/if}

{if $error}
<div class="message error">{$error}</div>
{/if}

<h2>Sign the Guestbook</h2>

<form method="post">
<input type="hidden" name="action" value="add">
<p>
<label>Your Name:</label><br>
<input type="text" name="name" required>
</p>
<p>
<label>Your Message:</label><br>
<textarea name="comment" rows="4" required></textarea>
</p>
<p>
<input type="submit" value="Sign Guestbook">
</p>
</form>

<h2>Guestbook Entries</h2>

{if $hasEntries}
{entries}
<div class="guest-entry">
<div class="guest-name">{$name}</div>
<div class="guest-date">{$date}</div>
<p>{$comment}</p>
</div>
{/entries}
@else@
<p>No entries yet. Be the first to sign!</p>
{/if}

Sign our guestbook and leave a message for other visitors!

Sign the Guestbook



Guestbook Entries

No entries yet. Be the first to sign!




home | manual | reference | regression | sequence | develop | apps

(c) 2003-2025 Herbert Groot Jebbink