Da Bourz Blog

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, 24 avril 2013

WordPress : Pods et les champs "Simple" "Relationship"

Quand il s'agit de faire quelque chose de compliqué avec WordPress, au niveau des données, et qu'aucun plugin ne vous convient c'est à des solutions comme Pods que l'on s'adresse.

Pods vous permet en effet de carrément créer vos propres modèles de données ou bien d'étendre n'importe quel modele de WordPress (comme les Articles par exemple) en y rajoutant des champs, des relations ...etc.

C'est en utilisant un de ces champs de Pods (le simple menu déroulant sans relations) que je me suis trouvé confronté à un problème tout bête mais qui m'a un peu bloqué jusqu'à ce que la lumière se fasse, je vous livre donc l'astuce ici...

Lire la suite...

vendredi, 29 mars 2013

Récupérer son mot de passe WordPress en Local

Bon comme tous les gens qui travaillent et qui développent avec WordPress je suis sans arrêt confronté au problème de mot de passe de l’Administrateur (ou de tout autre utilisateur) sur WordPress, et ce pour plusieurs raisons :

Soit j’ai carrément oublié le mot de passe que j’avais mis, quand on travaille en local c’est fréquent, même si maintenant sur mes sites en « localhost » j’essaye de mettre le Login en mot de passe en fait (genre : « admin /admin »)

Soit, et c’est assez fréquent, je récupère en local un WordPress dit « de production », souvent d’un client, et souvent je n’ai pas eu le (ou tous les) mots de passe, soit je veux le changer en local pour un truc simple.

Donc pour remettre le mot de passe que l’on veut, rien de plus simple. Sachant que WordPress utilise du MD5 pour ses mots de passe il suffit d’ouvrir la base de données locale, d’aller dans la table « wp_users » et de changer celui-ci.

Je vous donne directement le MD5 de « admin » en mot de passe (si comme moi vous voulez utiliser « admin/admin »), c’est :

21232f297a57a5a743894a0e4a801fc3

Voici aussi la requête complète directe :

UPDATE  `wp_users` SET  `user_pass` =  '21232f297a57a5a743894a0e4a801fc3' WHERE  `wp_users`.`ID` =1;

Vu que l’Admin est Presque toujours le ID1 (Admin et créateur) ça roule souvent direct.

