02
Nov
2006

Sortie de PHP 5.2.0

Une nouvelle mouture de PHP vient de sortir, la 5.2.0

Au menu de cette grosse mise à jour :

  • Nouveau gestionnaire de mémoire pour le Zend Engine
  • L'extension "Input filtering" a été ajoutée et activée par défaut.
  • Extension JSON
  • Extension ZIP pour créer et éditer des fichier .zip.
  • Nouveau mode d'erreur E_RECOVERABLE_ERROR.
  • Nouveaux objets DateTime et DateTimeZone pour la manipulation de dates
  • Upgrade de SQLite et des librairies PCRE.
  • Upgrade des clients OpenSSL, MySQL et PostgreSQL pour la version Windows.
  • Plus de 200 corrections de bugs.

Vous retrouverez le changelog à cette adresse

De plus un guide de migration des version 5.x vers la 5.2 est accessible par là

Posté par Mathieu LESNIAK à 20:43 dans la catégorie News | RSS catégorie
Tag(s) associé(s) :
06
Oct
2006

Forum PHP 2006

Forum PHP à Paris

PHP fait salon à Paris les 9 et 10 novembre 2006

Le forum PHP 2006 se tiendra les 9 et 10 novembre à Paris. Des poids lours de l’industrie Internet seront présents, notamment Yahoo ! — avec le créateur de PHP, Rasmus Lerdorf — et Google.

Ce forum s’adresse à tous ceux qui développent des applications Web. La première journée est axée sur le domaine fonctionnel, la deuxième est orientée technique.

De nombreux domaines seront abordés : les bonnes pratiques en PHP, l’intégration PHP / Java, les motifs de conception, le futur de PHP.

Le forum PHP organisé par l’Association Française des Utilisateurs de PHP (AFUP) est une occasion unique de rencontrer la communauté et les professionnels de PHP.

Plus d’informations sur http://www.afup.org/forumphp/

(Via Afup)

Posté par Mathieu LESNIAK à 08:39 dans la catégorie News | RSS catégorie
Tag(s) associé(s) :
27
Sep
2006

PHP 6, pas si attendu que ça

PHP 6, prévu pour la fin de cette année, ne devrait pas faire que des heureux.

Normalement, chaque révision de PHP apporte son lot de nouveautés, toutes plus ou moins attendues par la communauté. Pour cette nouvelle mouture, nous devrions voir apparaître un meilleur support de l'Unicode et du SOAP, entre autres.

Là où réside LA nouveauté, c'est au niveau de la gestion des magic_quotes. Par défaut, dans PHP 5, elles sont déjà désactivés. Mais bon, beaucoup d'entre nous, par flemmardise et pour pouvoir faire fonctionner la majorité des scripts, les réactivent. Là, impossible. Cette directive n'existera plus, point barre. Il y a même certaines personnes qui vont jusqu'à dire que PHP refusera de démarrer si il subsiste une trace de cette option dans le fichier de configuration.

Mais, j'en vois au fond qui se demande ce que sont réellement les magic_quotes. Les magic_quotes, c'est ce qui se passe quand vous récupérez des données d'un formulaire (entre autres), et que PHP ajoute automatiquement un slash devant les apostrophe / guillemets. Cela évite à la plupart des développeurs de vérifier les saisies utilisateurs. Là, avec cette nouvelle version, vous aurez intérêt à faire attention à tout ce qui sera fourni à PHP (saisie et autres sources de données).

Je me souviens du tollé qu'avait provoqué le changement des $HTTP_GET_VARS (et POST) en $_GET, les soucis qu'ont rencontrés nombres d'utilisateurs, et la lenteur d'adoption par les hébergeurs de cette nouvelle version.
Avec les problèmes de sécurité majeurs qui découleront de cette nouvelle fonctionnalité, je ne suis pas sûr que les hébergeurs migrent si rapidement...

Posté par Mathieu LESNIAK à 13:43 dans la catégorie News | RSS catégorie
Tag(s) associé(s) :
01
Aoû
2004

Gestion des erreurs en PHP

En tant que développeur PHP, vous avez forcément eu à faire aux messages d'erreurs standard du langage, du type :

