[PHP] Page interprétée entièrement, pas d'output vers le browser

Page interprétée entièrement, pas d'output vers le browser [PHP] - PHP - Programmation

Marsh Posté le 25-01-2004 à 20:25:42    

Quelles sont les raisons possibles ?
 
Nous ne faisons que de l'interfacage MySQL, sur un 90Plan OVH, et on gère des sessions, c'est tout.
 
Autrement dit, la page est interprétée ( les données sont insérées dans les bases, etc), mais aucun output n'est emis vers le browser ( IE en l'occurence ), même celles qui ne sont pas dans des balises PHP ( mais on passe par des includes pour les insérer ).
 
Avez vous des idées, des conseils concernant les causes les plus courante de ce type d'"erreur" ?
 
Quand elle arrive, on fait un refresh et ca passe nickel O_o

Reply

Marsh Posté le 25-01-2004 à 20:25:42   

Reply

Marsh Posté le 25-01-2004 à 20:28:25    

sans plus de détail, je pencherais pour une mauvaise initialisation de certaines variables, mais sans conviction.

Reply

Marsh Posté le 25-01-2004 à 21:09:15    

ben oui, mais comment expliquer que, par exemple, si la page commence par include("fichier.php" ); , et que ce fichier contienne que du texte ( en gros, des balises html avec un ti script php au bout), aucun output ne soit envoyé ?
 
Par exemple :
 
index.php

Citation :


<?include("session.php" );
include("contenu.php" );?>


 
contenu.php

Citation :


<HTML>....</HTML>


 
Et aucun message d'erreur rien au navigateur ?

Reply

Marsh Posté le 27-01-2004 à 04:32:52    

et sans le session.php ca marche toujours pas :??:  
(faut reduire au strict minimum produisant toujours le problème)

Reply

Marsh Posté le 27-01-2004 à 08:17:22    

- exit;
- une fonction de type ob_* utilisée

Reply

Marsh Posté le 29-01-2004 à 13:07:10    

désolé d'etre resté muet pendant pas mal de temps :(
 
On a avancé : on sait que ca vient des sessions ( on vire le session_start() ca le fait plus, on le remet ca plante ).
 
Voici notre fichier de session utilisé actuellement ( appelé via un include() ) : ( je précise que je ne suis pas l'auteur de ce code :D )
 

Code :
  1. <?
  2. function VerifSession ($login,$pass,$conn)
  3. {
  4. if(empty($login) || empty($pass))
  5. {
  6.     return false;
  7. }
  8. $query = mysql_query("select USERPASSWD from tuser where USERNAME='$login' AND USERACTIVATION='0'" , $conn);
  9. $query = mysql_fetch_array($query);
  10. if( $query['USERPASSWD'] == $pass)
  11. {
  12.     // mot de pass encrypté
  13.     return true;
  14. }
  15. else
  16. {
  17.     return false;
  18. }
  19. }
  20. session_start();
  21. if($disconnect==1)
  22. {
  23. session_destroy();
  24. setcookie("login_nom","" );
  25. setcookie("login_pass","" );
  26. return(0);
  27. }
  28. else
  29. {
  30. if(isset($login))
  31. {
  32.  $login_nom=$login;
  33.  $login_pass=md5($pass);
  34. }
  35. if (VerifSession($login_nom,$login_pass,$link))
  36. {
  37.  $_SESSION ['login_nom'];
  38.  $_SESSION ['login_pass'];
  39.  $query = mysql_query("select * from tuser where USERNAME='$login_nom' AND USERACTIVATION='0'" , $link);
  40.  $query = mysql_fetch_array($query);
  41.  $login_nom = $query[USERNAME];
  42.  $expire = 7*24*3600;
  43.  setcookie("login_nom","$login_nom",time()+$expire);
  44.  setcookie("login_pass","$login_pass",time()+$expire);
  45.  return(1);
  46. }
  47. else
  48. {
  49.  //session_destroy();
  50.  return(0);
  51. }
  52. }
  53. ?>


 
Je précise que le probleme arrive au "hasard" et est des fois ( mais tres rarement) reproductible... avec des clicks dans le bon ordre et surtout le bon timing ( c'est ca qui est étrange).
 
Une idée ? ;) Merci :)


