[PHP] random icon met random foutmeldingen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
Ik heb sinds kort een random icon.
De code daarvan heb ik laatst uit een topic hier op GoT gevist. De code is hier:

PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$dir = "./org/"; 
$handle = opendir($server.$dir); 
$i=0; 
while ($file = readdir($handle)) { 
    if ($file != "." && $file != ".."){ 
      $icon_array[$i] = $file; 
      $i++; 
    } 
} 
closedir($handle); 
$max = ( count($icon_array) - 1 ); 
mt_srand ((double) microtime() * 100000000); 
$icon_nummer = mt_rand(0, $max); 
Header("Cache-Control: no-cache, must-revalidate"); 
Header("Location: $dir/$icon_array[$icon_nummer]");
?>


Het probleem is nu dat ik ongeveer 2 van de 15x dat ik dit icon laad in GoT een rood kruisje krijg, en als ik hem in IE laad een error 403.

Heeft iemand een idee waar dit aan kan liggen?
Ik had al het idee dat hij een niet bestaand plaatje probeerde te laden ofzo, maar dan zou ik een 404 krijgen i.p.v. een 403.

Op IRC was er trouwens nog iemand met dit probleem.

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • bazs2000
  • Registratie: November 2000
  • Laatst online: 05-08 11:09

bazs2000

Pixels zo groot als een atoom

PHP:
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
<? 
$img[1] = "1.gif"; 
$aantal = count($img); 
$random_number = rand(1,$aantal); 
if(eregi(".jpg$", $img[$random_number]) || eregi(".jpeg$", $img[$random_number])){ 
     Header("Content-type: image/jpeg"); 
     Header("Cache-Control: no-cache, must-revalidate"); 
     $plaatje = $img[$random_number]; 
     $fn=fopen("$plaatje","rb"); 
     fpassthru($fn); 
 }elseif(eregi(".gif$",$img[$random_number])){ 
     Header("Content-type: image/gif"); 
     Header("Cache-Control: no-cache, must-revalidate"); 
     $plaatje = $img[$random_number]; 
     $fn=fopen("$plaatje","rb"); 
     fpassthru($fn); 
 }elseif(eregi(".png$",$img[$random_number])){ 
     Header("Content-type: image/png"); 
     Header("Cache-Control: no-cache, must-revalidate"); 
     $plaatje = $img[$random_number]; 
     $fn=fopen("$plaatje","rb"); 
     fpassthru($fn); 
 }else{
 echo"No valid image";
 }
?> 

Dit is de source van mijn icoon (ook via GoT).
Deze werkt wel gewoon, ik post deze om wat dingen te vergelijken. :)

Edit:
Maar zie jij dan kruisjes met het script dat je nu gebruikt? Ik niet, en ik heb nu al zo'n 30x gerefresht.
Edit2:
Ook als ik het script laadt in IE is er geen probleem.

Edit3:
Misschien ga ik nu iets doms zeggen maar jij gebruikt in het script de dir "./org".
Als ik vervolgens naar de URL kijk dan komt deze niet terug in de URL. Staan alle icons in diezelfde dir?

[ Voor 67% gewijzigd door bazs2000 op 25-03-2003 18:42 ]

Krankzinnige muziek vind je hier.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Over redundante code gesproken :X :X

Dat kan veel makkelijker :)

edit:
Wat ik overigens echt wilde zeggen was dat je met een fpassthru() ipv een Location header die foutmeldingen waarschijnlijk wel omzeilt.

[ Voor 59% gewijzigd door drm op 25-03-2003 18:41 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
bazs2000 schreef op 25 March 2003 @ 18:36:
PHP:
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
<? 
$img[1] = "1.gif"; 
$aantal = count($img); 
$random_number = rand(1,$aantal); 
if(eregi(".jpg$", $img[$random_number]) || eregi(".jpeg$", $img[$random_number])){ 
     Header("Content-type: image/jpeg"); 
     Header("Cache-Control: no-cache, must-revalidate"); 
     $plaatje = $img[$random_number]; 
     $fn=fopen("$plaatje","rb"); 
     fpassthru($fn); 
 }elseif(eregi(".gif$",$img[$random_number])){ 
     Header("Content-type: image/gif"); 
     Header("Cache-Control: no-cache, must-revalidate"); 
     $plaatje = $img[$random_number]; 
     $fn=fopen("$plaatje","rb"); 
     fpassthru($fn); 
 }elseif(eregi(".png$",$img[$random_number])){ 
     Header("Content-type: image/png"); 
     Header("Cache-Control: no-cache, must-revalidate"); 
     $plaatje = $img[$random_number]; 
     $fn=fopen("$plaatje","rb"); 
     fpassthru($fn); 
 }else{
 echo"No valid image";
 }
?> 

Dit is de source van mijn icoon (ook via GoT).
Deze werkt wel gewoon, ik post deze om wat dingen te vergelijken. :)
Ik zou natuurlijk ook deze kunnen gebruiken, maar het is met niet helemaal duidelijk waar de bestanden bij dit script moeten staan.
Edit:
Maar zie jij dan kruisjes met het script dat je nu gebruikt? Ik niet, en ik heb nu al zo'n 30x gerefresht.
Edit2:
Ook als ik het script laadt in IE is er geen probleem.
Tja, het is erg willekeurig. ;)
Zie jij trouwens wel steeds een ander plaatje, of refresht hij het niet echt?

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • bazs2000
  • Registratie: November 2000
  • Laatst online: 05-08 11:09

