Vérifier si une requête est en AJAX

Il peut être utile pour des raisons de sécurité par exemple de vérifier si une requête php est en AJAX.

Voici comment faire :

if (array_key_exists('HTTP_X_REQUESTED_WITH', $_SERVER) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
	// Traitement pour une réponse Ajax
}
Vérifier si une requête ajax est en php

Lister toutes les propriétés d’un objet PHP

get_object_vars : Lister les propriétés d’un objet

Il peut être utile de lister l’ensemble des membres d’un objet en php
Une fonctions permet de faire cela en toute simplicité : get_object_vars

Un exemple de mise en pratique :

Mise session des différentes propriétés d’un objet :

<?php                    foreach(get_object_vars($oObject) as $key=>$val){
      $_SESSION[$key] =  $val;    
    }
?>
Mise en sessions

 

 

 

Deezer gratuit et streaming audio illimité

MAJ : Code deezer et promotion du moment :

promo Deezer+  à  0.99€ pdt 1 mois en passant par paypal

Depuis quelques temps déjà deezer à revue sa stratégie et désormais deezer gratuit permet une écoute de deezer illimité ma part je suis un abonné à deezer premium et je cherche régulièrement les promotions et autre codes deezer.

 

Je ne pense pas avoir été le seul déçu sur la toile quand deezer a annoncé la mise en place d’un quota d’heures maximum d’écoute pour les utilisateurs non payant. Il s’en est alors suivi un débat sur qui est le meilleur concurrent de  deezer et je ne pense pas me tromper en nommant grooveshark.

Sinon l’un de ses plus sérieux concurrent gratuit et légal se nomme : grooveshark.

Deezer Gratuit et illimité ça s’appel grooveshark

Ce deezer like propose une interface très épuré et ergonomique et possède une audio thèque bien garni et qui évolue quotidiennement car ce sont les internautes eux même qui  rajoutent les musiques sur le site.

Je vous entends déjà me dire :

Oui mais avec deezer y’a une appli mobile

C’est vrai et chez grooveshark on a pensé aux appli addict, en effet les développeurs ont déjà mis en place une application pour iTunes mais le market de la marque à la pomme refuse de valider l’application sous prétexte qu’elle ne respecte pas les droits d’auteurs …

Pour les autres vous pouvez utiliser la version HTML5 de grooveshark en cliquant sur l’url suivante :

http://html5.grooveshark.com

Rapellons toutefois qu’il ne s’agit que d’une version beta et il manque donc de nombreuses fonctionnalités mais tout laisse penser qu’elles viendront rapidement quand on voit la vitesse des développements chez grooveshark

Pour plus d’informations concernant Grooveshark sur iOs 

 

Application Grooveshark sur Android

Pour les heureux propriétaire d’un téléphone androïd vous avez de nombreuses applications pour améliorer votre expérience groovsharkienne. A commencer par 2 applications présentent sur google play.

————————————————————————-

Il existe également une application non approuvé par google développé par grooveshark. Vous pourrez la trouver à l’url suivante :

http://updates.mobile.grooveshark.com/android/Grooveshark.apk

ou bien en vous rendant sur http://mobile.grooveshark.com/

 


SOLAYO le deezer sur YOUTUBE

Si vous ne trouvez pas votre bonheur sur deezer vous pouvez vous tourner vers ce site : http://solayo.com qui utilisera youtube comme un deezer-like.

Avez vous d’autre informations sur Grooveshark ? Des questions ? n’hésitez pas les commentaires sont la pour ça !

php-med-trans

Update PHP vers php 5.5.x

Je viens de passer un de mes serveurs de prod en php 5.5.

Voici trois des soucis rencontrés :

imagick: Unable to initialize module


PHP Warning: PHP Startup: imagick: Unable to initialize module
Erreur imagemagick

Solution : Mettre à jour ImageMagick

Creating default object from empty value

Message:  Creating default object from empty value
Warning ; Creating default object from empty value

Explication : Ce warning intervient peu être pour la première fois suivant le niveau d’erreur des que vous logguez. Il met en avant un soucis de logique dans le code car vous essayez de creer un objet à partir de rien

Solution : Creer un objet php à partir de la variable concerné

<?php $foo = new stdClass(); ?>

L’extension MYSQL historiquement utilisé dans beaucoup de codes est devenue obsolète.

Solution : Passer à MSQLi ou PDO ou autre …

MYSQL requêtes particulières

Dans le cadre de mes développements j’ai régulièrement des requêtes mysql particulières à faire.  Vous trouverez sur cette page une petit résumé de mes recherches

Selectionner un champ date par rapport à une année

Il convient d’utiliser la fonction YEAR déclinable avec MONTH

Solution :

SELECT count(id_element), date_format(date_depot, '%d/%m/%Y') FROM element WHERE YEAR(date_depot) = 2010 GROUP BY date_depot
	 
Selection CHAMP type DATE/DATETIME par rapport à l'année

Faire un tri défini manuellement

Solution :Solution :

SELECT mon_champ1, mon_champ2, mon_champ3
FROM (`ma_db`.`ma_table`) 
WHERE `mon_champ1` = '1337' 
ORDER BY 
	CASE mon_champ2
		WHEN 'e' THEN 1
		WHEN 'v' THEN 2
		WHEN 's' THEN 3 
	END 
Trier sans ASC / DESC