Parse error: parse error, expecting ';' in /.../index.php on line 12

ou bien

Warning: mysql_connect() : Accès refusé pour l'utilisateur 'user@localhost' (mot de passe: NON) in /.../index.php on line 25

Parfois obscurs, ces messages ne constituent pas une solution élégante de gérer les erreurs. Sans proposer de solution aussi perfectionnée que les blocs try-catch de Java ou C#, il est néanmoins possible de manager les erreurs de manière plus évoluée que la méthode par défaut.

Note 1 : Cet article a été réalisé avec une machine exécutant PHP 4.3.6. Cependant, les méthodes présentées sont compatibles depuis PHP 4.0.x.

Note 2 : Pour cet article, je suppose que vous avez déjà un serveur Web installé avec PHP installé et configuré pour tourner avec ce serveur. Cet article n'a pas pour but de vous guider dans l'installation de ces éléments.

Lire la suite »
Posté par Renaud Castéran à 13:08 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :
02
Déc
2002

Les sessions PHP

Combien d'entre vous se sont déjà demandés comment passer des infos pour un visiteur donné de page en page ? Et qui plus est, de manière sécurisée ? Vous pouvez avouer, si jamais vous avez décidé un jour de mettre en place un espace membre avec des fonctionnalités avancées, il est nécessaire d'identifier ce dit membre...

PHP (dans les versions >= 4) possède un mécanisme automatique et très pratique pour réaliser ceci : les sessions.
A noter cependant que si vous êtes encore en PHP3, vous pouvez utiliser la PHPLib Nous allons voir dans cet article comment manipuler les sessions avec quelques exemples d'applications.

Au programme :

  • Les sessions, c'est quoi ?
  • Comment manipule-t-on une session ?
  • Quelques exemples et conclusion

Les sessions, c'est quoi ?

1 - Qu'est-ce qu'une session ?

Une session est un mécanisme assez simple géré de manière transparente par le PHP. A chaque fois qu'une session est démarrée (3 méthodes sont possibles, comme nous le verront plus tard), un identifiant unique est attribué au visiteur. Cet identifiant permettra de le distinguer autres utilisateurs tout au long de sa session. Pendant la session, on pourra à loisir définir des variables qui "suivront le visiteur".
A chaque chargement de page, ces variables seront sauvegardées sous forme sérialisée dans un fichier texte portant le nom de la session.
(Ces fichiers sont, en général stockés dans /tmp sur un système unix)

L'identifiant unique de session peut se transmettre de 2 façons :

- cookie :
Un cookie est posé au debut de session et contient la variable PHPSESSID faisant référence à l'identifiant de session.
- URL : Le paramètre de session PHPSESSID ou SID est à inclure sur chaque lien de la page afin de propager la session aux autres pages.

La première solution est contraignante si vos utilisateurs refusent les cookies, mais reste tout de même la plus simple à mettre en place.
A savoir tout de même que si PHP est compilé avec --enable-trans-sid, les urls de la page seront modifiées par PHP pour rajouter l'identifiant de session.

A noter également que pour une création de cookie de session, l'appel de la fonction doit se situé avant toute autre sortie vers le navigateur, comme les fonctions header et setcookie.

2 - Que peut on faire avec un session ? (quelles fonctions sont disponibles pour manipuler les sessions)

Avant d'utiliser une session, il faut d'abord l'initialiser.
Comme dit précédemment, il existe 3 manières de démarrer une session :

  • PHP est configuré pour démarrer automatiquement les sessions

PHP peut être configuré de tel façon, via la php.ini, qu'il démarrera une session à chaque nouveau visiteur du site.

Pour activer cette option, il suffit de passer le paramètre de configuration session.auto_start à 1 dans la configuration.
C'est la façon la plus simple, mais pas forcément la plus répandue chez les hébergeurs.

  • Démarrer explicitement une session

PHP possède la fonction session_start(), qui , comme son nom l'indique, permet de démarrer une session.
Si le visiteur affiche pour la première fois une page de votre site depuis qu'il a lancé son navigateur, un identifiant lui est attribue.
Autrement, si il navigue depuis quelques pages, l'identifiant de session est récupéré et les variables lui étant associées sont accessibles.

  • Démarrer implicitement une session

