<C²: webløg />

Courriel - email address

Avatar Denis

mardi 28 janvier 2003
par Denis Boudreau

PHP et la beauté du Web

La prochaine fois que j'ai une perte d'énergie ou d'entrain vis-à-vis le Web et que j'ai le goût de tout lâcher (rassurez-vous, ça n'arrive pratiquement jamais), rappellez-moi que des gens comme Eric Daspet existent et que grâce à eux, le Web est vraiment un médium fantastique d'expression, d'entraide et de collaboration. Imaginez; à peine quelques heures après la mise en ligne de mon annonce de retour, dans laquelle je me plaignais de l'enfer PHP dans lequel j'étais plongé, ce parfait inconnu m'arrive avec une solution qui me semble pleine de promesses pour rétablir mon formulaire de prise de contact. Je vous laisse en apprécier un bout :

Sans plus d'informations difficile de faire un diagnostique autre que des devinettes mais vous parlez de changement de version de php et de récupération impossible de données de formulaire, et ça c'est la marque incontestable d'un problème assez classique dans les supports d'aide PHP. Ce problème vient probablement de la directive de configuration "register_globals" [1]. Depuis quelques temps (php 4.2.0) par défaut php n'enregistre plus les données venant de l'utilisateur comme variables globales. C'est à dire que si vous avez un champ de formulaire nommé "form" vous ne trouverez plus la variable $form mais uniquement la variable $_REQUEST['form'] (ainsi que $_GET['form'] ou $_POST['form'] suivant la méthode d'envoi du dit formulaire).

Deux manières de résoudre votre problème :

  • Modifier la directive de configuration pour faire marcher tout comme avant. C'est déconseillé car l'ancien comportement exposait assez vite à des problèmes de sécurité si on ne fait pas attention mais ca a l'avantage de marcher sans y passer 3 heures : Modifier le fichier php.ini (la fonction phpinfo() indiquera où il se trouve sous votre système) pour modifier la ligne "register_globals" de off à on. Si ce fichier n'existe pas vous pouvez le créer avec juste la ligne "register_globals = on".
  • Utiliser les entrées normales, c'est à dire aller lire les cookies dans $_COOKIE['moncookie'] et non $moncookie, les variables de formulaire avec method="post" dans $_POST['monchampdeformulaire'] ou $_GET['monchampdeformulaire']. Pour simplifier toutes ces variables se retrouves aussi dans le tableau $_REQUEST. La page d'aide [2] devrait vous aider à y voir plus clair. Malheureusement je l'avoue cette solution a le désavantage de devoir vous faire reprendre votre code.

C'est pas gentil ça ? Je n'ai rien tenté encore pour le moment, faute de temps, mais je compte bien m'y mettre dès ce soir. Pour ce qui est des autres problèmes, je crois les avoir réglé, du moins en surface, tout semble en ordre (à part les archives et la BD). Mais vous et moins savons très bien que tout n'est jamais parfait alors je garde l'oeil ouvert. Un gros merci à Eric pour son aide ! :)

Denis Boudreau | 2003.01.28 @ 08:40

Alors, qu'en pensez-vous ?

Voici ce que vous aviez à en dire... vos impressions, recueillies à vif.

Ce carnet n'a pas encore été commenté. Avez-vous envie de briser la glace ?

Les commentaires et trackbacks sont désormais fermés. Pour toute remarque, vous pouvez toujours nous contacter.

Pisteur (Trackback)