[php] browser laat 'oude' plaatjes zien

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
Ik ben bezig om een stukje php te programmeren wat er voor zordg dat de text in een tabel wordt weergegeven als plaatjes.

Ik ben al een heel eind, alleen loop ik nu tegen een probleem aan.

dit stukje zorgd voor het inlezen van de gegevens en het in een tabel plaatsen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
while(odbc_fetch_row($queryexe)) 
    { 
        $veld1 = odbc_result($queryexe, 1); 
    $veld2 = odbc_result($queryexe, 2);
    $veld3 = odbc_result($queryexe, 3);
        include 'test.php'  ;
    $i++;
    $plaat = "image" . $i . ".png";
    echo "<tr>";
    echo "<td>" , "[img]'$plaat'>"[/img]<td>" , $veld2 , "</td><td>", $veld3 , "</td>"; 
        } 
    echo "</tr>";

test.php zorgt voor het omzetten in png bestanden en ziet er zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$string = $veld1;                                              
$font   = 4;
$width  = ImageFontWidth($font) * strlen($string);
$height = ImageFontHeight($font);
$im = @imagecreate ($width,$height);
$background_color = imagecolorallocate ($im, 255, 255, 255); //white background
$text_color = imagecolorallocate ($im, 0, 0,0);//black text

imagestring ($im, $font, 0, 0,  $string, $text_color);

$i++;
$plaatje = "image" . $i .".png";

// als het bestand al bestaat (van een vorige query) wordt deze verwijderd.
if (file_exists($plaatje)) 
         unlink ($plaatje);

imagepng ($im,$plaatje);
?>


nu wert dit op zich prima, en als ik zoek in de tabel krijg ik de eerste kolom mooi als plaatjes te zien. (dit is de klom artiest, het gaat om een db met muziek cd's)

als ik na de eerste query opnieuw ga zoeken naar een andere artiest laat hij de gevonden resultaten zien, alleen staan in de eerste kolom nog de plaatjes van de vorige querie. Als ik in de dir kijk waar de plaatjes worden opgeslagen staan hier gewoon al de nieuwe.
Als ik op f5 druk krijg ik dus ook wel gewoon de goede resultaten te zien.

Heeft iemand enig idee hoe dit te verhelpen is?

Acties:
  • 0 Henk 'm!

  • bakakaizoku
  • Registratie: Januari 2002
  • Laatst online: 17-09 10:27
een no-cache header meegeven

PSN: bakakaizoku - WoW: Thiccblonde (GM of Phoenix Ascension) @ Twisting-Nether


Acties:
  • 0 Henk 'm!

Verwijderd

probeer -> header("Pragma: no-cache");

boven aan je php files te zetten

Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
helaas helpt dat niet... ik krijg nog gewoon de oude plaatjes te zien.
ik heb het ingevoegd in het authenticatie scriptje wat ik gebruik (wordt aan het bein van het document ge-include, anders kreeg ik 'headers already send.
Maar ik neem aan dat dat geen verschil maakt.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Geef eens een valse get variable mee, die dus steeds veranderd, bijvoorbeeld de huidige tijd in miliseconden.

Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
het wordt steeds gekker, ik heb nu geprobeerd of dit werkt:

header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

nu staat de naam bij het eerde record fout, bij de 2e niet, bij de 3e wel, bij de 4e weer niet, en bij de laatste 2 weer wel... 8)7

de plaatjes op de hard disk zijn nog steeds gewoon goed.

[ Voor 9% gewijzigd door AtlonXP1800 op 09-11-2003 16:12 ]


Acties:
  • 0 Henk 'm!

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

Spider.007

* Tetragrammaton

AtlonXP1800 schreef op 09 november 2003 @ 16:04:
het wordt steeds gekker, ik heb nu geprobeerd of dit werkt:

header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

nu staat de naam bij het eerde record fout, bij de 2e niet, bij de 3e wel, bij de 4e weer niet, en bij de laatste 2 weer wel... 8)7

de plaatjes op de hard disk zijn nog dteeds gewoon goed.
Als je met caching aan de gang gaat moet je minstens de beschikking hebben over FireBird met LiveHeaders add-on; zeker IE kun je in dit soort zaken _niet_ vertrouwen

---
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!

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Ik gebruik meestal allemaal deze headers:
PHP:
1
2
3
4
5
6
#Verbied cachen
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
Ooit ergens gevonden in de PHP Manual. Ik heb er zelf nooit problemen mee gehad... ;)

Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
dit lijkt wel iets te helpen... Maar alleen als ik IE zo in stel dat hij de temporary files moet bij werken, elke keer als er een pagina bekeken wordt (standaard staat die instelling op automatisch)

probleem is alleen dat de meeste bezoekers dit ook op automatisch zullen hebben staan.

Acties:
  • 0 Henk 'm!

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Wat vreemd, ik heb mijn IE op automatisch staan, maar op mijn website (in de filebrowser) werkt het toch gewoon goed. Elke keer wordt de pagina herladen, en ook de plaatjes (thumbnail view)...

[ Voor 13% gewijzigd door bgever op 09-11-2003 16:53 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

PHP en headers --> P&W :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
bedankt voor de move.

Ik heb inmiddels een oplossing gevonden/gemaakt voor het probleem.
Het is raar dat het niet gewoon werkt door de caching uit te zetten, maar ik heb er een weg omheen gevonden.


inplaats van $plaatje = "image" . $i .".png";
maak ik nu $plaatje = "img/".$veld1.$i.".png"

door dit te doen krijg je altijd unieke namen en kan het dus niet zo zijn dat ie het uit de cache gaat halen omdat hij "denkt" dat het het zelfde plaatje is.
enige probleem is dat namen met een apestrof er in fout gaan, daar moet ik nog even wat op vinden (mischien is de tijd als naam gebruiken wel een optie)

//edit:

dat omzeilen van de apestrof is iig erg simpel:
$plaatje = "img/" . time() .$num."1.png";

het genereerd mooie numerieke bestandsnamen

[ Voor 16% gewijzigd door AtlonXP1800 op 09-11-2003 21:26 ]


Acties:
  • 0 Henk 'm!

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

Spider.007

* Tetragrammaton

Bij mij werkt onderstaande perfect:Never mind; ik heb de perfecte caching functie geschreven :P maar die is wellicht wat overdone voor dit topic

PHP:
1
2
3
4
5
        header('Content-type: image/jpeg');
        header('Content-Disposition: inline; filename="'.$fileName.'"');
        header("Cache-Control: public");
        header("Pragma: cache");
        header("Expires: ".gmdate("D, d M Y H:i:s GMT", strtotime("-1 week")));

[ Voor 138% gewijzigd door Spider.007 op 09-11-2003 21:58 ]

---
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

Pagina: 1