Php et ses aléas !
Â
Lorsqu’on code un site internet il arrive parfois et même très souvent que les choses ne se passent pas tout à fait comme prévu.
Voici une liste non exhaustive de petits bugs incompréhensibles pouvant parfois nous faire tourner la tête avec les bonnes formules magiques !
Des $_POST qui disparaissent !
Alors celui-là fut clairement le mystère qui nous a pris le plus de temps à résoudre !
La problématique est simple, une fois qu’on valide un formulaire la page censée récupérer les valeurs nous indique que tout est vide et qu’elle n’a rien reçu !
L’html est bon, le formulaire est bon, la console du navigateur indique que tout a été correctement envoyé et pourtant, rien…..
Nous avions beau faire des echo, des print_r, des die, des try and catch cela restait introuvable, de plus, le comportement n’était jamais le même et totalement aléatoire !
Après plusieurs rounds nous avons enfin identifié le coupable ! La configuration du serveur par default de OVH.
Pour résoudre ce problème, créez un fichier ".ovhconfig" à la racine de votre site avec comme contenu :
[size=2][font=Consolas]app.engine=php[/font][/size]
[size=2][font=Consolas]app.engine.version=5.5[/font][/size]
[size=2][font=Consolas]http.firewall=none[/font][/size]
[size=2][font=Consolas]environment=production[/font][/size]
La page blanche
99% du temps cela vient du fait qu’il y une error php qui ne vous a pas été remontée clairement.
[size=2][font=Consolas]ini_set([/font][/size][color=#0000c0][size=2][font=Consolas]'display_errors'[/font][/size][/color][size=2][font=Consolas], 1);[/font][/size]
[size=2][font=Consolas]error_reporting(E_ALL);[/font][/size]
Vous permettra d’afficher correctement les erreurs.
Si vous avez toujours la page blanche après ça regardez les fichiers log du serveur.
Dans tous les cas recherchez votre erreur de code et page blanche il n’y aura plus ! L’oublie du « ; » est le plus fréquent !
Une redirection sans fin
 « Erreur le serveur présente une boucle de redirection sans fin…. »
2 niveaux de redirection les plus courantes :
[ul]
[li]Un mauvais include :
Il faut bien identifier le chemin absolu url et chemin absolu réel sur le serveur :
Aidez-vous de dirname(__FILE__)Â pour identifier le dossier dans lequel se situe votre fichier.
Parfois si vous êtes dans un Sous-dossier et que vous n’entrez pas directement par un sous-domaine qui gère la redirection il vous suffira d’inclure le dossier parent dans votre chemin.[/li]
[li]Un htAcess mal configuré :
Le plus simple, la redirection relative, voici un exemple :[/li]
[/ul]
[size=2][font=Consolas]SetEnv PHP_VER 5_4[/font][/size]
[size=2][font=Consolas]SetEnv REGISTER_GLOBALS 0[/font][/size]
[size=2][font=Consolas]RewriteEngine on[/font][/size]
[size=2][font=Consolas]RewriteCond %REQUEST_FILENAME !-f[/font][/size]
[size=2][font=Consolas]RewriteCond %Request_URI !/MON_DOSSIER_A_NE_PAS_REDIRIGER[/font][/size]
[size=2][font=Consolas]RewriteRule . ./index.php[/font][/size]
[size=2][font=Consolas]Options -Indexes[/font][/size]
[size=2][font=Consolas]ErrorDocument 404 ./index.php[/font][/size]
Les accents dans le titre d’un mail !
Inutile de le préciser, un mail avec un titre aux accents encodés n’importe comment passe directement en spam !
Voici une petite ligne de code forte utile :
mb_encode_mimeheader(utf8_decode($title_du_mail))
utf8_decode est optionnel, cela dépend la façon dont est encodée votre variable !
Le JavaScript et les accents
Voici un petit morceau de code qui nous a laissé bien perplexe !
< script>
[left][font=Courier New]Var valeurJs = ‘< ?php[/font][/left]
[left][font=Courier New]$val = ‘Fréjus’ ;[/font][/left]
[left][font=Courier New]echo $val ; ? >[/font][font=Courier New]’ ;[/font][/left]
< / script>
[left]Résultat :
[/left]
< script>
[left][font=Courier New]Var valeurJs =’Fr&eacut;jus’[/font][/left]
< / script>
Â
Nous avons d’abord pensé que cela venait de notre façon d’afficher la variable PHP mais en réalité cela vient du js qui ne tolère pas les accentuations transmise de la sorte !
Deux solutions pour résoudre ce problème, utiliser [color=#0000bb][size=2][font=Courier New]strstr[/font][/size][/color]  pour, soit retirer toutes les accentuations de la variable php, soit remplacer les accents php par  [url=http://www2.craven.fr/blojsom/blog/default/Work/Programming/2007/07/04/Tableau-des-accents-pour-JavaScript-et-HTML.html?page=comments]les accents js[/url]