PHP-CLI pour Command Line Interface permet d'exécuter des scripts en PHP depuis la ligne
de commande DOS ou Shell. L'intéret d'un tel mode d'exécution est simple, il est possible de programmer
directement en PHP des programmes que nous pourrons exécuter de façon planifiés ( chose impossible
en PHP web ) ou également des scripts ne nécessitant pas de faire un retour dans le navigateur web.
PHP est un puissant langage de programmation. Il est possible de modifier la durée maximum d'exécution
d'un script avec la commande
set_time_limit(0); qui définis un temps maximum
d'exécution du script infinis ( Il est néanmoins possible de l'arrêter en faisant Ctrl+C ). Les auteurs de PHP ont bien compris la portée
de PHP-CLI, en effet cette directive est implicite depuis la version 5.0 de PHP.
Avec l'adjonction des modules fournis de base avec l'environnement
il devient possible de créer des applications faisant appel à :
GD pour la création d'images.
PDFLib pour la création de fichiers PDFs.
SNMP pour l'interrogation d'équipements réseaux.
IMAP pour la lecture de boites aux lettres.
...
Utilisé en ligne de commande PHP donne accès à de nouvelles variables : STDIN/STDOUT/STDERR que nous pouvons
ouvrir comme des flux avec la fonction
fopen ou encore
$argc et
$argv[] qui permettent de récupérer
les paramètres passés au script par la ligne de commande.
Il peut être utile d'inclure une authentification Active Directory dans vos applications PHP. En utilisant
le module LDAP fournis de base dans les distributions de PHP, il est possible de tester l'existance d'un
utilisateur et son mot de passe. Les étapes d'authenfication via LDAP sont les suivantes :
On force une erreur 401 pour faire apparaitre la fenêtre de login.
On se connecte au serveur LDAP. ( Controleur de domaine )
On tente un Bind avec le login / mdp de l'utilisateur.
On vérifie le code de retour LDAP.
Si l'utilisateur est authentifié, la variable
$auth_user contiendra son UserID dans le format
Domain\UserID. Si l'authentification échoue, on redirige l'utilisateur vers la page
NotAllowed.php.
Par défaut Internet Explorer proposera 3 tentatives de login, cette valeur ne peut être changée coté
script.
Le module LDAP se base sur certaines DLL de OpenSSL qui sont incluses dans les version de PHP inférieur à 4.2.0, pour les version
supérieurs, Vous devrez probablement télécharger OpenSSL et copier
libeay32.dll et
ssleay32.dll dans le path de windows. Pour activer l'extension LDAP dans PHP, il est nécessaire
de décommenter la ligne suivante de votre fichier PHP.ini :
extension=php_ldap.dll
Ce petit exemple force l'apparition d'une boite d'authentification sur le navigateur en lui envoyant
une erreur
HTTP 401. Il tente ensuite une connection au serveur LDAP ( généralement un controleur de
domaine Active Directory ), si le BIND avec les variables PHP_AUTH_USER / PHP_AUTH_PW ( variables remplies
par la boite de login ) est réussit, l'utilisateur est authentifié, sinon il est redirigé vers une autre
page.
A la mode depuis quelques temps déja, l'
Ajax ( Asynchronous JavaScript and XML ) permet
de rendre les pages HTML beaucoup plus dynamique en y incluant des résultats de requètes externe sans recharger
le contenus de la page entièrement. Utilisé abondament dans le web2.0 il est aujourd'hui grandement compatible
avec les navigateurs les plus utilisés.
Ce petit exemple permet d'envoyer une chaine à un script externe situé sur un serveur et afficher
en retour le résultat. Nous verrons plus tard comment enrichir les données renvoyées par le serveur.
Tout se passera évidement sans recharger la page dans le navigateur.
Afin d'augmenter la visibilité d'un site sur internet via les moteurs de recherche, il peut être intéressant de faire appel à
une fonction d'Apache appelée
mod_rewrite. Ce module qui n'est pas nativement activé permet de faire de la redirection
d'URL de façon transparente pour le browser ou en renvoyant un code HTTP 302 -Object Moved-. Outre le fait de n'utiliser que
des URL propres ( sans paramètres &x=y?a=z ), l'indexation des moteurs de recherche est facilitée, en effet certains
n'accèdent pas aux adresses comportant trop de paramètres.
Ce tutorial a été réalisé sur un serveur web apache 2.0, la démarche est légèrement différente pour une 1.3x. La configuration
décrite ci-dessous est appliquée sur le serveur web ou est hébergé ce site, vous pouvez le voir en action en sélectionnant un
article, une catégorie, le flux RSS,...