Suhosin: changer la taille maximale des paramètres GET

suhosinSi Suhosin est installé sur votre serveur, le nombre maximum de caractères par paramètre passé en GET est limité par défaut à 512.

Pour changer cette valeur il faut ajouter/modifier le paramètre suhosin.get.max_value_length soit dans le fichier /etc/php5/apache2/php.ini soit dans /etc/php5/conf.d/suhosin.ini.

Exemple:

suhosin.get.max_value_length = 1024

Puis /etc/init.d/apache2/reload pour qu’apache prenne en compte les changements.

Source: http://stackoverflow.com/questions/7724270/max-size-of-url-parameters-in-get

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

TheTvDb PHP API: Une librairie PHP simple d’utilisation pour TheTvDb

TheTvDb-PHP-API est une librairie PHP pour récupérer des informations sur les séries et épisodes depuis http://thetvdb.com/.

Elle permet  d’obtenir et de maintenir à jour un grand nombre d’informations sur les séries et épisodes comme par exemple:

  • La date de sortie des prochains épisodes
  • Le nom et la description des séries et épisodes
  • Le genre des séries
  • Le status des séries (en cours, terminée …)
  • La date de dernière mise à jour des informations

Voir/télécharger le projet sur GitHub

Exemple d’utilisation de la librairie:

/*
* TheTvDb Service Setup
*/
require_once dirname(__FILE__).'/Adapter.php';
$tvdb_adapter = Elios_Service_Thetvdb_Adapter::getInstance();
$tvdb_adapter->setApiKey("APIKEY");

$tvdb = new Elios_Service_Thetvdb_Thetvdb();

/*
* Get the current mirror
*/
$mirror = $tvdb->getAvailableMirror();

/*
* Get the current server time
* store this value in database for future updates
*/
$time = $tvdb->getServerTime();

$seriesT = new Elios_Service_Thetvdb_Series();
/*
* Search a serie by name
*/
$series = $seriesT->findByName("South Park","en");
foreach($series as $serie){
echo $serie->nom." ".$serie->thetvdb_id;
}

/*
* Now we use thedvdb_id to get full serie data
* Elios_Service_Thetvdb_Serie attributes:
*
* public $thetvdb_id;
* public $nom;
* public $imdb_id;
* public $language;
* public $overview;
* public $genre;
* public $lastupdated;
* public $banner;
* public $status;
*/
$serie = $seriesT->getSerie("75897","en");
echo $serie->nom;

/*
* Use $serie->getBanners() to get all banners for the serie.
* This method returns an array of Elios_Service_Thetvdb_Banner objects.
* Elios_Service_Thetvdb_Banner attributes:
* public $id;
* public $BannerPath;
* public $BannerType;
* public $BannerType2;
* public $Colors;
* public $Language;
* public $Rating;
* public $RatingCount;
* public $SeriesName;
* public $ThumbnailPath;
* public $VignettePath;
* public $basePath = "http://thetvdb.com/banners/";
*/

$banners = $serie->getBanners();


/*
* We can now retrieve all the episodes with $serie->getEpisodes()
* This method returns an array of Elios_Service_Thetvdb_Episode objects.
* Elios_Service_Thetvdb_Episode attributes:
*
* public $thetvdb_id;
* public $saison;
* public $saison_id;
* public $serie_id;
* public $language;
* public $episode;
* public $overview;
* public $lastupdated;
* public $firstAired;
* public $titre;
*/
$episodes = $serie->getEpisodes();

/*
* Use this function to get a list of updated items since your last update
*/
$data = $tvdb->getUpdateList($time);
print_r($data);

/*
* for each items of the $data array:
* use $episodeT->getEpisode('ID') && $seriesT->getSerie("ID","LANG") to retreive and store informations
*/
$episodeT = Elios_Service_Thetvdb_Episodes();
$episode = $episodeT->getEpisode('ID');
$serie = $seriesT->getSerie("ID","LANG");

Informations sur la librairie:

Ouvrir Elios/Service/Thetvdb/example.php pour un exemple d’utilisation.

L’utilisateur doit avoir les droits d’écriture sur le dossier cache. Il est utilisé pour stocker temporairement les fichiers zip récupérés depuis l’api tvdb.

Thetvdb.com est une base de donnée libre (wiki) qui stocke toutes les informations d’un très grand nombre de séries et épisodes.

Des informations sur l’API peuvent être trouvées ici: http://thetvdb.com/wiki/index.php/Programmers_API

Obtenir une API KEY : http://thetvdb.com/?tab=apiregister

