php chatbox zonder refreshen wil niet met internet explorer

Pagina: 1
Acties:
  • 139 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,

Ik ben de laatste tijd bezig een chatbox in php te maken zonder dat de pagina hoeft te refreshen. Dit is heel moeilijk te realiseren, misschien wel niet mogelijk uit andere topics te zien. Ik kwam onlangs een scripje tegen die de pagina niet refresht maar de gegevens binnenhaalt doormiddel van "XMLhttpRequest".

Ik heb het scripje gerunt en inderdaad de hele pagina word niet refresht maar alleen het tekstvak.

Maar zoals de maker van dit scripje ook al aangeeft doet het scripje vaag bij internet explorer. Het scripje doet het wel in firefox.

Ook in het commentaar onder het scripje is niets te vinden wat nu het probleem is.

Dit zegt de maker erover:
"Om een of andere reden haalt (bij mij in ieder geval) Internet Explorer de opgevraagde data alsmaar weer uit de cache. Ik weet niet wat ik er tegen moet doen. In Firefox spelen er geen problemen op..."

Misschien dat 1 van jullie het weet?

Hier het script:

http://www.phphulp.nl/php/scripts/5/326/

Acties:
  • 0 Henk 'm!

Verwijderd

Cachen kun je denk ik wel voorkomen door een random string mee tegeven, ipv chat.php dus chat.php?randomstring, die je kunt genereren in javascript. Verder lijkt me dit niet helemaal het juiste forum voor deze vraag.

Oja, iets dergelijks kun je ook bereiken door clientside dynamisch op de server gegenereerde javascripts te laden.

[ Voor 23% gewijzigd door Verwijderd op 13-04-2005 21:35 ]


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-09 00:18
Verwijderd schreef op woensdag 13 april 2005 @ 21:32:
Cachen kun je denk ik wel voorkomen door een random string mee tegeven, ipv chat.php dus chat.php?randomstring, die je kunt genereren in javascript. Verder lijkt me dit niet helemaal het juiste forum voor deze vraag.
beetje ranzig, kun je beter header meegeven waarin je geen caching doet.

|>


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Dit is meer iets voor PW. Heb je deze code ook ergens draaien zodat we kunnen testen? En wat heb je zelf al geprobeerd? Hier-is-mijn-script-los-het-maar-op vragen worden niet zo gewaardeerd namelijk ;)

SA > PW

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
IE doet wel vaker moeilijk met caching
De 'ranzige' opmerking van Emiel is toch de makkelijkste om dit vaak te voorkomen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

frickY schreef op woensdag 13 april 2005 @ 22:09:
IE doet wel vaker moeilijk met caching
De 'ranzige' opmerking van Emiel is toch de makkelijkste om dit vaak te voorkomen.
Nee, Simon vertelt de makkelijkste en beste manier al. :) Hoe het moet, dat kun je op php.net in de documentatie voor de header-functie wel vinden. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • foske
  • Registratie: Juli 2001
  • Laatst online: 21-09 08:20
Jup headers zijn de beste methode, maar zelf spreek ik ook uit ervaring dat dit niet altijd werkt. En hoe ranzig is dit nu eigenlijk?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb wel wat gevonden om de cache uit te schakelen:

header("Cache-Control: no-store, no-cache, must-revalidate");

Deze heb ik aan het begin van de chat.php gezet. Hiermee is het probleem echter niet opgelost. Als je ziet in het voorbeeld http://devel.deyel.nl/xmlhttprequest/ dat bij de Internet exlorer de tekst verdwijnt zodra het textvak vernieuwt word en bij firefox niet.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Verwijderd schreef op donderdag 14 april 2005 @ 09:55:
Ik heb wel wat gevonden om de cache uit te schakelen:

header("Cache-Control: no-store, no-cache, must-revalidate");

Deze heb ik aan het begin van de chat.php gezet.
Staat deze er nog steeds? Zoja, dan werkt het niet. Dit zijn namelijk de headers die ik ontvang (Cache-control staat er dus niet tussen):
HTTP/1.1 200 OK
Date: Thu, 14 Apr 2005 07:59:12 GMT
Server: Apache
Vary: Host
Set-Cookie: Apache=80.127.1*5.2*5.197601113465553800; path=/
X-Powered-By: PHP/4.3.10
Content-Type: text/html
X-Cache: MISS from devel.deyel.nl
Connection: close

Acties:
  • 0 Henk 'm!

  • Xu
  • Registratie: Maart 2001
  • Laatst online: 29-04 07:47

Xu

Wat is je definitie voor 'refreshen'?

Want het is onmogelijk voor een HTTPserver http response te versturen naar de klant zonder een request van een klant. Dit komt doordat http van nature stateless is.

http://nl3.php.net/manual/en/function.header.php

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
 
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");
?> 

[ Voor 62% gewijzigd door Xu op 14-04-2005 10:35 ]

[AMD XP 2400@2.0GhZ | Asus A7V8X-X | 512 DDR-RAM | Sapphire Ati Radeon 9800 Pro 128 MB | 80GB Maxtor 5400] && [AMD DURON 800@800 | MSI KT266A Pro2 | 256 DDR-RAM | GeForce2 MX/MX400 64MB | 20GB Maxtor 5400]


Acties:
  • 0 Henk 'm!

Verwijderd

Ie werkt niet goed met die headers. Je moet de no-cache pragma twee keer opnemen in je pagina.