Maintenant si vous voulez mettre un autre mot de passe vous pouvez utiliser le « md5 Password Generator » (http://www.phpbbhacks.com/md5.php) qui va encoder le mot pour vous t ensuite vous n’aurez plus qu’a le changer directement dans la table « wp_users »

Voilà, les mots de passe des WordPress ne vous embêterons plus jamais en local au moins…

lundi, 13 février 2012

La librairie SimpleLogin-Secure pour Code Igniter

Bon, voilà, j'ai officiellement repris la librairie "SimpleLogin-Secure" pour Code Igniter écrite par Alex Dunae, elle même venant de la lib "SimpleLogin".

SimpleLogin-Secure c'est une petite librairie très sympa est très utile qui vous permet de gérer des utilisateurs (création, suppression, login, logout) avec Code Igniter tout en faisant de l'encryption assez forte grace à Phpass.

En fait elle était un peu abandonnée et j'ai eu besoin de la mettre à jour pour Code Igniter 2.0 car elle ne fonctionnait plus. Du coup j'ai corrigé les bugs, j'ai mis à jour Phpass à la dernière version (la 0.3) et je vous ai mis le tout avec la doc sur Github.

Voilà, hésitez pas à proposer des améliorations ou à signaler des bugs !

Simple Login Secure sur GitHub.

samedi, 28 janvier 2012

Page 404 personnalisée avec CodeIgniter

Dans la catégorie des petits trucs faciles voyons ensemble aujourd'hui comment virer la page 404 par défaut d'une application CodeIgniter.

En effet, si vous utilisez les jolies URLs avec le "Controller" de CodeIgniter qui gere vos liens, toutes les requêtes passerons donc par lui et si le lien n'est pas bon il renverra la page d'erreur du framework, mais en plus sans un 404 correct au niveau de la réponse. Ce qui évidement est mal.

Voyons donc comment régler les deux problèmes simultanément :

D'abord dans le fichier "routes.php" trouvez la ligne :

$route['404_override'] = '';

et remplacez la par :

$route['404_override'] = 'welcome/pastrouve';

Cela suppose que vous avez gardé le "Controller" par défaut de l'application exemple, sinon remplacez par le nom de votre "Controller" principal comme :

$route['404_override'] = 'moncontroleur/pastrouve';

Vous aurez remarqué que je n'utilise pas un "Controller" entier pour faire cette page, mais comme je suis econome je me contente de rajouter une methode dans mon controle principal. Libre à vous d'en créer un si vous en ressentez le besoin.

Donc ensuite ouvrez votre "Controller", ici "Welcome.php" et créez la fonction "pastrouve" :

public function pastrouve()
{
header("HTTP/1.1 404 Not Found");
$this->load->view('view_404');
}

Voilà, très simple, ici on se contente de mettre le bon "Header" avec la fonction adéquate, puis de charger le template personnalisé de notre page d'erreur (ici "view_404.php" dans les vues) et c'est terminé ! Vous pouvez pousser un peu plus loin le bouchon en récupérant l'URL demandée et en la passant en variable au template pour l'afficher à vos visiteurs avec la fonction "current_url()".

Bonne personnalisation, et si vous faites des 404 sympas postez les dans les commentaires.

mardi, 22 février 2011

Upgrader vers CodeIgniter 2.0

Ces temps-ci je suis un peu comme les gens de EllisLab, je prends mon temps entre les billets sur ce blog comme vous avez pu le remarquer. Mais bon, tout arrive, la preuve...

Et donc la fameuse nouvelle mouture de CodeIgniter est sortie en version finale 2.0 ce janvier dernier. je ne vais pas revenir sur les nouveautés ou bien encore la fin du support de PHP 4, mais plutôt vous proposer ma méthode pour passer un projet CodeIgniter 1.x vers la version 2.0 car certaines choses ont changé et si il n'y a rien d'insurmontable vos anciens projets ne marchent plus avec cette nouvelle version.

Alors, commencez donc par récupérer CodeIgniter et dé-zippez l'archive.

Contrairement à l'excellent post de Phil Sturgeon "Upgrading to CodeIgniter 2.0" dont ce billet est inspiré, je vais plutôt partir sur une installation vierge et propre dans laquelle vous déplacerez vos fichiers plutôt que la méthode de Phil qui consiste a faire l'inverse et mettre un CodeIgniter par dessus votre projet.

Vous devez aussi lire les notes concernant l'ugrade dans la documentation officielle, même si c'est abordé ici ça ne fait pas de mal !

Donc, dans l'ordre :

1 - Vous copiez le dossier dé-zippé de CodeIgniter 2.0 sur votre serveur, la ou vous mettez vos applications, a coté de votre application qui est en CodeIgniter 1.x. La grosse nouveauté que vous allez voir immédiatement 'est que le dossier "Application" n'est plus à l'intérieur du dossier "System", il en a été sorti pour se retrouver à coté, et ça c'est bien.

2 - Ouvrez votre nouveau dossier "Application", puis allez dans "Config" et éditez le fichier "config.php" pour remettre les réglages de votre ancienne application, souvent les deux variables de base :

$config['base_url']='http://localhost/mondossier/';
$config['index_page']='';

Je met volontairement la variable "index_page" vide pour avoir de jolies URLs, sans le "index.php" dedans.

3 - Copiez et éditez (si vous n'en aviez pas créez le) votre ".htaccess" qui se trouve à la racine de votre dossier, au niveau des dossiers "system" et "application". Cela sert pour les jolies URLs, surtout si vous avez viré le "index_page" ci dessus. Chez moi j'ai eu un problème avec mon ancien ".htaccess" qui ne marchait plus avec la nouvelle version, je n'ai pas cherché pourquoi, en voilà un qui marche :

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php/$1 [L]

4 - Depuis votre ancien dossier, copiez maintenant vos Controllers dans "Application/Controllers", vos vues dans "Application/Views" et, vous l'aurez deviné, vos Models dans "Apllication/Models". Si vous aviez des librairies faites de même, si vous aviez des Plugins et bien c'est mort, les Plugins ont disparus de CodeIgniter 2.0 et vous devez donc les convertir en "Helpers" ou en "Libraries". Le plus simple reste de les transformer en "Helpers", en effet il suffit de les mettre dans le dossier et de changer le nom depuis "monNom_pi.php" vers "monNom_helper.php". Évidement vous devrez changer vos appels dans vos fichiers et les chargement ou l'"autoload".

5 - Maintenant il faut modifier un peu le code de vos "Models" et vos "Controllers" car des choses ont changé : Maintenant il faut étendre CI_model et CI_Controller, il faut donc changer ça :

class MonModel_model extends Model
class MonController extends Controller

en ça :

class MonModel_model extends CI_Model
class MonController extends CI_Controller

Et il faut également modifier le constructeur, pour remplacer ça :

parent::Controller();

En ça :

parent::__construct();

Râlez pas, demandez pas pourquoi, il faut le faire, c'est tout ! :-)

6 - Enfin, si jamais vous utilisiez encore la vieille classe de validation, ce qui est mal, elle n'existe plus dans cette version 2.0, et comme c'est pas faute d'avoir été prévenu et bien maintenant il faut la changer pour de bon.

Voilà, c'est fini, normalement c'est tout, c'est assez simple finalement, et vous allez pouvoir bénéficier des nouveautés de CodeIgniter 2.0 pour votre application en plus des performances améliorées.

lundi, 12 mai 2008

Code igniter, DreamHost et le "no input file specified"

Code Igniter c'est le framework PHP qui va bien, et vous allez en entendre parler ici même. Cela dit, il y a un ou deux trucs qui m'ont posé des problèmes sur DreamHost (mon hébergeur qu'il est bien), notamment une fois tout fini et tout uploadé je me suis retrouvé avec l'erreur "no input file specified" à la racine du site.

Que j'appelle directement le "/" ou encore le "/index.php/" seul, DreamHost renvoyait le "no input file specified". Il n'y avait que lorsque je mettais le "/index.php" que ça fonctionnait. Voilà pour les symptômes.

Après quelques recherches j'ai identifié le fautif (en plus de DreamHost) : Le fichier ".htaccess". En effet celui livré dans l'installation par défaut de Code Igniter n'est pas terrible (les exclusions à la main) et la dernière ligne foire.

j'ai donc corrigé le ".htaccess", et maintenant ça marche comme un charme ! J'ai commencer par lui dire de ne pas passer dans le framework les vrais répertoires et fichiers et puis sur la "RewriteRule" j'ai viré le "/" au début du fichier "index.php/" :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 L

Voilà, je vous conseille d'utiliser ces règles la dans votre ".htaccess" en général, ça marche bien mieux et il n'y a pas d'exceptions à mettre dedans.

Bientot la suite et quelques billets sur Code Igniter !

samedi, 13 octobre 2007

Erreur 404 avec PHP

Inauguration de la catégorie PHP avec ce billet.

Ce matin je cherchais le meilleur moyen de faire une redirection 404 propre avec PHP pour virer les spammeurs de trackbacks du blog, j'ai trouvé et je met la recette ci dessous :

<?php header("HTTP/1.1 404 Not Found"); ?>
<?php header("Status: 404 Not Found"); ?>

A savoir quand même que si vous voulez vraiment montrer une page d'erreur il faudra ensuite l'inclure, car ce script ne fait que renvoyer proprement l'erreur au navigateur, et Apache ne renvoi pas sa page 404 depuis PHP.