Login phpBB Internet Explorer

Petit nouveau ! | 2 Messages

19 févr. 2009, 17:11

Bonjour, je viens donc de m'inscrire sur ce forum car pour un projet d'études je dois réaliser un site internet avec gestion des utilisateurs et création d'un gestionnaire de contenu etc... Enfin bref, je suis un Linuxien qui donc n'a pas Windows sur son ordinateur.... Vous voyez où je veux en venir ?

Nous sommes 2 à travailler dessus (bien sur un autre Linuxien), notre site avance bien mais tout à coup je me demande la gueule qu'il aurait sous Internet Explorer . . . J'aurais pas dû . . . Je suis parti en dépression . . .

De gros problèmes de design mais ça je connais j'ai déjà eu des sites à faire et à résoudre ce problème, par contre le plus inquiétant et que sous IE, le script qui permet de se logguer dans les utilisateurs du forum phpBB ne fonctionne plus.

Comme vous l'aurez compris on utilise les mêmes bases que phpBB, ce qui nous facilite cette gestion. Le script dont je parle est un script que nous avons trouvé tout fait et qui marchait à MERVEILLE . . . sous Firefox . . .

Je vous donne le script (qui n'est pas très long) et SVP aidez-nous à se sortir de ce problème avec IE . . . :(

<?php
define('IN_PHPBB', true);
$phpbb_root_path =  '../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);
if (isset($_POST['login']))
{
   $username = request_var('username', '', true);
   $password    = request_var('password', '', true);
   $autologin   = (!empty($_POST['autologin'])) ? true : false;
   $viewonline = (!empty($_POST['viewonline'])) ? 0 : 1;
   $admin = 0;
   $result = $auth->login($username, $password, $autologin, $viewonline, $admin);
   if ($result['status'] != LOGIN_SUCCESS)
   {
      $err = $user->lang[$result['error_msg']];
      if ($result['error_msg'] == 'LOGIN_ERROR_USERNAME' || $result['error_msg'] == 'LOGIN_ERROR_PASSWORD')
      {
         $err = (!$config['board_contact']) ? sprintf($user->lang[$result['error_msg']], '', '') : sprintf($user->lang[$result['error_msg']], '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>');
      }
   }
   else
   {
      $auth->acl($user->data);
   }
}
echo "<script language='Javascript'>document.location='../index.php'</script>";
//header('Location: ../index.php?page=accueil');
?>
Le script est donc dans un fichier tout seul, et quand il a fini son travaille nous renvoie a la page que l'on a indiqué dans le header.

Malheureusement ce header plante sous IE, c'est pour cela que je l'ai commenté. Par contre la fonction JS juste au dessus marche avec les deux.

Merci d'avance à tous pour votre aide.

Bez856

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 févr. 2009, 18:08

Peux-tu nous indiquer le message d'erreur que tu obtiens sous IE ?

A première vue, je dirais que tu dois renvoyer du code au navigateur (du code html, du texte en dehors de balises php, des echo ou print, ...) avant l'appel au header(). En général ceci empêche le header() de fonctionner puisqu'il doit être appelée avant tout envoi de données au navigateur...

... sauf lorsqu'un buffer est défini dans le php.ini. En effet, le buffer te permet de stocker ces données avant de les envoyer au navigateur. Dans ce cas, tant qu'on ne dépasse pas la taille du buffer, les données sont retenues et les headers fonctionnent. Il suffit donc qu'IE ait un peu plus de données que FF pour que le buffer déborde et ne fonctionne plus...

mais on va déjà voir quels sont les symptomes avant de se lancer dans un diagnostique ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

19 févr. 2009, 18:12

Bonjour Ryle !!

Merci de t'interesser à mon problème.

Donc le problème de header je viens de le résoudre, IE n'accepte que les URL en absolue . . .

Par contre a la fin de mon script il me renvoie bien sur mon index.php mais il ne m'a pas loggué . . .

J'explique, sous FF, on entre son loggin, MDP, on clique sur se conencter, le script s'execute et il nous renvoie sur l'index qui lui regarde la variable de session $user phpBB et voie qu'on est bien connecté . . . NO SOUCIS !

Maintenant sous IE : login, MDP, se connecter, il lance le script, nous renvoie à l'index mais cette fois il ne nous a pas connecté dans la variable . . . :(

Merci de ton aide.

Bez856

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 févr. 2009, 12:44

Hmm... doit y avoir autre chose, parce que j'ai jamais eu de problèmes avec des url relatives dans un header(), même sous IE... peut être un problème de chemin... le script appelé pour l'authentification est bien dans un sous-dossier de celui comportant le fichier index.php ? Y a pas un jeu d'include/require qui ferait qu'ils soient en fait au même niveau, et ferait qu'IE bloque sur un "../" demandé à la racine du site ?
(c'est que des hypothèses, parce que normalement ça fonctionne en absolu comme en relatif...)

Pour le problème d'authentification, un peu de debug s'impose... commence par un print_r($_POST) dans ton script pour vérifier les informations que tu reçois du navigateur et les comparer avec FF :)

Tu peux aussi coller un print_r($_SESSION) pour vérifier ce qui est stocké après traitement et avant redirection :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...