25 years (of boredom) / Version 4.0
Ashor Livs MP3 Mix Player

ReSearch Trouver un lien, une astuce

AshorToolBox Boite à outils

Chiffrage MD5 :
Tapez une chaîne de caractères...
Chiffrage Unix DES :
Tapez un futur password...
URL-o-matic :
Tapez une URL pour obtenir un lien HREF

AstucesPHP

AstucesASP

AstucesSQL

AstucesJavaScript

AstucesLinux

AstucesDivers

Technics MK2 + PhP/Apple = Ashor Livs !
Germain Guglielmetti / Ashor Livs Développement web, DJing, et autres talents. Beaucoup d'humilité. Et de la dérision.
 

Trucs et astuces imaginés au fil du temps, ou pompés sur le web.

Choisissez une catégorie :
PHP(16)SQL(6)Linux(28)Javasript(6)ASP(2)Divers(11)

Les 10 trucs et astuces les + consultés :


» Catégorie : PHP
 
Échapper efficacement des variables envoyées en POST
On doit parfois encore travailler sur des seveurs qui ont magic_quotes à On dans le php.ini, or cela a pour conséquence de doubler les antislashes si l'on fait appel à la fonction addslashes, comme c'est devenu une habitude par sécurité. Résultat : des antislashes dans la base de données, ce qui n'est pas le résultat voulu bien sûr ! Voici donc une fonction qui échappe les caractères spéciaux comme (et quand) il faut :
#####################################
# PARSER UNE VARIABLE DE FORMULAIRE #
#####################################

function ParseForm($input) {

	$input = trim($input);
	
	if (!get_magic_quotes_gpc()) {
	   $input = mysql_real_escape_string($input);
	} else {
	   $input = $input;
	}
	
	return $input;
}


L'avantage est que l'on peut la personnaliser pour faire subir à la chaîne de caractères d'autres traitements : ici on supprime les espaces superflus avec trim(), mais on peut aussi passer un coup de htmlentities() par exemple.
 
» Catégorie : PHP
 
Lire vite fait le contenu d'un fichier XML
$xml = domxml_open_file('test.xml'); 
echo $xml->dump_mem( true, 'ISO-8859-1' ); 
 
» Catégorie : PHP
 
Tout ce qu'il faut pour générer un fichier CSV
Les fichiers CSV (coma-separated values) peuvent faire office de fichiers Excel lorsqu'un client vous demande un export. On peut alors automatiser cet export en générant un fichier CSV à la volée, ainsi il sera toujours synchronisée avec la base de données.


Les ingrédients pour faire un bon CSV :

// sur la première ligne, les noms de colonnes séparés par un point-virgule (séparateur CSV)

$csv = "RealID;Title;First Name;Last Name;Email;Category;ID;Title;Read abstract;Scores;View Scores";


// après chaque ligne, un retour-chariot qui force une nouvelle ligne (séparateur CSV)

$csv .= "n";


/* ici, une boucle qui écrit les valeurs de la base en respectant l'ordre donné en première ligne. On n'oubliera pas de concaténer (utiliser l'opérateur .= au lieu de =). */


// enfin, on indique au navigateur le type de fichier dont il s'agit et l'appli avec laquelle l'ouvrir si c'est possible :

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=nom_du_fichier.csv");
echo $csv;
 
» Catégorie : PHP
 
Afficher les messages d'error_reporting même quand php.ini ne veut pas
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
 
» Catégorie : PHP
 
Extraire du texte entre 2 balises SANS regexp
Parfois on ne souhaite pas utiliser les expressions régulières pour faire le sale boulot. Voici une fonction qui marche les bons vieux strpos, strlen, subsr :
function Extraire ($chaine_texte, $chaine_balise_ouvrante, $chaine_balise_fermante) {
	$partie_1 = strpos($chaine_texte, $chaine_balise_ouvrante) + strlen($chaine_balise_ouvrante); 
	$partie_2 = strpos($chaine_texte, $chaine_balise_fermante); 
	return  substr($chaine_texte, $partie_1, $partie_2 - $partie_1);
}

echo Extraire($texte, '<coordinates>', '</coordinates>');
 
» Source
» Catégorie : PHP
 
Mysql : Illegal mix of collations...
Il peut arriver que votre requête provoque ce type d'erreur lorsque vous faites une correspondance entre des identifiants alphanumériques. Voici l'exemple dans une jointure :
INNER JOIN edital_registres ON edital_registres.code = achats_registres.code
sachant que le code est de type FR, EN, DE, etc.

Selon les réglages choisis au moment de la création de la table, chez nous c'était du latin1, voici l'erreur que vous pouvez rencontrer : [b]Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '=' [/b]

OH MY GOD !
Il semblerait que Mysql ait un bug dès lors qu'on passe en latin1. On avait déjà pu le constater lors des exports où le latin1 pouvait être aléatoirement pris de l'UTF8.

Whatever.

Gardez votre structure de table et faites une comparaison hexadécimale avec [b]HEX[/b]. Here it is :
INNER JOIN edital_registres ON HEX(edital_registres.code)= HEX(achats_registres.code)


Et pof ça marche.
Merciiii...
 
» Catégorie : PHP
 
Faire fonctionner un vieux site sur un serveur rutilant
Il arrive qu'on nous demande d'héberger des sites programmés il y a très longtemps, avant même php3, à cette époque la nomenclature du code était aléatoire.

On peut donc être tenté de laisser le code suivant dans un htaccess à la racine du vieux site à héberger :
php_flag short_open_tag on
php_flag register_globals on
php_value error_reporting "E_ALL & ~E_NOTICE"


Attention tout de même aux failles de sécurité, une vérification sur les formulaires (voir posts précédents) est indispensable !
 
» Catégorie : PHP
 
Vérifier une date rapidement en PHP
$date = '2007-12-07';
list($annee, $mois, $jour) = split('-', $date);
echo checkdate($mois, $jour, $annee) ? 'date valide' : 'date invalide';
 
» Catégorie : PHP
 
Empêcher la mise en cache en « trompant » le navigateur
Grâce à PHP on peut envoyer un header qui va forcer la page à recharger son contenu à chaque fois. Pour cela on va « tromper » le navigateur, c'est-à-dire qu'avant de lui envoyer le code HTML normal on va lui envoyer ce message :
header('Cache-control: no-cache, no-store');


Comme toute commande header, il faut évidemment la mettre en toute première ligne du code PHP de la page : si jamais un texte (même un espace) était affiché avant ce code, cela provoquerait une erreur.
 
» Source
» Catégorie : PHP
 
Problèmes récurrents de Charsets...
• Si vous voyez des "é", "î", "Ã", etc. c'est que les données sont en UTF-8 et que le navigateur les affiche en ISO ;

• Si vous voyez des "?" c'est que les données sont en ISO et que le navigateur les affiche en UTF-8 ;

• Si vous voyez des "?" c'est que les données sont en WINDOWS-1252 (le plus souvent) et que le navigateur les affiche en UTF-8.