[PHP] Dynamische plaatje niet dynamisch in Mozilla FF :S

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,

Heb een scriptje dat vanuit een sessie een code afdrukt in een plaatje (in een formulier). Wanneer ik het formulier verzend in Internet Explorer en dan een pagina terug ga dan is het plaatje anders, wat ook logisch is omdat de code anders is geworden. Als ik het formulier in Firefox verzend en dán een pagina terug ga dan is het plaatje niet anders.

Nu heb ik al getest met verschillende manieren om caching te voorkomen maar dit helpt allemaal niets.

Caching disabelen:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
  ini_set('session.cache_limiter', 'private');

  //PHP Site
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Datum in het verleden
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Altijd veranderd
  header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");                          // HTTP/1.0*
?>
Iemand tips of ideeën?

Voorbeeld is te zien op http://beta2.phpcastle.com/index.php?page=register

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Als je terug gaat wordt hij niet automatisch opnieuw geladen, wat ook logisch is, want je gaat terug naar waar je was. Internet Explorer doet dat in deze imo dus fout :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op vrijdag 04 maart 2005 @ 14:24:
Als je terug gaat wordt hij niet automatisch opnieuw geladen, wat ook logisch is, want je gaat terug naar waar je was. Internet Explorer doet dat in deze imo dus fout :)
True. Enig idee hoe ik FF dit kan dwingen

Acties:
  • 0 Henk 'm!

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 16:43

TwoR

Gekleurde stippen

Erkens schreef op vrijdag 04 maart 2005 @ 14:24:
Als je terug gaat wordt hij niet automatisch opnieuw geladen, wat ook logisch is, want je gaat terug naar waar je was. Internet Explorer doet dat in deze imo dus fout :)
Klopt.

En als je alles goed invuld krijg je een error :P
Verwijderd schreef op vrijdag 04 maart 2005 @ 14:25:
[...]

True. Enig idee hoe ik FF dit kan dwingen
Je kan een reload op de pagina geven. Dan reload de pagina iedere keer als je erop komt ook als je vorige doet.

[ Voor 30% gewijzigd door TwoR op 04-03-2005 14:27 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
TwoR schreef op vrijdag 04 maart 2005 @ 14:26:
[...]

Klopt.

En als je alles goed invuld krijg je een error :P


[...]

Je kan een reload op de pagina geven. Dan reload de pagina iedere keer als je erop komt ook als je vorige doet.
Daarom :) Dat is juist het hele gedoe. Als jij een pagina terug gaat, wat de reden ook mag zijn dan móet er gewoon een nieuwe afbeelding + nieuwe code komen.

Goed idee

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op vrijdag 04 maart 2005 @ 14:27:
[...]

Daarom :) Dat is juist het hele gedoe. Als jij een pagina terug gaat, wat de reden ook mag zijn dan móet er gewoon een nieuwe afbeelding + nieuwe code komen.

Goed idee
maar in je sessie heb je toch een andere code? dan is het gewoon pech voor de gebruiker, maar die code in het plaatje klopt niet meer, je moet gewoon zorgen dat het niet nodig is om terug te gaan. Doet een gebruiker dat toch dan is dat "eigen schuld"

Acties:
  • 0 Henk 'm!

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 17:22
Normaal roep ik een dynamisch plaatje altijd op via de volgende manier:

[img]"./plaatje.php?<timestamp>"[/img]

Dit werkt bij mijn anti script systeem in firefox en in Internet explorer naar behoren.

...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op vrijdag 04 maart 2005 @ 14:29:
[...]

maar in je sessie heb je toch een andere code? dan is het gewoon pech voor de gebruiker, maar die code in het plaatje klopt niet meer, je moet gewoon zorgen dat het niet nodig is om terug te gaan. Doet een gebruiker dat toch dan is dat "eigen schuld"
Hmm.... heb hiervoor al wel een oplossing denk ik dat ik de gebruiker iig een melding kan geven. tnx

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
IceM schreef op vrijdag 04 maart 2005 @ 14:30:
Normaal roep ik een dynamisch plaatje altijd op via de volgende manier:

[img]"./plaatje.php?<timestamp>"[/img]

Dit werkt bij mijn anti script systeem in firefox en in Internet explorer naar behoren.
Darn! Super... nooit aangedacht.

Het gaat er natuurlijk om dat firefox gewoon denkt dat er een andere image is :D _/-\o_

Tnx all

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Dat de pagina niet opnieuw geladne wordt kan natuurlijk ook komen omdat de pagina niet opnieuw geladen wordt ;). Hoe zit het met de headers van de pagina waarin dit plaatje staat?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Je kan ook voor- en achteruitknoppen op je pagina maken en hopen dat de gebruiker daarop klikt. Als hij dat doet wordt hij beloond en krijgt ie geen foutmelding, kunt er dan zelf voor zorgen dat er nog een ander plaatje gemaakt wordt. Wordt de terugknop van de browser gebruikt dan wordt ie gestraft met een melding.

