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