Trouver tous les enregistrements dont la colone nom commence par une lettre comprise en A et C .

Solution : 

SELECT [left|right](monchamp, 2) FROM `matable` WHERE nom REGEXP '^[A-C]'
Utiliser les REGEXP dans les requêtes mysql

Ne prendre que X charactères de la valeur

Solution : 

SELECT [left|right](monchamp, 2) FROM `matable` WHERE nom REGEXP '^[A-C]'
limiter à un certain nombre de caractères

2 étant me nombre de caractères souhaités

Dupliquer un enregistrement dans la base

Solution : 

INSERT INTO users( champ1, champ2, champ3, champ4 )
SELECT champ1, champ2, champ3, champ4
FROM maTable
WHERE id = 2
Dupliquer un tuple

Il faut prendre tous les champs souhaités sauf bien évidamment la Primary Key si celle ci est en incrémentation auto

Cette liste sera mise à jour régulièrement.

Prestashop : Changer de nom de domaine

Changer L’url de sa boutique prestashop. Tout d’abord pensez à modifier votre .htaccess. En effet si le module de réécriture est installé sur votre serveur web, prestashop aura besoin du fichier htaccess pour réécrire certaines url. Vous retrouverez à plusieurs endroits l’url de votre site l’ideal étant d’utiliser votre IDE pour tout remplacer d’un seul coup. (CTRL + H) Ensuite viennent les modifications à faire dans la base de données, Voici donc les requêtes qui vous permettrons de réussir ce changement d’url sans soucis.

 

UPDATE ps_configuration SET `value` = 'nouvelleurl.fr' WHERE name = 'PS_SHOP_DOMAIN';
UPDATE ps_configuration SET `value` = 'nouvelleurl.fr' WHERE name = 'PS_SHOP_DOMAIN_SSL';
UPDATE ps_shop_url SET domain = 'nouvelleurl.fr', domain_ssl = 'nouvelleurl.fr' WHERE id_shop = 1;
UPDATE ps_cms_lang SET content = replace(content, 'ancienneurl.fr', 'nouvelleurl.fr');
UPDATE ps_category_lang SET description = replace(description, 'ancienneurl.fr', 'nouvelleurl.fr');
UPDATE ps_connections_source SET request_uri = replace(request_uri, 'ancienneurl.fr', 'nouvelleurl.fr');
UPDATE ps_homeslider_slides_lang SET url= replace(url, 'ancienneurl.fr', 'nouvelleurl.fr');

Creation automatique d’un onglet dans le back office – prestashop 1.5.x

Creation automatique d’un onglet dans le back office – prestashop 1.5

Tout se passe encore une fois dans la fonction install de notre module.

public function install() {
//Creation de l'onglet parent rang 0
$parent_tab = new Tab();
// Need a foreach for the language
$parent_tab->name[$this->context->language->id] = $this->l('Libéllé de l'onglet parent');
$parent_tab->class_name = 'AdminMainMonModule';
//Id 0 car il s'agit d'un onglet parent
$parent_tab->id_parent = 0; // Home tab
$parent_tab->module = $this->name;
$parent_tab->add();

//Creation de l'onglet fils rang 1
$tab = new Tab();
// Need a foreach for the language
$tab->name[$this->context->language->id] = $this->l('Libéllé de l'onglet fils');
$tab->class_name = 'AdminConfigurateur';
//id du parent
$tab->id_parent = $parent_tab->id;

$tab->module = $this->name;

 

Cette article est le premier d’une longue série d’articles qui viendront vous expliquer comment développer un module pour prestashop 1.5.x en respectant les guidelines de prestashop. Car pour ceux qui ont déjà essayé de se baser sur la doc officielle vous avez forcément constaté que cette doc est soit incomplète soit absente.

 

Apache logger les erreurs

Quand vous passez votre serveur apache en prod il est très fortement conseillé de retirer l’affichage des erreurs.

Retirer l’affichage des erreurs php dans le php.ini

Une fois le php.ini ouvert cherchez la ligne display_errors et le passer et le passer à off

Loguer les erreurs

Vous avez quand même besoin de connaitre les erreurs généré par vos sites on va donc loguer ces erreurs dans un document.
Pour cela 2 choses très simple :
Cherchez log_errors et donnez lui la valeur on
ensuite cherchez  error_log et passez en paramètre le chemin du fichier log
Ex : error_log = /home/web/naouak.fr/log/err-php.log

Retirer l’affichage des erreurs php dans le htaccess

# display no errs to user
php_flag display_startup_errors off 
php_flag display_errors off
php_flag html_errors off
# log to file
php_flag log_errors on
php_value error_log /home/web/naouak.fr/log/err-php.log

Explication :
– les 3 premières lignes retire l’affichage des erreurs sur le site
– Les 2 dernières lignes activent le log des erreurs ainsi que la localisation

src : http://www.catswhocode.com/blog/10-htaccess-snippets-to-optimize-your-website

ckeditor onChange Event

Après 2h passé sur la problématique suivante :

Comment Detecter un evenement onChange ou onKeyDown dans mon éditeur cKeditor V4.x ?

Dans un premier temps j’instancie mon editeur :

$( "#ma_div" ).ckeditor(
{ customConfig: '/assets/script/ckeditor/config.js'}
);

Dans un second temps je vien y rajouter le listener !

CKEDITOR.instances['ma_div'].on('key', function(e) {
    // Mettre le code ici !
});