zoiets dus:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="Pragma" content="no-cache"/>
    <meta http_equiv="Expires" content="-1" /> 
  </head>
  <body>
    <!-- hier je 1337 pagina -->
    <!-- needed for IE non-caching -->
    <head>
      <meta http-equiv="Pragma" content="no-cache"/>
      <meta http_equiv="Expires" content="-1" /> 
    </head>  
  </body>  
</html>


smerig, maar het werkt wel.

Acties:
  • 0 Henk 'm!

  • PanMan
  • Registratie: November 1999
  • Laatst online: 18-09 22:50

PanMan

Spun!

en als je met datsoort dingen aankomt vind ik zelf een extra variabele $URL?time=time() zelf een stuk minder lelijk. En dat werkt ook...

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PanMan schreef op donderdag 14 april 2005 @ 12:39:
en als je met datsoort dingen aankomt vind ik zelf een extra variabele $URL?time=time() zelf een stuk minder lelijk. En dat werkt ook...
Vergeet niet dat dat alleen werkt voor links vanaf je eigen pagina's. Wanneer iemand anders naar je chatbox linkt, krijg je dan dat de "random" toevoegen achter de URL waarschijnlijk ook meegenomen wordt in hun links, waardoor het principe niet meer werkt. Als links vanaf andere pagina's ook moeten werken is hezik's oplossing al een stuk beter. Hoe dan ook zijn alle oplossingen in dit geval vies...je moet gewoon een van de vele kwaden kiezen. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • PanMan
  • Registratie: November 1999
  • Laatst online: 18-09 22:50

PanMan

Spun!

-NMe- schreef op donderdag 14 april 2005 @ 13:46:
[...]

Vergeet niet dat dat alleen werkt voor links vanaf je eigen pagina's. Wanneer iemand anders naar je chatbox linkt, krijg je dan dat de "random" toevoegen achter de URL waarschijnlijk ook meegenomen wordt in hun links, waardoor het principe niet meer werkt. Als links vanaf andere pagina's ook moeten werken is hezik's oplossing al een stuk beter. Hoe dan ook zijn alle oplossingen in dit geval vies...je moet gewoon een van de vele kwaden kiezen. :P
Dat laatste ben ik het zeker mee eens :).
Ik ging er vanuit dat de pagina met de tekst slechts een deel (in een (i)frame geladen) van het totale chat-ding was. Ik neem aan dat er ook andere stukken nodig zijn voor input etc, en die wil je al helemaal niet voortdurend herladen. Dus dan linken anderen naar jouw frame, en laad jij dus altijd de textpagina met je eigen url. Dan is dat iig geen probleem. Maar, het blijven idd workarounds, alleen vind ik die met de tijd vaak wel simpel :).

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het werkt nu :D allemaal bedankt voor jullie reacties........ :*)

Ik heb dit in me code geinplementeerd:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="Pragma" content="no-cache"/>
    <meta http_equiv="Expires" content="-1" /> 
  </head>
  <body>
    <!-- hier je 1337 pagina -->
    <!-- needed for IE non-caching -->
    <head>
      <meta http-equiv="Pragma" content="no-cache"/>
      <meta http_equiv="Expires" content="-1" /> 
    </head>  
  </body>  
</html>
Er kijkt toch niemand naar :P

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Als ik iets typ, dan zie ik kort mijn bericht staan, maar daarna valt die weer weg. Of is je script nu out-dated op je pagina? Wel leuk idee, zo'n php chat box trouwens.. :)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Verwijderd schreef op donderdag 14 april 2005 @ 16:15:
het werkt nu :D allemaal bedankt voor jullie reacties........ :*)

Ik heb dit in me code geinplementeerd:
[...]
Sloop dan minimaal de doctype uit je document, want je claimt nu te voldoen aan een richtlijn waar je absoluut niet aan voldoet :/ Daarbij stuur je het waarschijnlijk met een text/html mimetype en is het dus mallformed HTML.

Bovendien hoor je dit soort dingen in je HTTP headers te regelen en niet via META-tags. Dat IE er soms niet naar luistert komt gewoon doordat het een antieke brakke browser is...

[ Voor 30% gewijzigd door crisp op 14-04-2005 17:51 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
pierre-oord schreef op donderdag 14 april 2005 @ 17:02:
Als ik iets typ, dan zie ik kort mijn bericht staan, maar daarna valt die weer weg. Of is je script nu out-dated op je pagina? Wel leuk idee, zo'n php chat box trouwens.. :)
Klopt, dat had ik dus ook. BTW ik ben niet de maker van dit script. Ik kwam het tegen en merkte hetzelfde op als u. Vandaar dit topic.
crisp schreef op donderdag 14 april 2005 @ 17:47:
[...]

Sloop dan minimaal de doctype uit je document, want je claimt nu te voldoen aan een richtlijn waar je absoluut niet aan voldoet :/ Daarbij stuur je het waarschijnlijk met een text/html mimetype en is het dus mallformed HTML.

Bovendien hoor je dit soort dingen in je HTTP headers te regelen en niet via META-tags. Dat IE er soms niet naar luistert komt gewoon doordat het een antieke brakke browser is...
ik heb stukjes code ervan geimplementeerd :*) ik had dit gewoon ge-copy-paste om te zeggen dat ik deze optie ging gebruiken. :9

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Modbreak:Berichten over mime- en doctypes afgesplitst naar [rml][ Alg] Werken volgens standaarden of browsers ondersteunen?[/rml].

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Zenda
  • Registratie: Oktober 2001
  • Laatst online: 06-09 16:17

Zenda

goes milk!

http://www.phphulp.nl/php/scripts/5/326/

Probleem met caching is opgelost!

Zenda likes some milk every now and then..

Pagina: 1