Récupérer des données JSON en PHP

Vous avez besoin de récupérer des données JSON envoyées à votre script PHP…

Alors vous utilisez les $_GET, $_POST, $_REQUEST, mais rien ne fonctionne…

Alors voici votre solution !

<?
$handle = fopen('php://input','r');
$jsonbrut = fgets($handle);
$datas=json_decode($jsonbrut,true);
?>

Et voilà, dans $datas, vous aurez vos données json sous la forme d’un tableau !

C’est tellement simple…

Remplacer la fonction eregi dépréciée dans les nouvelles versions de PHP

Vous utilisiez la fonction eregi et vous vous êtes rendu compte que celle-ci ne devait plus être utilisée avec php >= 5.3.0

Voici donc un petit exemple de remplacement en utilisant la fonction preg_match.

Voici le code avant :

		if(eregi("<title>(.*)</title>", $Titre, $LTitre)){
			$LTitre=$LTitre[1];
		}else{
			$LTitre='';
		}

Et voici le code maintenant :

		if(preg_match('/<title>(.*)<\/title>/i', $Titre, $LTitre)){
			$LTitre=$LTitre[1];
		}else{
			$LTitre='';
		}

Il s’agit donc d’utiliser maintenant la fonction preg_match et ses délimiteurs qui sont “/”, le “/i”, nous permet de rendre la recherche insensible à la case. N’oubliez pas d’ajouter un “\” devant les “/” qui vous servent pour votre recherche…

[PHP] Heure d’hiver en Europe

La fonction existante dans le langage PHP ne retourne pas forcément le bon résultat, alors, voici une classe qui vous permet, sans utiliser la fonction de PHP, de savoir si la date est basée sur l’heure d’hiver ou non

<?php
/**
*   dateime_timezone_daylight.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/11/11/php-heure-dhiver-en-europe
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License.
*
*   This program is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*
*   You should have received a copy of the GNU General Public License
*   along with this program; if not, write to the Free Software
*   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/*
 * Permet de savoir si une date est en heure d'hiver ou non
 * Utilisation : ms_SummerTimeInEU::isInWinterTime(strtotime('2010/10/31 04:00'));
 * @return bolean True si nous somme en heure d'hiver, false si nous sommes en heure d'été
 */
class ms_SummerTimeInEU{

	static function getDayOfWinterTime($Year){
		return date('z',strtotime(sprintf("last sunday of october %n",$Year)));
	}

	static function getDayOfSummerTime($Year){
		return date('z',strtotime(sprintf("last sunday of march %n",$Year)));
	}	

	static function isInWinterTime($When){
		$NumberDay=date('z',$When);
		if(($NumberDay<self::getDayOfSummerTime(date('y',$When)))||($NumberDay>self::getDayOfWinterTime(date('y',$When)))){
			return true;
		}else{
			if((($NumberDay==self::getDayOfSummerTime(date('y',$When))&&(date('G',$When)<2)))||(($NumberDay==self::getDayOfWinterTime(date('y',$When))&&(date('G',$When)>3)))){
				return true;
			}else{
				return false;
			}
		}
	}
}
?>

[PHP] Envoyer un fichier avec cUrl

Si vous êtes amené à envoyer un fichier via cUrl en php, voici de quoi vous mettre sur la piste !

Le fichier permettant l’envoi :

curl_postfile.php

<?php
/**
*   curl_postfile.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/10/27/php-envoyer-un-fichier-avec-curl
*
*   This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/**
 * Fonction qui envoie le fichier $My_File vers $CURL_POSTURL
 * @param $My_File Nom et chemin du fichier
 * @param $CURL_POSTURL Adresse de la page qui doit recevoir et gérer les opérations
 * @return $response Retourne les informations concernant le traitement de l'exécution
 */
function curl_upload_file($My_File, $CURL_POSTURL){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_VERBOSE, 1);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
	curl_setopt($ch, CURLOPT_URL, $CURL_POSTURL);
	curl_setopt($ch, CURLOPT_POST, true);
	$post = array(
  	'My_File' => '@'.$My_File,
  	'Another_Field' => 'Yes!'
	);

	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
	$response = curl_exec($ch);

	return $response;
}

/**
* Le fichier test.txt est un document se trouvant dans le même dossier que les fichiers .php
* L'Url est une Url locale dont le domaine est configuré sur le serveur local http://test/
*/
curl_upload_file('./test.txt','http://test/curl_postfile_receive.php');
?>

Le fichier permettant la réception
curl_postfile_receive.php

<?php
/**
*   curl_postfile_receive.php
*   Copyright (C) MazeSloup - mazesloup [at] gmail [dot] com
*   http://mazesloup.fr
*   http://blog.mazesloup.fr/index.php/post/2010/10/27/php-envoyer-un-fichier-avec-curl
*
*   This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program; if not, write to the Free Software
*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

/*
 * Chemin où sera enregistré le fichier
 */
$FILE_FOLDER='/tmp';

/*
 * Vérification de l'existence de $_FILES qui contient les informations sur le fichier envoyé
 */
if(isset($_FILES)){
	/*
	 * Vérification que le fichier provient bien du serveur
	 */
	if(is_uploaded_file($_FILES['My_File']['tmp_name'])){
		/*
		 * Déplacement du fichier au bon endroit avec son nom d'origine
		 */
		move_uploaded_file($_FILES['My_File']['tmp_name'],$FILE_FOLDER.'/'.$_FILES['My_File']['name']);
	}
}
?>

Cela ne représente qu’une partie de la gestion de cUrl, mais une bonne base si vous avez besoin d’envoyer des fichiers de cette manière.

backupgpg – Recherche de testeurs

Si vous souhaitez participer au développement de BackupGPG, vous êtes les bienvenues !

Merci de vous signaler…

L’interface n’est toujours pas terminée, mais je souhaite valider ce qui a été fait avant de poursuivre le reste.

Pour mon utilisation personnelle, BackupGPG fonctionne très bien, mais l’interface n’est pas assez avancée pour me permettre une diffusion à grande échelle.

Alors si vous souhaitez synchroniser vos fichiers locaux vers des serveurs distants avec un cryptage en GPG, faites-m’en part !

BackupGPG en quelques mots