:-y

Kriss blog

vendredi 20 avril 2012 - 20:47

Bienvenue à toi petit Mathis !

Ce n'était pas prévu pour tout de suite, mais je suis tontof pour la deuxième fois depuis hier soir. Au moins ce ne sera pas compliqué pour retenir les anniversaires.

Chose promise chose due, voici le code de kriss blog. Le nom est sans surprise inspiré du principe de programmation KISS. J'ai hésité à changer de nom, mais même si je compte garder le principe minimaliste de picoblog proposé par BohwaZ, les fonctionnalités que j'ai et que je compte ajouter vont rendre kriss blog différent du projet original.

La TODO list est encore très sommaire, mais j'envisage de :
- convertir en html5
- sauvegarder automatiquement l'édition d'articles
- coder en utilisant la syntaxe PEAR
- pouvoir poster des messages futurs automatiquement

J'ai déjà fait quelques modifications importantes :
- mise en place d'une procédure d'installation
- ajout d'un titre par article
- ajout des commentaires
- ajout d'un captcha

Pour le captcha, une petite classe php et le tour est joué. J'ai cherché des polices ASCII pour m'en créer une petite perso :
 _   _   __  _   __  __  __     ___ ___         _ _ 
|_| |_) | | \ |__ |_ / _ |_| | | |_/ | |||
| | |_) |__ |_/ |__ | \_/ | | _|_ _| | \ |__ | |
__   _   _   _   _   _  ___                     ___ 
| | / \ |_| | | |_| (_ | | | \ / \ / \_/ |_| /
| | \_/ | |_\ | \ _) | |_| v w / \ _| /__
 _       _   _       _   _   __  _   _  
|/| /| _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| / |_| _|


Il est possible de définir sa propre police, il suffit juste que les caractères soient de la même largeur. Par défaut, le constructeur utilise la police ci-dessus. Et pour finir, voici cette petite classe qui permet de générer une chaîne automatiquement et de l'encoder facilement pour obtenir un captcha dans une balise pre.


<?php 
/**
 * Captcha management class
 * 
 * Features:
 * - Use an ASCII font by default but can be customized
 *   (letter width should be the same)
 * - generate random strings with 5 letters
 * - convert string into captcha using the ASCII font
 */

class Captcha
{
    public 
$alphabet="";
    public 
$alphabet_font;
    public 
$col_font 0;
    public 
$row_font 0;

    public function 
__construct($alpha_font=array(
                                    
'A'=>" _ |_|| |",
                                    
'B'=>" _ |_)|_)",
                                    
'C'=>" __|  |__",
                                    
'D'=>" _ | \\|_/",
                                    
'E'=>" __|__|__",
                                    
'F'=>" __|_ |  ",
                                    
'G'=>" __/ _\\_/",
                                    
'H'=>"   |_|| |",
                                    
'I'=>"___ | _|_",
                                    
'J'=>"___ | _| ",
                                    
'K'=>"   |_/| \\",
                                    
'L'=>"   |  |__",
                                    
'M'=>"_ _|||| |",
                                    
'N'=>"__ | || |",
                                    
'O'=>" _ / \\\\_/",
                                    
'P'=>" _ |_||  ",
                                    
'Q'=>" _ | ||_\\",
                                    
'R'=>" _ |_|| \\",
                                    
'S'=>" _ (_  _)",
                                    
'T'=>"___ |  | ",
                                    
'U'=>"   | ||_|",
                                    
'V'=>"   \\ / v ",
                                    
'W'=>"   \\ / w ",
                                    
'X'=>"   \\_// \\",
                                    
'Y'=>"   |_| _|",
                                    
'Z'=>"___ / /__",
                                    
'0'=>" _ |/||_|",
                                    
'1'=>"    /|  |",
                                    
'2'=>" _  _||_ ",
                                    
'3'=>" _  _| _|",
                                    
'4'=>"   |_|  |",
                                    
'5'=>" _ |_  _|",
                                    
'6'=>" _ |_ |_|",
                                    
'7'=>" __  | / ",
                                    
'8'=>" _ |_||_|",
                                    
'9'=>" _ |_| _|"),
                                
$row_font=3){
        
$this->alphabet_font $alpha_font;

        
$keys array_keys($this->alphabet_font);

        foreach (
$keys as $k){
            
$this->alphabet .= $k;
        }

        if (
$keys[0]){
            
$this->row_font $row_font;
            
$this->col_font =
                (int)
strlen($this->alphabet_font[$keys[0]])/$this->row_font;
        }
    }

    public function 
generateString($len=5){
        
$i=0;
        
$str='';
        while (
$i<$len){
            
$str.=$this->alphabet[mt_rand(0,strlen($this->alphabet)-1)];
            
$i++;
        }
        return 
$str;
    }

    public function 
convertString($str_in){
        
$str_out="\n";
        
$str_out.='<pre>';
        
$str_out.="\n";
        
$i=0;
        while(
$i<$this->row_font){
            
$j=0;
            while(
$j<strlen($str_in)){
                
$str_out.= substr($this->alphabet_font[$str_in[$j]],
                                  
$i*$this->col_font,
                                  
$this->col_font)." ";
                
$j++;
            }
            
$str_out.= "\n";
            
$i++;
        }
        
$str_out.='</pre>';
        return 
$str_out;
    }
}
 
?>

Comments

1 - @ - mamamaryline

Salut Tontof,
sympa ton site, bien sur je ne comprends pas tout !!!
j'aime bien ton alphabet :-)
bises

2 - @ - bohwaz

Génial, bravo :)

Content que picoBlog ait servi de base !

3 - @ - tontof

@bohwaz : Merci à toi pour picoBlog !
J'ai essayé de garder l'esprit de la simplicité originelle.
New comment







      __   __            
|  | /  \ /  \   /  |  | 
|  | | /| |     /   |  | 
\  / |/ | |    /_|_ |/\| 
 \/  \__/ \__/   |  |  |