bazs2000

Pixels zo groot als een atoom

Ik zie steeds een ander plaatje inderdaad. :)

Je kunt dat script gebruiken, de plaatjes komen in dezelfde dir als waar het script staat dus dat is makkelijk. :)

* drm , ik ben lui, ik zou die dubbele troep moeten verwijderen omdat het script bedoeld is om meerdere extenties te ondersteunen. Maaja, ik heb geen zin omdat te doen want het werkt zo ook. :P

Edit:

Als je plaatjes wilt toevoegen aan het icoon dan moet je dit ook in het script zetten.

PHP:
1
2
3
4
5
6
7
8
$img[2] = "2.gif"; 
$img[3] = "3.gif"; 
$img[4] = "4.gif";
$img[5] = "5.gif";
$img[6] = "6.gif";
$img[7] = "7.gif";
$img[8] = "8.gif";
$img[9] = "9.gif";

[ Voor 28% gewijzigd door bazs2000 op 25-03-2003 18:47 ]

Krankzinnige muziek vind je hier.


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
* Xander heeft weer een kruisje :X

@bazs2000: ik neem aan dat daar ook andere bestanden in die dir mogen staan?
@drm: wat doet PHP met code die ná fpassthru() komen? Aan het eind van mijn code zit nog een log code.

edit:

Ik moest net wel 5x op F5 rammen eer dat ik überhaupt een plaatje zag :O


edit2:
aha, met jouw script moet je dus ieder bestand handmatig toevoegen. Tja, dan ga ik toch proberen mijn code te optimaliseren, want ik vind het wel makkelijk. Ik kan zo via FTP een paar bestanden erbij pleuren en hij neemt die weer mee :)

[ Voor 46% gewijzigd door Xander op 25-03-2003 18:49 ]

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • bazs2000
  • Registratie: November 2000
  • Laatst online: 05-08 11:09

bazs2000

Pixels zo groot als een atoom

Ja, daar mogen ook andere bestanden in staan, in het script staat namelijk welke bestanden hij moet gebruiken. :)

Edit:
Nu zie ik jouw icoon helemaal niet meer. :?

Edit2:
Ik zie alleen maar een kruisje.
Volgens mij verwijst het script naar een bestand dat niet bestaat?

[ Voor 45% gewijzigd door bazs2000 op 25-03-2003 18:51 ]

Krankzinnige muziek vind je hier.


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
bazs2000 schreef op 25 maart 2003 @ 18:48:
...
Edit:
Nu zie ik jouw icoon helemaal niet meer. :?
Kruisje of écht niets?
bazs2000 schreef op 25 maart 2003 @ 18:48:
Edit2:
Ik zie alleen maar een kruisje.
Volgens mij verwijst het script naar een bestand dat niet bestaat?
Hij bestaat dus wel.
http://www.heynsbergen.com/xander/icon/icon.php

Hmm, volgens mij werkt die fpassthru niet.
Ik heb nu deze regel:
fpassthru("$dir/$icon_array[$icon_nummer]")
maar hij geeft een foutmelding. Zonder "" geeft hij 2 foutmeldingen.

http://www.heynsbergen.com/xander/icon/icon.php

* Xander krijgt nu deze leuke melding:
Parse error: parse error, unexpected T_VARIABLE in /usr/local/psa/home/vhosts/heynsbergen.com/httpdocs/xander/icon/icon.php on line 23

[ Voor 79% gewijzigd door Xander op 25-03-2003 19:10 ]

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
* Xander heeft ff verder zitten puzzelen, en het werkt weer beter!

