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
sympa ton site, bien sur je ne comprends pas tout !!!
j'aime bien ton alphabet :-)
bises
jeudi 14 juin 2012 - 11:14
2 - @ - bohwaz
Content que picoBlog ait servi de base !
lundi 08 avril 2013 - 14:04
3 - @ - tontof
J'ai essayé de garder l'esprit de la simplicité originelle.
lundi 08 avril 2013 - 20:00