El blogo de alterego ! (le blog de alterego)
Retour au blog <<

[PHP] Petit problème de Session

Dimanche 22 juin 2008 à 20 h 45
Je suis en train de développer une nouvelle version du site web pour mon mod, mais j'ai un petit problème au niveau des variables de session, plus particulièrement au niveau du session_start();

Je l'ai bien mis des la première ligne rien au dessus, pas un espace en trop quedale et pourtant ça ne fonctionne pas quand je le met sur mon serveur web ...

Voila l'exemple

Voila le code :

<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html40/loose.dtd">
<html>
<head>
<title>- Have a nice day -</title>
<link type="text/css" rel="stylesheet" href="./style.css">
<script language='Javascript' src='./script.js'></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="author" content="Morpheus-web">
<meta name="description" content="Le site officiel du mod Postal 2 : Have a nice day">
<meta name="keywords" content="phand, hand, have, a, nice, day, total, conversion, Morpheus, resurrection, studios, postal, RWS, running, with, postal dude, postal babes">
<!--[if lt IE 7]>
<style type="text/css">
.dock img { behavior: url(iepngfix.htc) }
</style>
<![endif]-->
</head>
<body>
[...]

Ben la je dois avouer que j'y pige quedale a ce problème ...
Dimanche 22 juin 2008 à 20 h 49
T'es sûr que t'as pas une ligne blanche, un whitespace ou une connerie du genre avant ton bout de PHP ?
Le fichier est inclus dans un autre ? C'est le début complet que t'as refilé ?

(Beurk PHP et XHTML mélangé)
par pthc
Dimanche 22 juin 2008 à 20 h 51
Je crois me souvenir que c'est en rapport avec l'unicode ou quelque chose comme ça. Ça fout une petite en-tête avant ton code.
Change d'éditeur de scripts php.
Dimanche 22 juin 2008 à 20 h 53
Ouais je viens de voir ça, ton fichier doit être en UTF-8 avec BOM, PHP gère pas l'UTF-8 et c'est le BOM qui fait tout foirer, passe ton script en bon gros ANSI (si t'es sous Np++ : Format->Encoder en ANSI)
Dimanche 22 juin 2008 à 20 h 58
Oh putain Asibasth je t'en dois une ! j'ai fait ce que tu m'as dit et ça marche !

Merci beaucoup j'aurais pu me casser la tête longtemps !
par mst
Dimanche 22 juin 2008 à 21 h 10
Depuis quand PHP ne gère pas l'UTF-8 ?
par e-t172
Dimanche 22 juin 2008 à 22 h 33
C'est pas une question de "PHP qui gère pas l'UTF-8" (ce qui en soi ne veut pas dire grand chose). En fait Notepad++ ajoute une séquence spéciale au début de tous les fichiers qu'il enregistre en UTF-8, qu'on appelle le BOM (Byte Order Mark) et qui sert en gros à dire "ce qui suit est de l'UTF-8". C'est normalisé et ça ne devrait donc pas poser de problème, sauf que là, si. Parce que ce BOM constitue des données qui sont envoyées par le serveur web avant le début de script PHP, ce qui cause les problèmes que l'on sait avec les en-têtes HTTP.

A noter que la plupart des éditeurs n'incluent pas le BOM dans les fichiers qu'ils enregistrent en UTF-8, probablement à cause justement de ce genre de coup foireux. Étant donné que le BOM est facultatif ça reste conforme. Notepad++ le fait probablement pour "faire plus propre". On peut néanmoins enregister en UTF-8 sans BOM avec Notepad++, c'est dans les options.

http://en.wikipedia.org/wiki/Byte_Order_Mark
Dimanche 22 juin 2008 à 23 h 00
je voudrais pas troll éternellement... mais pourquoi sans arrêt refaire le site de Phand?
@mst
Dimanche 22 juin 2008 à 23 h 02
La dernière fois que j'ai foutu un fichier un UTF-8 (avec ou sans BOM) avec des accents dans les commentaires... Ben PHP a pas du tout aimé.
@DukeNico
Dimanche 22 juin 2008 à 23 h 08
Oui je sais qu'il a été refait souvent ... mais bon au départ je suis parti sur du flash, le premier étais compliqué a mettre a jour, le deuxième j'avais perdu les sources et le 3 ème était pas forcément très beau et n'était pas forcément en adéquation avec l'univers du mod.

Ce coup ci c'est la dernière version !
par mst
Dimanche 22 juin 2008 à 23 h 17
@e-t172: Merci pour les précisions, je comprends mieux là.

@Asibasth: Tous mes fichiers php sont en full UTF-8, ma bdd idem (avec des tables myisam et innodb) et idem pour tout mon serveur.
Jamais eu de problème. J'utilise vim pour créer/éditer les fichiers et iconv si besoin pour convertir les scripts récupérés de ANSI vers UTF-8.

Ton problème doit venir d'ailleurs :)

Edit: Je viens de vérif (mon serveur est sous Gentoo), php est compilé avec le USE unicode, ceci explique peut être cela tu as peut être pas le support unicode dans ton php ?
par e-t172
Dimanche 22 juin 2008 à 23 h 33
Même sans support unicode, PHP qui aime pas les commentaires avec des accents dedans, UTF-8 ou pas, ça me paraît très, mais alors très très peu probable.
par Mathieu
Lundi 23 juin 2008 à 00 h 46
Pfou heureusement que e-t172 a pris le temps de répondre, j'allais devenir fou en voyant les commentaires :)

Asibasth, mon expérience m'a appris à ne mettre aucun accentué ni dans les commentaires ni dans le code HTML. Fait pareil ca t'évitera bien des soucis.
Lundi 23 juin 2008 à 00 h 55
Tin, grand merci e-t172, je me demandais aussi ce qu'étais ces cons de caractères bizarres invisibles en début de fichier.
Lundi 23 juin 2008 à 06 h 21
output buffering
output buffering
output buffering
output buffering
output buffering
output buffering
output buffering
output buffering
@El_Porico
par e-t172
Lundi 23 juin 2008 à 10 h 43
Non. Là ça ne marchera pas, puisque de toute façon le BOM sera envoyé avant l'appel à ob_start(). Sauf bien sûr si tu actives le buffering dans le php.ini, mais tu n'y as parfois pas accès.
Toutes les personnes enregistrées peuvent poster un commentaire dans ce blog.

Commenter

Tags autorisés : [b] [/b], [i] [/i], [u] [/u], [code] [/code], [img]Adresse d'une image[/img], [url=Adresse d'un site web] [/url]
Vous pouvez aligner vos images à droite ou à gauche en modifiant le tag [img] comme ceci : [img right] ou [img left].

Pour vos vidéos/animations flash : [video]Adresse d'une animation[/video], pour préciser la largeur et hauteur : [video width=100 height=200]...[/video]