On peut se passer du démarrage de session avec session_start() si l'on utilise la fonction session_register(), qui permet de stocker une variable dans une session.
Par cette méthode, PHP tente de déterminer si une session est active, et si ce n'est pas le cas, il la démarre avant de stocker la variable.

Voyons maintenant d'un peu plus près les fonctions permettant de manipuler les sessions.

Lire la suite »
Posté par Mathieu LESNIAK à 13:15 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :
15
Juil
2002

Installation d'Apache + PHP + MySQL pour Windows

Pas forcément facile d'installer soi-même le trio gagnant Apache - PHP - MySQL... thor14 peut en témoigner ! =)

Voici donc un énième tutorial sur le sujet qui, je l'espère, saura vous combler.


Si cela ne s'avérait pas être le cas, je ne peux que vous conseiller d'aller jeter un oeil sur les tutoriaux de www.phpfrance.com

Cet article ne concerne pas l'installation sous Linux.
Si le temps est avec nous, peut-être qu'on traitera le même sujet vu du coté du monde libre mais en cas de besoins, je vous recommande www.ze-linux.org, www.geldenhuys.com (Apache France) et www.phpmylinux.net.

  • Télécharger Apache
  • Installer Apache
  • Configurer Apache
  • Utiliser Apache
  • Un Test ?
  • Plus...

Télécharger Apache

C'est certainement la partie la plus simple de tout l'article : Il suffit de se rendre sur www.apache.org pour récupérer un version d'Apache (avec ou sans sources, au choix..).

À l'heure ou je tape ces lignes, seules sont disponibles les versions 1.3.27 et 2.0.43.
À vous de choisir.

Si vous utilisez Windows ME 2000 ou XP ou bien si vous avez déjà installé l'Installeur Microsoft® vous pourrez sans crainte télécharger les fichiers MSI Installer Package.
Si vous doutez ou si vous n'avez pas l'installeur, l'Installer Package fera l'affaire.

Installer Apache

Ha bin non, je me suis trompé, c'est cette partie la plus simple de tout l'article... Il faut exécuter l'installation et se laisser guider.

S'il faut saisir un domain et un servername mettez localhost

Un petit conseil cependant : N'installez pas Apache au fond de votre disque dur. Par exemple C:\Apache ira très bien Program Files, aussi d'ailleurs, c'est juste pour la "commodité d'accès"... Surtout en ligne de commande...

Configurer Apache

Nous y voilà...
Apache se configure à l'aide d'un "simple" fichier texte : le fichier httpd.conf
Ce fichier se trouve dans le répertoire conf d'Apache et peut se modifier avec le bloc-note ou tout autre éditeur de fichiers texte.

Le signe # commence une ligne de commentaire et cette ligne ne sera donc pas "lue" par Apache.
La majorité des informations contenues dans httpd.conf sont commentées puisqu'il s'agit d'aides à la configuration, ou d'options à activer (en supprimant le #)

Par exemple, si vous vous demandez à quoi sert la ligne

# ProxyVia On

regardez quelques lignes plus haut vous trouverez une petite explication (en anglais) sur cette option. Et si vous souhaitez l'activer, décommentez la ligne en supprimant le #.

Nous allons commencer par trouver la ligne qui permet d'identifier le serveur par son nom : Imaginons que vous ayez acheté le nom de domaine "http://www.phptools4u.com" et que ce nom de domaine soit redirigé vers votre serveur apache. Vous devrez donc définir la ligne ServerName comme suit :

ServerName www.phptools4u.com

Mais puisque que vous n'avez pas le nom de domaine phptools4u.com (et non...) il va falloir définir un ServerName qui puisse identifier votre machine à coup sûr : localhost ou bien l'ip correspondant au loopback : 127.0.0.1

Si l'installation s'est bien passée voilà à quoi va certainement ressembler la ligne ServerName de votre httpd.conf :

ServerName localhost

ou

ServerName 127.0.0.1

Vous pouvez aussi bien, si vous avez une ip fixe ou une redirection dns, mettre votre redirect :

ServerName chezmoi.dyndns.org

Apache a besoin ensuite de connaitre l'endroit du disque où il se trouve, bin oui, c'est comme ça.
Trouvez la ligne ServerRoot, et spécifiez le chemin jusqu'à Apache (si ce n'est déjà fait).

