2009-07-30 9 views
2

Maintenant c'est le problème le plus bizarre que j'ai jamais eu en PHP.PHP/HTML/CSS: IE agissant bizarrement en utilisant require_once()

Toutes les pages semblent normales sauf une; Quand j'ai vu le problème pour la première fois, j'ai pensé que c'était l'un de ces problèmes courants avec IE et les feuilles de style (j'ai un fichier CSS spécifique sur cette page). J'ai essayé d'exclure le fichier CSS juste pour m'assurer que le problème était vraiment dans ce fichier, mais ce n'était pas le cas. Puis j'ai pensé que j'avais oublié de fermer n'importe quelle balise HTML, donc j'ai parcouru le code plusieurs fois, mais tout semblait correct. Alors j'ai commencé à mettre le code dans les commentaires et comparer avec IE jusqu'à ce que je pris conscience que lorsque je frappé légèrement le code suivant dans un commentaire, la page elle-même agi normal:

require_once(PATH_INCLUDES . 'adjacency.php'); 

C'est un chemin valide, et le fichier ne contient tout simplement une classe avec des fonctions - il n'y a pas de sortie à part die() si une requête MySQL échoue.

Certaines choses qui ont l'air bizarre dans IE sont les suivantes:

  • Le conteneur est normalement centrée, il est maintenant à gauche.
  • Un arrière-plan avec repeat-x ne va pas jusqu'au bout.
  • La fonctionnalité de survol dans le menu ne fonctionne pas.

Quelqu'un?

Modifier: J'ai essayé d'inclure adjacency.php dans un autre fichier, et le même problème s'est produit.

Répondre

5

En guise de supposition, il y a probablement de l'espace à la fin du fichier d'inclusion après la fermeture "?>". (L'une des raisons pour lesquelles Zend Framework recommande de ne pas utiliser la balise PHP de fermeture.)

+2

probablement la cause, toute sortie avant que le doctype ne déclenche quirksmode dans IE6 –

+0

Je pensais que aussi, donc j'ai vérifié cela et même, dans IE, clic droit-> source. Rien n'est avant le doctype. – Ivar

+1

Je vérifierais le début et la fin du fichier d'inclusion juste pour être sûr - il pourrait être un caractère non-affichage qui cause le problème. –

1

Le fichier PHP inclus commence-t-il par un BOM UTF-8 (octet de commande)? Il s'agit d'une séquence d'octets invisible qui apparaît parfois au début d'un fichier texte Unicode pour faciliter la détection automatique de l'UTF. Malheureusement, PHP est un peu naïf, et affichera la nomenclature au fur et à mesure de sa lecture à partir d'un fichier PHP inclus. Par mon expérience, IE peut gérer une nomenclature, mais si la nomenclature est doublée (comme ce sera le cas si le fichier PHP demandé par le navigateur et un inclus contient la nomenclature), il ne voit pas le doctype comme étant au début et le mode quirks est donc déclenché.

Assurez-vous que votre éditeur est configuré pour enregistrer sans nomenclature.

+0

Je sauvegarde mes fichiers au format UTF-8. J'utilise UltraEdit, et DOM semble être désactivé. – Ivar

Questions connexes