Message édité par Tetedeiench le 29-01-2004 à 13:12:39
Reply

Marsh Posté le 29-01-2004 à 13:38:56    

Ben tu fais un return dans le main avec tes sessions, c'est pas ça le problème ?  
Puis je me rapelle des sessions chez OVH + IE, j'ai changé les deux maintenant donc je ne sais pas d'où venait le problème... C'était temps de déconnection aléatoire (Ca venait d'IE quasi sûr :p)

Reply

Marsh Posté le 29-01-2004 à 14:07:16    

belgique a écrit :

Ben tu fais un return dans le main avec tes sessions, c'est pas ça le problème ?  
Puis je me rapelle des sessions chez OVH + IE, j'ai changé les deux maintenant donc je ne sais pas d'où venait le problème... C'était temps de déconnection aléatoire (Ca venait d'IE quasi sûr :p)


 
"il" fait, et non c possible, le include permet le return ( ca arrete le include et continue le script principal ).
 
Ca le fait sur un 90Plan OVH ET sur un dédié OVH ( avec config spéciale donc ).
 
D'autres sites connus utilisant les sessions sur le meme serveur dédié ont aucun souci.


Message édité par Tetedeiench le 29-01-2004 à 14:07:38
Reply

Marsh Posté le 29-01-2004 à 14:18:55    

Ah oui tiens, faudrait que je lise la doc une fois. Mais un problème aléatoire comme tu le dis, doit être provoqué quand il perd la session. Regarde bien le code dans ce cas.

Reply

Marsh Posté le 29-01-2004 à 14:36:28    

ben la ou on capte pas, c'est que si on met ca a la place du code :
 

Code :
  1. session_start();
  2. $succ_sess2=1;


 
A la place de notre include session.php, le bug apparait :(

Reply

Marsh Posté le 29-01-2004 à 14:36:28   

Reply

Marsh Posté le 29-01-2004 à 14:57:15    

compression de page ?
session.cache dans le php.ini ?
 
faudrait peut être creuser au niveau des entêtes aussi, getallheaders() & co
 
EDIT : en y réflechissant un peu et en lisant ce code infâme, t'irais plus vite à tout réécrire :D
 
file le code complet du script qu'on puisse tester aussi


Message édité par Sh@rdar le 29-01-2004 à 15:17:36

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 29-01-2004 à 15:59:59    

phpinfo :  

session
Session Support  enabled  
Registered save handlers  files user  
 
Directive Local Value Master Value  
session.auto_start Off Off  
session.bug_compat_42 On On  
session.bug_compat_warn On On  
session.cache_expire 180 180  
session.cache_limiter nocache nocache  
session.cookie_domain no value no value  
session.cookie_lifetime 0 0  
session.cookie_path / /  
session.cookie_secure Off Off  
session.entropy_file no value no value  
session.entropy_length 0 0  
session.gc_divisor 100 100  
session.gc_maxlifetime 1440 1440  
session.gc_probability 1 1  
session.name PHPSESSID PHPSESSID  
session.referer_check no value no value  
session.save_handler files files  
session.save_path /tmp /tmp  
session.serialize_handler php php  
session.use_cookies On On  
session.use_only_cookies Off Off  
session.use_trans_sid On On  


 
Ca le fait que sous IE on dirait ( impossible de le reproduire sous firebird par exemple ).
 
Pour le code complet, vu le nombre d'include, ca risque d'etre chaud :D Je regarde encore un peu et je vous dit quoi.

Reply

Marsh Posté le 29-01-2004 à 16:01:06    

Cf ce que j'ai dit, regarde ce qu'il se passe quand il n'arrive pas à créer une session. En fait quand il arrive sur la page, c'est comme si c'était un nouvel utilisateur.

Reply

Marsh Posté le 29-01-2004 à 16:07:26    

belgique a écrit :

Cf ce que j'ai dit, regarde ce qu'il se passe quand il n'arrive pas à créer une session. En fait quand il arrive sur la page, c'est comme si c'était un nouvel utilisateur.


 
oui, mais a ce moment la, pourquoi n'avoir AUCUN output, comme si rien ne s'était executé ?
 
par exemple, si je fais :

Citation :


<?php
 include('session.php')?>
<HTML>blablablabla</HTML>


 
donc avec du code non interprété par php et forcément envoyé au browser ( notre code ne contenant pas de exit() ), il ne le recoit pas ?
 
Ca a l'air d'arriver qu'avec IE en plus, et lors de la page blanche, on fait un refresh et ca passe...
 
Aucune trace, aucun message d'erreur affiché, meme quand on lui demande d'afficher... rien. le néant total. Sur deux serveurs différents.


Message édité par Tetedeiench le 29-01-2004 à 16:07:41
Reply

Marsh Posté le 29-01-2004 à 16:10:47    

Vu la taille du truc, je vais bosser dessus et je posterai le script minimal avec lequel on reproduit le bug ;)
 