PHP:
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
<? 
$dir = "./org/"; 
$handle = opendir($server.$dir); 
$i=0; 
while ($file = readdir($handle)) { 
    if ($file != "." && $file != ".."){ 
      $icon_array[$i] = $file; 
      $i++; 
    } 
} 
closedir($handle); 
$max = ( count($icon_array) - 1 ); 
mt_srand ((double) microtime() * 100000000); 
$icon_nummer = mt_rand(0, $max); 
Header("Cache-Control: no-cache, must-revalidate"); 
$plaatje = "$dir/$icon_array[$icon_nummer]"; 
$ip_address = $REMOTE_ADDR;
$the_date = date("D-d-m-Y H:i:s");
$conn = @mysql_connect("localhost","XanderH","*iets*") or die("cannot connect to MySQL");
@mysql_select_db("*iets*") or die("cannot connect to the database");
@mysql_query("INSERT INTO ipvisits(ip,date) VALUES ('$ip_address','$the_date')");
mysql_close($conn);
     $fn=fopen("$plaatje","rb");  
     fpassthru($fn);  
?> 


Nu lijkt het op GoT aardig te werken, maar als ik met IE naar het icon ga zie ik soms helemaal niets, komt dat dan omdat IE hem niet herkent als plaatje ofzo?

edit:
ik zie dan dus echt niets:
Afbeeldingslocatie: http://www.xs4all.nl/~heynsber/niets.png

edit2:
Shit, hij doet het nogsteeds soms niet in GoT :'(

[ Voor 26% gewijzigd door Xander op 25-03-2003 20:55 ]

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
Ik ben dus nogsteeds niet tot een oplossing gekomen.
Ik heb ondertussen een hele andere code:
PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<? 
$img[1] = "./org/draai.gif";
$img[2] = "./org/krasjes.gif";
$img[3] = "./org/licht.gif";
$img[4] = "./org/spiraal.gif";
$aantal = count($img);  
$random_number = rand(1,$aantal); 
Header("Cache-Control: no-cache, must-revalidate"); 
$plaatje = $img[$random_number];  
$ip_address = $REMOTE_ADDR;
$the_date = date("D-d-m-Y H:i:s");
$conn = @mysql_connect("localhost","XanderH","qwerty321") or die("cannot connect to MySQL");
@mysql_select_db("blabla") or die("cannot connect to the database");
@mysql_query("INSERT INTO ipvisits(ip,date) VALUES ('$ip_address','$the_date')");
mysql_close($conn);
$fn=fopen("$plaatje","rb");  
fpassthru($fn);  
?>


Maar ook nú geeft hij nog die melding weleens, minder vaak, maar toch.
Het is ook niet dat hij een van die plaatjes niet kan openen ofzo, want ze komen allemaal wel een keer langs.

Nog iemand ideeën?

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • Sjab-X
  • Registratie: September 2001
  • Laatst online: 26-06-2024
Haal ff je MySQL UID en PW uit je posting, voor je het weet molt iemand je zooi.... :(

Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
Sjab-X schreef op 27 March 2003 @ 16:38:
Haal ff je MySQL UID en PW uit je posting, voor je het weet molt iemand je zooi.... :(
Dat is niet mijn echte PW, ik maak betere wachtwoorden >:)
En bovendien laat MySQL alleen connections vanaf localhost en mijn IP toe.

Maareh, geen idee over mijn probs?

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
drm schreef op 25 maart 2003 @ 18:40:
Over redundante code gesproken :X :X

Dat kan veel makkelijker :)
>:) Ik zie me toch een partij slechte code in dit topic...

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
mocean schreef op 27 maart 2003 @ 17:39:
[...]

>:) Ik zie me toch een partij slechte code in dit topic...
* Xander zucht......

Als je dan een tip geeft hoe het te verbeteren heb ik er nog wat aan.....

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+


Acties:
  • 0 Henk 'm!

  • Bever
  • Registratie: Maart 2001
  • Nu online
PHP:
1
2
3
4
5
<?
header("content-type: image/jpeg");
$n = rand() % 4;
readfile("$n.gif");
?>

Simpel, maar werkt wel.
Plaatjes moet je 0.gif, 1.gif, 2.gif etc noemen.
die 4 in de code (bij rand() %) moet je veranderen in het aantal pics.

Acties:
  • 0 Henk 'm!

  • Xander
  • Registratie: Oktober 2002
  • Laatst online: 13:30
Bever schreef op 27 maart 2003 @ 19:31:
PHP:
1
2
3
4
5
<?
header("content-type: image/jpeg");
$n = rand() % 4;
readfile("$n.gif");
?>

Simpel, maar werkt wel.
Plaatjes moet je 0.gif, 1.gif, 2.gif etc noemen.
die 4 in de code (bij rand() %) moet je veranderen in het aantal pics.
Ja, ok, maar ik denk niet dat dát mijn probleem oplost (wel kleinere code :)).
Ik heb al verschillende manieren geprobeerd om die willekeurige icons te selecteren, en dat werkt volgens mij gewoon goed.

PC specs!---Pulse mee voor GoT!
[22:49:37] <@Remy> ik wil een opblaasbare dSLR :+

Pagina: 1