Par exemple, si j'installe Apache dans le répertoire Apache Group de mon répertoire Program Files sur C :

ServerRoot "C:/Program Files/Apache Group/Apache"

Notez l'utilisation du slash / et non du backslash \

Indiquons ensuite à Apache ou se trouvera la racine du site avec la directive DocumentRoot. L'arborescence de mon site commencera à la racine du répertoire web de mon disque D :

DocumentRoot "D:/web"

Enchaînons en spécifiant le même chemin dans la directive Directory

<Directory "D:/web">

(Par défaut, DocumentRoot et Directory pointent vers le répertoire htdocs du répertoire Apache.)
Voilà, on pourrait (vous devez) aller beaucoup plus loin dans la configuration d'Apache pour régler Timeout, Ports, Logs et autres, mais il faudrait un site entier pour expliquer vraiment tout ça.

Utiliser Apache

Vous aurez besoin d'une console en ligne de commande (Invite de commandes) pour lancer et arrêter Apache.

Rendez-vous dans le répertoire d'Apache et tapez :

apache -h

pour obtenir les liste des options disponibles

apache -k start

pour démarrer (ou apache tout court)

apache -k restart

pour le re-démarrer

apache -k stop

pour ? oui, bien joué.

apache -k install

pour installer apache en tant que service (Windows NT, 2000 et XP)

apache -k uninstall

pour désinstaller le service

Un test ?

C'est le moment du test :
Créez un fichier HTML (test.html) à la racine du serveur et lancez un navigateur à l'adresse http://localhost/test.html. Si le fichier html s'affiche, c'est qu'Apache est bien installé et configuré.

Bon, on installe PHP ?

Aller plus loin avec Apache :

Lire la suite »
Posté par Loranger à 14:45 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :
09
Juin
2002

Gestion des dates en PHP

Gérer les dates en PHP, voilà une question qui revient souvent dans les forums des grands sites de la communauté. Nous allons essayer ici de retracer les grandes lignes de la manipulation de dates et éventuellement quelques trucs et astuces pour optimiser votre code.

Au programme :

  • Comment PHP gère-t-il les dates ?
  • Que faire avec les timestamps ?

Comment PHP gère-t-il les dates ?

PHP, comme beaucoup d'applications, utilise le timestamp UNIX pour gérer les dates.
"Cool !" me direz-vous, mais qu'est-ce qu'un timestamp ?

Un timestamp UNIX est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00h 00m 00s GMT. Par exemple, pour le 14/09/2006 à 15:17:16 , le timestamp correspondant est 1158239836.
Ainsi, le temps étant normalisé, il devient possible de le formater comme l'on veut.

La question suivante est : Comment récupérer le timestamp en cours ?
Il existe une fonction php "toute prête" pour l'obtenir, il s'agit de time()

Exemple :

<?php
    $mavariable 
time();
    echo 
'Le timestamp en cours est : <B>'.$mavariable.'</B>';
?>

Ce petit bout de code retournera :

Le timestamp en cours est : 1158239836.

Cette fonction permet donc de récupérer le timestamp au moment de l'exécution, mais il pourrait être intéressant de connaître le timestamp pour une date donnée.
Pour cela, il existe la fonction PHP mktime()
Elle s'utilise avec les arguments suivants :

<?php
    $timestamp 
mktime(int heureint minuteint secondeint moisint jour,
                                   
int année, |[int heure_hiver|]);
?>

Le paramètre heure_hiver, optionnel, est là pour pouvoir spécifier si l'on est en heure d'hiver ou pas :
1 : heure d'hiver
0 : heure "normale"
-1 : (défaut) si on ne sait pas Par conséquent, pour obtenir le timestamp correspondant au 22 mai 1981 à 00h45, il suffit de :

<?php
    
echo mktime(04505221981);
?>

Simple non ?

Lire la suite »
Posté par Mathieu LESNIAK à 15:12 dans la catégorie Articles | RSS catégorie
Tag(s) associé(s) :