PS: in Firefox zie ik ook een ander plaatje als ik terug ga. Hoop ook niet dat je veel mensen krijgt die kleurenblind zijn, wat een plaatje zeg :X

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
FendtVario schreef op vrijdag 04 maart 2005 @ 14:40:
PS: in Firefox zie ik ook een ander plaatje als ik terug ga.
Ja gelukkig maar :) het probleem is opgelost :P
FendtVario schreef op vrijdag 04 maart 2005 @ 14:40:
Hoop ook niet dat je veel mensen krijgt die kleurenblind zijn, wat een plaatje zeg :X
Hahaha... mijn eigen geschreven scriptje :) Misschien leuk voor iemand:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
  //Script written by Erik Holman
  //Mailto: erik@phpcastle.com

  //Font name
  $font = "arial.ttf"

  //PNG Header
  header("Content-type: image/png");

  //Code for in the image
  $string = $_SESSION['image_code'];

  //Font-size
  $font_size = 34;

  //Maximum text size
  $max_size = strlen($string) * $font_size;

  //Maximum width + some space on both sides
  $width = $max_size + $font_size/2;
  //Maximum height: text in the middle
  $height = $font_size * 2;

  //Create the image
  $im = @imagecreate($width, $height)
    or die("Cannot Initialize new GD image stream");

  //Background color
  $white = imagecolorallocate($im, 255, 255, 255);

  //Create background shapes
  for ($i = 0; $i <= $width/2; $i++){
    //Random color
    $color = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
    //Random shapes + lines
    switch (rand(0,4)){
      case 0:
        imageellipse($im, 100-rand(0,$max_size), 100-rand(0,$max_size), 300+rand(0,$max_size), 300+rand(0,$max_size), $color);
        break;
      case 1:
        imageline ( $im, rand(0,$max_size), rand(0,$max_size), rand(0,$max_size), rand(0,$max_size), $color);
        break;
      case 2:
        imagerectangle ( $im, 50-rand(0,$max_size), 50-rand(0,$max_size), 50+rand(0,$max_size), 50+rand(0,$max_size), $color);
        break;
      case 3:
        imagefilledellipse ( $im, rand(0,$max_size), rand(0,$max_size), rand(0,$max_size)/3, rand(0,$max_size)/3, $color);
        break;
      case 4:
        //Some randomness of the place of the retangle
        $square_start = rand(0,$max_size);
        //Random size of square
        $square_size = rand(0,$font_size*2);
        imagefilledrectangle  ( $im, $square_start, $square_start, $square_start+$square_size, $square_start+$square_size, $color);
        break;
    }
  }
  //Add the letters of the string and rotate them
  for ($i = 0; $i < strlen($string); $i++){
    //random rotation
    $rotation = rand(-40,40);
    //Add letters with some 'shadow' colors for better readability
    imagefttext ($im, $font_size, $rotation , (($font_size/3)+($i*$font_size))+5, ($height/2)+5, 2, realpath($font), substr($string,$i,1));
    imagefttext ($im, $font_size, $rotation , (($font_size/3)+($i*$font_size))+4, ($height/2)+4, 2, realpath($font), substr($string,$i,1));
    imagefttext ($im, $font_size, $rotation , (($font_size/3)+($i*$font_size))+3, ($height/2)+3, 2, realpath($font), substr($string,$i,1));
    imagefttext ($im, $font_size, $rotation , (($font_size/3)+($i*$font_size))+2, ($height/2)+2, 1, realpath($font), substr($string,$i,1));
    imagefttext ($im, $font_size, $rotation , (($font_size/3)+($i*$font_size))+1, ($height/2)+1, 1, realpath($font), substr($string,$i,1));
    imagefttext ($im, $font_size, $rotation , ($font_size/3)+($i*$font_size), ($height/2), rand(2,3), realpath($font), substr($string,$i,1));
  }
  //Put some lines before the text (With random colors again)
  for ($i = 0; $i <= $width/4; $i++){
    $color = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
    switch (rand(0,2)){
      case 0:
        imageellipse($im, 100-rand(0,$max_size), 100-rand(0,$max_size), 300+rand(0,$max_size), 300+rand(0,$max_size), $color);
        break;
      case 1:
        imageline ( $im, rand(0,$max_size), rand(0,$max_size), rand(0,$max_size), rand(0,$max_size), $color);
        break;
      case 2:
        imagerectangle ( $im, 50-rand(0,$max_size), 50-rand(0,$max_size), 50+rand(0,$max_size), 50+rand(0,$max_size), $color);
        break;
    }
  }
  //Display image
  imagepng($im);
  //Destroy image
  imagedestroy($im);
?>

Moet je wel arial.ttf in dezelfde map zetten en $_SESSION['image_key'] vullen ;)

[ Voor 10% gewijzigd door Verwijderd op 04-03-2005 14:47 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Ik moet eerlijk zeggen dat ik de plaatjes wat te onduidelijk vindt.. :{ Iets te veel kleur, iets te veel andere figuren. Als gebruiker moet ik nu soms gewoon gokken wat de letter zal zijn.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OkkE schreef op vrijdag 04 maart 2005 @ 14:55:
Ik moet eerlijk zeggen dat ik de plaatjes wat te onduidelijk vindt.. :{ Iets te veel kleur, iets te veel andere figuren. Als gebruiker moet ik nu soms gewoon gokken wat de letter zal zijn.
Ok :) blij dat je het meld want jij zou zomaar een gebruiker kunnen zijn natuurlijk ;) Tnx voor de opmerking en zal m iets milder maken (vond het zelf ook net op het randje hoor)

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Ik neem aan dat het bedoeld is zodat scripts de code niet kunnen lezen, waardoor je zeker weet dat het een persoon is?

Dan is denk ik 2 verschillende fonts en 4 verschillende letterformaten, met daarover in de zelfde kleur een paar lijnen net zo effectief. En beter te lezen door mensen. :)

// Edit

Ik heb er niet zo veel verstand van, maar volgens mij is de volgende afbeelding al niet meer (goed) te lezen door scripts.
Afbeeldingslocatie: http://www.azwart.nl/tmp/got/idee.png

Om nog even een voorbeeld te geven van een in mijn ogen erg onleesbaar plaatje van de site gehaald:
Afbeeldingslocatie: http://www.azwart.nl/tmp/got/index.php.png

// Edit 2

Plaatje nog eventjes iets aangepast.

[ Voor 56% gewijzigd door OkkE op 04-03-2005 15:55 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.

Pagina: 1