A ce soir !

Reply

Marsh Posté le 29-01-2004 à 16:41:52    

Un truc qui m'est deja arrivé c'est de rien avoir à l'écran et quand j'ai regardé le code source de la page blanche affichée, en fait y a avait plein de trucs dont une erreur PHP qui était indiqué.
 
Donc quand tu dis "pas d'output vers le browser" c'est juste visuel ou bien c'est la source de la page qui est vide aussi ?

Reply

Marsh Posté le 29-01-2004 à 16:57:32    

ce que je comprends pas, c'est que j'ai jamais réussi a reproduire le bug avec mozilla. Juste avec IE. C'est plutot simple : cliquer comme un taré et hop il apparait.
 
Il est la actuellement sur ma page : http://www.ocbase.com .
 
Baladez vous avec IE un peu partout, en naviguant notamment entre les news et la cat OCCT en haut, en cliquant dans le sous-menu et sur le titre des news. Vous allez voir, au bout d'une trentaine de clicks, il apparait.

Reply

Marsh Posté le 29-01-2004 à 17:29:40    

Putain je viens de truver :heink:
 
Ca venait du meta ( en gros, si je faisait outputter a PHP avant le meta ca marchait , apres ca marchait plus).
 
j'ai testé en déplacant ce petit script :
 

Code :
  1. <?
  2. foreach ($headers as $header => $value) {
  3.    echo "$header: $value <br />\n";
  4. }
  5. ?>


 
Le meta qui merde :

Code :
  1. <meta http-equiv="content-Type" content="text/html; charset=iso-8859-15" />


 
Le meta quivabien ( forum ) :

Code :
  1. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />


 
A part le 5 au bout et le iso en minuscule, rien ne change.
 
un bug d'IE en fait, qui des fois devait pas comprendre ce charset j'imagine :(


Message édité par Tetedeiench le 29-01-2004 à 17:30:09
Reply

Marsh Posté le 29-01-2004 à 17:51:58    

J'ai comme un doute là :D

Reply

Marsh Posté le 29-01-2004 à 18:02:00    

moi j'ai cliqué comme un fou sans jamais avoir ce problème (avant ta "solution" je précise..)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 29-01-2004 à 18:03:09    

Sh@rdar a écrit :

moi j'ai cliqué comme un fou sans jamais avoir ce problème (avant ta "solution" je précise..)


 
on le reproduisait assez facilement sous IE6, on a changé le meta et hop disparu :)

Reply

Marsh Posté le 09-09-2005 à 00:56:30    

Bonjour à tous.
 
Après avoir beaucoup cherché sur le net pour voir si qqun avait le même problème que moi, j'ai enfin trouvé ce topic :)
 