3 réflexions au sujet de « TheTvDb PHP API: Une librairie PHP simple d’utilisation pour TheTvDb »

  1. Bonjour,

    je viens juste de commencer à regarder votre librairie, elle me semble très intéressante et je vais probablement l’utilisée donc tout d’abord merci pour le travail.
    Juste une petite remarque :
    vous avez oublié l’inclusion de la classe « Banner » dans l’adaptateur du coup cela retournait une erreur. J’ai donc rajouté :
    « require_once dirname(__FILE__).’/Banner.php’; »

    J’avais pourtant récupéré la dernière version du github.

    • Salut Ludovic,
      La librairie n’a jamais été terminée, les bannières et acteurs ne sont pas récupérés.

      N’hésite pas à envoyer tes ajouts sur github pour faire évoluer le projet 😉

      Bruce

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

File_get_contents sur une url protegée par htaccess

Voici une petite manip PHP pour faire un file_get_contents d’une URL protégée par un mot de passe:

$login = "votre login";
$password = "password";
$opts = array('http' =>
  array(
    'method'  => 'GET',//GET | POST
    'header'  => "Content-Type: text/html\r\n".
    "Authorization: Basic ".base64_encode($login.':'.$password)."\r\n",
    'timeout' => 300
  )
);
                      
$context  = stream_context_create($opts);
$url = "http://monsite.com/mapageprotegeeparmdp.php";
$result = file_get_contents($url, false, $context, -1, 40000);

Voila!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Une réflexion au sujet de « Équivalent de la fonction print_r en Javascript »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

file_get_contents : gestion des erreurs

Je sais pas si vous avez déjà essayé d’entourer la fonction file_get_contents($url) avec un try catch pour gérer les erreurs si l’url est incorrecte.
Moi j’ai essayé et ca ne marche pas..
La petite astuce pour empêcher d’afficher les erreurs/warnings éventuels c’est de rajouter un arobase devant la fonction:

<?php
  $content = @file_get_contents($url);
  //on test ensuite la valeur de $content
  if ($content== false) { 
   //Gestion des erreurs
  }
?>

De cette manière, les erreurs/warnings ne sont pas affichés à l’écran de l’utilisateur.

Une réflexion au sujet de « file_get_contents : gestion des erreurs »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Drupal – Comment récupérer les données d’un webform après soumission

Webform est un module Drupal très performant et complet qui permet de créer des formulaires. Le seul hic c’est que la landing page, la page de remerciements qui est affichée après la soumission d’un formulaire, n’est pas très configurable et ne permet pas d’afficher les données du formulaire fraîchement soumis.

Pour récupérer ces données et les afficher il faut modifier le fichier normalement situé dans /modules/webform/templates/webform-confirmation.tpl.php .

Dans cette page, les variables $node et $sid sont accessibles, on va les utiliser pour récupérer les données du formulaire:

<?php

include_once(drupal_get_path('module', 'webform') .'/includes/webform.submissions.inc');//ne pas oublier cette ligne.

//on utilise $node->nid (l'id du formulaire) et $sid (l'id de la soumission) pour récupérer les données.
$submission = webform_get_submission($node->nid, $sid);

//on boucle sur les différents champs du formulaire.
//(vous pouvez aussi faire un print_r($submission->data) pour identifier les différents champs que vous voulez récupérer.
foreach($submission->data as $data)
{
  echo $data['value'][0];
}

?>

5 réflexions au sujet de « Drupal – Comment récupérer les données d’un webform après soumission »

  1. Bonjour,

    Merci, pour cette astuce mais je voudrais pouvoir recuperer pour l’afficher l’id de la soumission mais pas l’id du formulaire.
    quelle page je peux modifier?
    j’ai testé token mais je ne trouve pas celui qu’il faut ?

    Merci,

    gaël

    • Gaël, je ne fais que reprendre le texte contenu dans l’astuce :
      //on utilise $node->nid (l’id du formulaire) et $sid (l’id de la soumission) pour récupérer les données.
      $submission = webform_get_submission($node->nid, $sid);

      Si tu regarde d’un peu plus près tu pourras y lire le commentaire : $sid (l’id de la soumission) pour récupérer les données. Je pense que cela répond grandement à ta question 😀

      Les gars, il serait bien de prendre le temps de regarder ce que l’auteur du code (qui s’est cassé la tête pour vous pondre une solution) vous affiche dans son code. En principe on comme par apprendre à marcher avant de vouloir courir … alors lisez avant de poster des questions !!!!!

  2. J’utilise des Webforms mais je n’arrive pas à trouver le moyen de générer des csv à chaque soumission correspondant au formulaire pour les envoyer dans le SI. Des pièces jointes sont également utilisées.
    Faire une fonction utilisant webform_results_export() est surement la solution ?

  3. Merci, c’est parfait. Pour ma part, ne voulant pas toucher au tpl du module, je l’ai fait sur un tpl d’une page vue de mon thème, puis une redirection en fin de formulaire en faisant passer en GET le $nid et $sid (tokens).
    Je n’ai pas eu besoin de la boucle foreach, j’ai tout visé avec $submission->data[‘value][0] .

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *