PHP Classes

File: colorlog.php

Recommend this page to a friend!
  Classes of Ryan Cole   PHP Emulated SQL Filesystem   colorlog.php   Download  
File: colorlog.php
Role: Example script
Content type: text/plain
Description: Example
Class: PHP Emulated SQL Filesystem
Emulate a filesystem storing files in SQL database
Author: By
Last change: Added login example in comments
Date: 8 years ago
Size: 2,679 bytes
 

Contents

Class file image Download
<?php
# This script allows a user to make post their favorite color on the website.
# This program is a demostration of basic file handling methods in SQLEFS.
# See it in action at: http://practicalproductivity.com/sqlefs/colorlog.php

### This file just handles your login details and sets the volume. ###
require_once 'sqlefs_login.php';

### Or you could specify that stuff in your script like so ###
# require_once '../sqlefs.class.php';
# $efs = new efsclass();
# $efs->connect('mysql:mysql:host=localhost;dbname=myefsdb name pass');
# $efs->cd('c:/');

$showlen = 10; # show this many entries
$namelen = 25; # max length of name
$do = isset($_REQUEST['color']) ? 'post' : 'view';

### Set the current working directory. ###
$efs->cd('/submissions/');

# view comments
if ($do == 'view') {
   
$content = '<h1>Visitors Favorite Colors</h1>';

   
$content .= '
        <p>Enter your name and favorite color!</p>
        <div>
        <form role="form" method="post" enctype="multipart/form-data">
        <input type="text" name="name" placeholder="Name" size="'
. $namelen . '">
        <input type="color" name="color">
        <input type="submit">
        </form>
        </div>
    '
;

   
### Retrieve a listing of files and reverse it so newest are first. ###
   
$files = array_reverse($efs->ls());

   
# list each entry. We also reverse them to see newest first
   
foreach ($files as $file) {

       
### Load our file as serialized data. ###
       
$submission = $efs->load($file);

       
$content .= '<div class="name">' . $submission['name'] . '</div>' ;
       
$content .= '<div class="color" style="background-color: ' . $submission['color'] . '"></div>' ;
    }
}

# post a color
if ($do == 'post') {
   
$content = '<b>Thanks for posting!</b>';
   
$name = htmlspecialchars( substr($_REQUEST['name'], 0, $namelen) );
    if (
$name === '') {$name = 'Anonymous';}
   
$color = htmlspecialchars($_REQUEST['color']);
   
$data = array('name' => $name, 'color' => $color);
   
$filename = crc32($name . $color);

   
### Save data in serialized format. ###
   
$efs->save($filename, $data);

   
# We intend to limit the number of entries we show...
    # SQLEFS orders file listings by oldest first by default,
    # so we'll just delete the first files in the listing
    # until we have the right number to show.

    ### Retrieve file listing. ###
   
$files = $efs->ls();

   
$trimcount = count($files) - $showlen;
    while (
$trimcount > 0) {

       
### Delete the file removed from the array. ###
       
$efs->rm( array_shift($files) );

       
$trimcount -= 1;
    }
   
$content .= '<hr><a href="colorlog.php">view entries</a>';
}

?><html>
<head><head>
<style>
.name {width: 200px;text-align: center;}
.color {width: 200px;height: 25px;}
</style>
<body>
<?php echo $content; ?>
</body>
</html>