Deblan blog

Simon Vieille

DevOp animé par la culture du libre et du hacking

Bien utiliser empty() !

Je ne compte même plus le nombre de bouts de code que j'ai lu et où l'utilisation de empty() était inutile et foireuse !
empty() retourne false si ce qu'on test vaut :

  • "" (une chaine vide)
  • 0, null ou false
  • "0" (en tant que chaine de caractère)

Pas mal de monde utilise empty() pour tester si des données postées dans un formulaires sont vides ou pas, or, empty() retourna true si des espaces ont été insérés.

<?php

$test_1 = "";
$test_2 = '';
$test_3 = " ";
$test_4 = ' ';

if(empty($test_1))
  echo '$test_1 vide', "\n";
else
  echo '$test_1 non vide', "\n";


if(empty($test_2))
  echo '$test_2 vide', "\n";
else
  echo '$test_2 non vide', "\n";


if(empty($test_3))
  echo '$test_3 vide', "\n";
else
  echo '$test_3 non vide', "\n";


if(empty($test_4))
  echo '$test_4 vide', "\n";
else
  echo '$test_4 non vide', "\n";
?>
Résulat :
$test_1 vide
$test_2 vide
$test_3 non vide
$test_4 non vide

Il faut donc l'utiliser autrement...ou même prendre autre chose si on veut tester des champs de formulaires.

On pourrait dégager les caractères d'échappements (retours à la lignes, espaces, tabulations...) et pour cela, la fonction magique est trim() :

<?php
if(empty(trim("  "))) echo "Vide";
?>

Seulement, empty() va générer une erreur :

Note: empty() ne vérifie que les variables, toute autre chose retournera une erreur d'analyse. En d'autres termes, ce qui suit ne fonctionne pas : empty(trim($name)).

http://fr2.php.net/manual/fr/function.empty.php

L'ideal est donc d'utiliser trim() avant empty :

<?php
$var = " ";
$var = trim($var);
if(empty($var)) echo 'variable vide !';
else echo 'ok';

/* résulat : variable vide ! */

$var = "salut !";
$var = trim($var);
if(empty($var)) echo 'variable vide !';
else echo 'ok';

/* résulat : ok */
?>

On a donc utiliser correctement empty(), de plus, cela permet de vraiment savoir si les données ne sont pas vides.

Le problème de cette technique, c'est que ça devient lourd...en effet, si il y a des dizaines de variables a tester, ça va vite devenir agaçant !

On peut déjà créer une fonction :

<?php
function empty_($var) {
  $var = trim($var);
  return empty($var);
}

/* si on veut des paramètres multiples */

function empty_() {
  $bool = false;
  $args = func_get_args();
  
  foreach($args as $var) {
    $var = trim($var);
    if(empty($var)) {
      $bool = true;
    }
  }
  return $bool;
}
?>

Maintenant, il existe une fonction qui retourne le même résultat que empty_() mais où la fonction empty() n'est pas utilisée....A vous de voir ce que vous voulez !

J'espère donc que vous aurez compris ou je veux en venir et que si vous utilisez empty() pour tester des infos de types POST ou GET et bien faites attention :)


Grand concours NCIS !

Séries-sources où je suis co-webmaster vient d'annoncer un évènement important : le Grand Coucours NCIS !

Grand bonjour à toutes et à tous !

Aujourd'hui est un jour un peu spécial. Je vous avait annoncé dans le "Sound of Sources" n°7 qu'il y aurait quelques petites surprises prochainement, et bien aujourd'hui voici la première !

En effet je vous annonce l'ouverture du tout premier concours Séries-Sources en partenariat avec le site NCIS Online (merci à lui) et dont le thème principal est la série "NCIS" ! Eh oui, c'était prévu (enfin au dernier moment comme à mon habitude) pour le jour de l'arrivée sur M6 de la saison 4 de NCIS.

C'est quoi ce concours ? Combien de temps il durera ? Et on y gagne quoi ?

-- Le concours Séries-Sources est basé sur 10 questions (en QCM) ainsi qu'une petite énigme sans grande difficulté pour les fans de la série.

-- Le concours durera en théorie deux semaines. Mais il pourrait être allongé de quelques jours si il devait ne pas y avoir assez de participants .

--- Et oui il y a bien un prix à gagné lors de ce concours. Rien d'autre que le coffret 7 DVD de la saison 3 de NCIS ! (gagné = entièrement gratuit il va de soit :) ) Je suis sur que vous ne vous y attendiez pas hein ? [...]

Séries-sources.com

Comme vous pouvez le lire, le coffret 7 DVD de la saison 3 de NCIS est à gagner !

Venez nombreux !

En partenariat avec
ncisonline


Les Moteurs de templates

Avant propos
Mise en bouche :

Les avis sur les moteurs de templates sont assez partagés.
Avant de vous donner mon opinion sur le sujet, je vais brièvement expliquer le principe.

Le principe des templates est de séparer le code html, du code php (ou équivalent).
Donc on a d'un coté une, ou plusieurs pages html qui seront nos templates (ou modèles), ensuite on une page php qui va traiter des données et qui utilisera le moteur de templates qui lui va générer le rendu html.

Un schéma explicatif :

Moteur de templates

Allez, on commence...

Les principaux réfractaires expliquent simplement que Php est déjà un moteur de templates...et c'est vrai ! Quand on fait du php, on crée une page avec dedans du html et du php :

<title><?php echo 'Mon titre !'; ?></title>

Et le parseur php interprète le code php et renvoie le résultat html :

<title>Mon titre !</title>

Les mêmes réfractaires expliquent également que les moteurs de templates ralentissent l'affichage des pages et c'est également vrai. Cependant, est ce que vous vous êtes rendu compte que le site où vous êtes actuellement utilise un moteur de templates ?

Pour moi, il y a deux gros avantages aux templates :

  • Le code php est séparé du code html donc dans un travail en équipe (un codeur html et un autre codeur php par exemple), chacun peut travailler sans se soucier de l'autre. En effet, le codeur html ne pourra par casser un bout de code php et inversement, le codeur php n'a pas a se préoccuper du rendu html.

  • Si le site est voué à avoir plusieurs design, il sera très simple d'en changer. Quand séries-source est passé de la version 1 à la version 2, je n'ai pratiquement pas touché au php, et j'ai juste fait joujou avec du html. Si j'avais du reprendre toutes mes pages php, j'en aurais eu pour un max de temps.

Comme je l'ai dis un peu plus haut, j'utilise un moteur de templates, celui de phpbb pour être exact. Il est très simple à prendre en main et n'est composé que d'une class php.

Il existe quelques gros moteurs de templates tels que Smarty ou Phplib.
J'aurais quand même une remarque à faire sur Smarty qui a recréé un nouveau langage et qui pour moi, va un peu à l'encontre du prinicipe de templates.

Je vous invite a visiter ces différents liens, si vous voulez en savoir un peu plus sur le sujet :


En manque d'inspiration ?

En surfant sur le web, je me suis trouvé nez à nez devant un site web dédié au webdesign. Très jolie, de part les couleurs et son originalité, j'ai tout de suite été conquis.

Rassemblant des articles, des icones et encore d'autres ressources, ce site est idéal pour touver des idées sympas !

Voici N.Design Studio [en] !

Quelques réalisations :



Quelques liens...

Voici quelques liens web qui me paraissent intéressants à voir :

TV
Séries-sources

Séries-sources est le dernier site que j'ai developpé avec Anubis Lockheart. Il est ciblé sur les séries tv françaises et américaines. Des dossiers et des news sont faits régulièrement et bien qu'il ne soit pas inondé de monde, l'équipe du site se bouge pas mal pour que le site grandisse et devienne un jour, une référence dans ce domaine.

Musique
Psy4tra

Bien que je sois un poil allergique au rap, psy4tra.fr est un fan site créé par Thymotep, sur le groupe de rap "Psy4 de la rime". Pour tous les fans : allez y faire un tour !

Web
Kelio

Kelio est un service d'hébergement, dirigé par 2 personnes : Mogui et Vinux. Gratuit et simple d'accès, c'est une bonne solution d'hébergement pour des sites de petite et moyenne envergure.

Forum Création de Sites web

Parmi les nombreux forums de jeuxvideo.com, il en existe un où boulets et trolls ne font pas la loi ! Le forum n°30 : Création de Sites web, m'est assez cher dans le sens ou j'y suis depuis mes débuts dans le monde du html. Une couille en html, css, js ou php, ce forum est la réponse à pas mal de vos soucis !