var Phenix = function () {
Troll du Web depuis 1996

PHP

Anti-hack des arguments

  1. //-- anti hack des arguments --------------------------------------
  2. function check_arg($key,$type='s',$pardefaut='',$len=80) {
  3.  
  4.  // change l'odre de $_REQUEST[$key]
  5.  
  6.  if($key=="email") {
  7.    if(isset($_GET[$key] )) { $arg = $_GET[$key]; }
  8.    else {
  9.      if(isset($_POST[$key] )) $arg = $_POST[$key];
  10.      else
  11.            if(isset($_COOKIE[$key] )) $arg = $_COOKIE[$key];
  12.            else if(isset($_SESSION[$key] )) $arg = $_SESSION[$key];
  13.          else $arg=$pardefaut;  
  14.    }
  15.  }
  16.  else {
  17.   if(isset($_REQUEST[$key])) $arg = $_REQUEST[$key];
  18.   else $arg=$pardefaut;  
  19.  }
  20.  
  21.   switch ($type) {
  22.     case 's': // string
  23.             $arg = substr($arg,0,$len);
  24.       break;
  25.     case 'sd': // string database
  26.       $trans = array("%" => "", "," => "", ";" => "");          // anti hack db
  27.       $arg =  trim(strtr(substr($arg,0,$len),$trans));
  28.       break;
  29.     case 'n':  // nombre
  30.           $arg = $arg + 0;
  31.     default:
  32.       $arg = trim($arg);
  33.   }  
  34.  
  35.   return($arg);
  36. }

Si quelqu’un comprend ce qui ce passe, qu’il n’hésite pas à m’éclairer...

Mention spécial pour ce passage :

  1.  $trans = array("%" => "", "," => "", ";" => "");               // anti hack db
  2.  $arg =  trim(strtr(substr($arg,0,$len),$trans));

Worlpress...

  1. include_once("config.php");
  2. $config['run_include'] = ""; // execution pas inclus dans worldpress
  3. include_once("mlist.php");

Non, je sais que Wordpress a une grosse part du marché des CMS, mais quand même...


Un moteur de recherche dans les catégories #Wordpress

Avoir un petit moteur de recherche pour les articles d’une catégorie Wordpress est en fait assez simple, pas besoin de ce lancer dans une chasse aux plugins.

Cela ne demande qu’un petit formulaire à mettre dans le template de catégorie.
Si vous n’avez pas envie de l’avoir dans toutes les catégories, vous pouvez simplement créer un template category-(slug ou ID).php.

  1. <form action="./" method="get">
  2.         <input name="search" type="text" value="<?php echo $_GET['search']; ?>" placeholder="Recherche" />
  3.         <input type="submit" value="Recherche"/>
  4. </form>

Et ensuite une petite WP_Query qui va faire tout le boulot :

  1. <?php
  2. $args = array(
  3. 's' => ($_GET['search']) ?: null, // Un opérateur Elvis, parce que c'est cool !
  4. 'cat' => $cat // L'ID de la catégory
  5. );
  6. $query = new WP_Query( $args );
  7.  
  8. while ( $query->have_posts() ) : $query->the_post();
  9. get_template_part( 'content', 'single' ); // A vous d'avoir un template pour afficher tout ça hein !
  10. endwhile;
  11. wp_reset_postdata();

Rien de sorcier donc, et surtout pas de faille de sécurité plugin usine à gaz d’installer pour faire ce formulaire.


Exectuer du code quand un auteur est ajouté à #SPIP

Lorsqu’on ajoute un auteur, on a parfois envie d’automatiser certaine action : ajout automatique dans une zone d’accès restreint, ajout de mots-clés, ou tout simplement envoyer un mail.

Du coup, voici un pipeline qui fera le travail ! Il pourrait y avoir un effet indésirable cependant : lorsqu’un auteur est ressuscité de la corbeille, le pipeline se déclenche à nouveau.
Si c’est un problème, le pipeline post_insertion peut aussi être utilisé. Il contient cependant beaucoup moins d’information que post_edition.

  1. <?php
  2. function prefix_post_edition($flux) {
  3.         if ($flux['args']['table'] == table_objet_sql('auteur')
  4.                 and $flux['args']['action'] == 'instituer'
  5.                 and $flux['args']['statut_ancien'] == '5poubelle'
  6.         ) {
  7.                 $id_auteur = $flux['args']['id_objet'];
  8.                 $statut = $flux['data']['statut'];
  9.                 // Coder ici !
  10.         }
  11.  
  12.         return $flux;
  13. }

Executer du code lorsqu’un article #SPIP est publié

Petit pipeline SPIP cool : quand un article SPIP est publié, on exécute le code.

Pratique par exemple pour envoyer une notification spéciale.

  1. <?php
  2. function prefix_post_edition($flux) {
  3.         if ($flux['args']['table'] == table_objet_sql('article')
  4.                 and $flux['args']['action'] == 'instituer'
  5.                 and $flux['args']['statut_ancien'] != 'publie'
  6.                 and $flux['data']['statut'] == 'publie'
  7.         ) {
  8.                 $id_article = $flux['args']['id_objet'];
  9.                 // Coder ici !
  10. }