29 juil. 2009

un Menu: Génération récursive de HTML par PHP

0 commentaires
Vous avez en PHP un tableau (array) de tableau(x), avec plusieurs sous-niveaux de préférence, sinon c'est pas drôle, et
vous voudriez un joli menu à base de liste de listes ?
Kane l'a fait pour vous… Et en Récursif !
[PasteBin]
--
Kane Thornwyrd

All your Base64 belong to MIME

1 commentaires
Il ne s'agit pas de Cats, mais de HTML, encodage de données et, je dois l'avouer, un petit hack entre amis…
Jetez donc un œil à ceci :
[PasteBin]

Et là je vous sens médusé……… Mais qu'est-ce que tous ce bordel ???
Simplement l'intégration, encodé en base64, des données binaires d'une image et interprété en tant que tel par votre navigateur favori…

C'est fortement déconseillé, car proche de l'obfuscation, et en terme de découplage données/présentation on a vu mieux, mais ça peut servir dans des cas extrêmes comme une application full Javascript (naaan je pense pas à TiddlyWiki ou à TiddlyScrum ).
--
Kane Thornwyrd

17 juin 2009

Les formulaires ont la mémoire courte !

0 commentaires
Eh bien raison de plus de leur rappeler :
[PasteBin]

--
Kane Thornwyrd

10 juin 2009

variables en POST : le PHP met sa casquette !

0 commentaires
Suite à :[PROG] Le Defi Geek #3, ou comment faire des redirections HTTP avec des valeurs de POST
Voici ma modeste contribution...

[PasteBin]
et pour l'utiliser :
[PasteBin]

Un petit peu "tricky" comme code, mais on y arrive quand on matte un peu ce qui passe dans les tuyaux avec Wireshark.
--
Kane Thornwyrd

4 juin 2009

le PHP a du caractère

2 commentaires
Suite à :[Prog] Le défi geek #2, ou comment faire pour recréer l’alphabet ! (ou de l'incrémentation de chaine)
Voici ma modeste contribution...
[PasteBin]

Eh oui, le PHP recèle des petits joyaux de simplification...
--
Kane Thornwyrd

1 juin 2009

Phatso, un Tweeto utilisable ?

0 commentaires
Dans mes recherches j'ai découvert Phatso, un framework PHP en une page, rien de très excitant si ce n'est sa taille et que je le trouve pas trop mal foutu...
[PasteBin]

Je vais détailler le code ici bientôt...

31 mai 2009

Au-delà du Framework PHP en 1 Tweet !

0 commentaires
C'est le bon vieux Tweeto, mais je souhaite pousser la réflexion plus loin...
<?php
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Salut !'; }))
throw new Exception('Error');
$c();
[PasteBin]
Bon c'est du PHP5.3, mais OMG ! Mais ça fait quoi ?

Détaillons ce script:

require __DIR__.'/c.php';
D'abord un "require" qui simplement importe le fichier demandé, en l'occurrence le fichier "c.php" qui se trouve dans le même répertoire. à noter la présence de "__DIR__" qui et une nouveauté qui, comme on peut s'en douter, est une constante renvoyant le répertoire d'exécution du script.


if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Salut !'; }))
En meta code compréhensible: si la variable $_GET['c'] n'est pas une fonction appelable, on continue, sinon on affiche "Salut !" grâce à la fonction anonyme (nouveauté aussi, existait en Java).


throw new Exception('Error');
Si on a continué, c'est à dire que $_GET['c'] n'est pas une fonction, on renvoi une erreur "Error".


$c();
Si on est là c'est que nous n'avons pas envoyé d'erreur, donc on execute la fonction qui se nomme du contenu de $_GET['c']

Oui, c'est génial, mais non IL NE FAUT PAS L'UTILISER car il n'est pas du tout secure !
C'est juste un "proof of concept" en bonne et due forme.

Perso j'aurai écris:
<?php
require 'c.php';
$a = $_GET['a'];
ob_start();
if(!is_callable($a))
header('Location:404.html');
@$a();
ob_end_flush();
[PasteBin]
Ça fait 16 caractères de moins et ça marche sous php 5+.

Et vous, vous avez des p'tit morceaux de code tout mimi comme ça ?