Je rencontre exactement le même problème incomprehensible sur un serveur OVH.
Sous IE 6, sans comprendre pourquoi, sur certaines pages je n'ai aucun output vers le navigateur. Je ne peux même pas afficher la source de la page, celle-ci ne contient absolument rien.
Une page defaillante ne fonctionne que si je la réactualise.
Je ne trouve aucune explication rationelle. :(
 
Si je regarde ce qu'à posté Tetedeiench, ce qu'on a en commun c'est le fait qu'on est tous les 2 sur un serveur OVH, qu'on utilise les sessions et que le bug apparait sous IE6. En local ou avec Firefox, aucun souci.
J'ai essayé ce qui a marché pour lui (le meta) mais ça ne fonctionne pas pour moi  :s
 
Quelqu'un d'autre a déjà rencontré ce problème vraiment bizzar?
 
Merci de m'aider, c'est vraiment une galère.

Reply

Marsh Posté le 09-09-2005 à 01:36:50    

Essaye de mettre ça à la première ligne de ton fichier de base :
error_reporting(E_ALL);
Y a tjs pas d'erreur ?

Reply

Marsh Posté le 09-09-2005 à 01:41:40    

Non rien, je peux même pas accéder à la source de la page :s
 
Je sais pas si c'est spécifique à OVH, mais je suis pas le 1er à rencontrer ce problème :
 
http://forum.ovh.com/showthread.ph [...] eadid=3704
 
Je sais vraiment pas quoi faire :sweat:  

Reply

Marsh Posté le 09-09-2005 à 01:45:40    

Je sais pas comment expliquer ça mais j'ai carrément viré la meta de charset et ça semble fonctionner. Enfin, la page s'affiche quoi...
 
Mais je tiens pas à laisser mes pages bancales sans cette meta mais je vois pas trop comment la modifier.
 
La voici au cas où :
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

Reply

Marsh Posté le 09-09-2005 à 01:48:30    

et :
ini_set('zlib.output_compression', 'Off');
???

Reply

Marsh Posté le 09-09-2005 à 01:49:04    

Autre élémentn sait-on jamais :
 
Je sais pas si IE6 est complétement buggué où si c'est normal qd on ne specifie pas le charset mais je peux pas afficher la source de ma page.
Pareil que quand rien ne s'affiche donc.


Message édité par Rei Ishido le 09-09-2005 à 01:51:08
Reply

Marsh Posté le 09-09-2005 à 01:50:14    

kalex a écrit :

et :
ini_set('zlib.output_compression', 'Off');
???


Non pas mieux.

Reply

Marsh Posté le 27-09-2005 à 10:22:52    

bonjour,  
j'ai eu le même problème et j'ai perdu un tas de temps... en effet cela ne semble se produire que sur ie pc, quand les sessions php sont activées, mais de manière tout à fait aléatoire : le cache ie du client, ainsi que les questions de securité parentale semblent jouer. Autre remarque on dirait aussi que ça tourne autour du fournisseur ovh (mais c'est peut être seulement une coincidence)
je n'ai toujours pas compris ce qui se passe, mais depuis jeudi cela semble reglé (des copains ont cliqué comme des fous sur plusieurs installations et il n'y a plus de pages blanches).
 
pour ma part j'ai fait comme ça : ce n'est pas super propre comme code, mais en tout cas ça marche et ç'est toujours du valide...
 
bien que le debut de ma sortie (bien après le session_start() et de tas d'autres ops) soit

Code :
  1. $out="<!DOCTYPE html PUBLIC \\"-//W3C//DTD XHTML 1.0 Strict//EN\\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\\"><html xmlns=\\"http://www.w3.org/1999/xhtml\\">";
  2. $out.= "<head>\\n<meta http-equiv=\\"content-type\\" content=\\"text/html; charset=UTF-8\\" />\\n";


 
la ligne http-equiv du charset ne serait pas toujours prise en compte par ce "cher" ie/pc
du coup, mon script commence par

Code :
  1. <?php session_start();
  2. header("Content-Type: text/html; charset=UTF-8" );


voilà... Le meta tag http-equiv reste toujours en place dans $out, et du coup l'information est redondante, mais si ce n'est pas beau au moins ça ne semble pas poser de problèmes...
merci à tous de m'avoir mis sur la voie et de me signaler toute solution meilleure, ou, si vous avez compris ce qui se passe, de bien vouloir nous l'expliquer...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed