Archives de l’auteur : e.maubert

multidomaine et redirection d’un nom de domaine vers un sous dossier

Nous allons voir comment paramétrer notre fichier .htaccess afin de faire pointer un nom de domaine directement sur ce dossier. Dans notre exemple, nous sommes propriétaire du nom de domaine nouveau-domaine.fr, et nous possédons déjà un hébergement lié au domaine domaine.fr. Nous souhaitons héberger le contenu du site nouveau-domaine.fr dans un dossier de l’hebergement domaine.fr. Le but étant de pouvoir gérer sur un même hébergement plusieurs sites Internet, et à terme partager des feuilles de style, des classes php pour chacun de ces sites.

Il faut donc au préalable avoir paramétré nouveau-domaine.fr et effectué une redirection dns vers l’adresse Ip de domaine.fr. On créé ensuite à la racine de l’hébergement domaine.fr un dossier /sous-dossier/ contenant tous les fichiers du site nouveau-domaine.fr.

Enfin, à la racine de l’hébergement domaine.fr, on insert dans le fichier .htaccess les lignes suivantes:


# Activation  de la réécriture d'url "RewriteEngine" pour pouvoir
# utiliser les fonctions "RewriteRule" et "RewriteCond"
RewriteEngine on

# Test pour détecter que nous sommes sur le nom de domaine que l'on souhaite rediriger:
# nouveau-domaine.fr ou www.nouveau-domaine.fr
# ainsi que dans le sous-dossier sur lequel on souhaite faire la redirection serveur.
RewriteCond %{HTTP_HOST} ^(www.)?nouveau-domaine.fr$
RewriteCond %{REQUEST_URI} !^/sous-dossier/

# Si un nom de fichier ou de dossier existe
# La requête n'est pas ré-écrire
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#Si Toutes les conditions sont réalisées,
#on redirige vers le bon sous-dossier
RewriteRule ^(.*)$ /sous-dossier/$1

# Finalement, on vérifie si la personne n'a seulement
# tapé que le nom de domaine (avec ou sans www) sans
# rien mettre après la barre oblique (/).
# Si la condition est respectée, on redirige
# vers le bon sous-dossier, sur le fichier principal...
RewriteCond %{HTTP_HOST} ^(www.)?nouveau-domaine.fr$
RewriteRule ^(/)?$ sous-dossier [L,R=301]

Les internautes allant sur le site www.nouveau-domaine.fr
auront ainsi le contenu de www.domaine.fr/sous-dossier/contenu.html affiché de façon transparente comme ceci: nouveau-domaine.fr/contenu.html.

Publié dans À l'écoute du web, Développement | Laisser un commentaire

Générer un mot de passe pour Joomla 1.7 et 1.5

Récemment, un projet de refonte a nécessité que j’insère dans Joomla! des utilisateurs issus d’un ancien site. J’ai opté pour un script d’insertion en base de données afin de ne pas avoir à taper les utilisateurs 1 à 1 en back-office. J’ai alors vite été bloqué devant la solution de cryptage du mot de passe utilisée dans joomla! 1.6 et 1.5.

Après quelques recherches sur le net, j’ai trouvé une petite fonction qui permet de générer un mot de passe fonctionnel que l’on pourra insérer dans le champ `jos_users`.`password` d’un des utilisateurs du site.

Joomla! 1.6 et 1.5 encryptent par défaut les mots de passe en md5, avec une clé de cryptage ‘salt‘ générée aléatoirement pour chaque mot de passe. Dans la base de données tous les mots de passe sont donc sous la forme suivante:

95c833861f8c600e0992ca:EPGGRPN5upudFC6eokxS4OWx

qui correspond à :

md5($password.$salt).':'.$salt;

Lorsqu’un utilisateur s’authentifie, le mot de passe qu’il a saisi est concaténé avec $salt, puis crypté en md5 et enfin comparé à md5($password.$salt).

Voici le code complet qui permet de générer une clé de cryptage aléatoire et retourner le mot de passe haché pour Joomla!:

<?php
/*
 * Fonction qui créée un clé aléatoire
 * pour générer un mot de passe Joomla crypté
 *
 * @param $length
 * @return $salt
 *
 */
function genRandomPassword($length = 32)
{
 $salt = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 $len = strlen($salt);
 $makepass = '';
 mt_srand(10000000 * (double) microtime());

 for ($i = 0; $i < $length; $i ++) {
 $makepass .= $salt[mt_rand(0, $len -1)];
 }

 return $makepass;
}

//Création de la clé de cryptage
$salt = genRandomPassword();

//Cryptage du password
$new_password = md5('mon password'.$salt).':'.$salt;

//exemple: 95c833861f8c600e0992ca:EPGGRPN5upudFC6eokxS4OWx
?>
Publié dans À l'écoute du web, Développement | 2 commentaires