[PHP] Probleem met randomizing

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Hello, hier een berichtje van iemand die een beetje ruzie heeft met z'n webserver... Op m'n oude servertje werkte de onderstaande lap php zonder moeite, maar op mijn huidige configuratie (Zie deze pagina) wil het niet écht helemaal lukken...

PHP:
1
2
3
4
5
6
7
8
<?
Header("Content-type: image/jpg");
Header("Cache-Control: no-cache, must-revalidate"); 
srand((double)microtime()*1000000);
$nr=rand(1,3);
$fn=fopen("./$nr.jpg","r"); 
fpassthru($fn); 
?>


Ja, het gaat hier dus om een random avatar/signature geval wat gewoon bij een image tag op fora resulteert in een kruisje... Wat kan ik hieraan doen? Voor alle lolbroeken; JA, ik heb netjes die *.jpg bestandjes, 1.jpg, 2.jpg en 3.jpg in dezelfde directory staan...

Verder wou ik nu ik toch bezig ben vragen hoe ik een *.php bestand de *.png (Noem maar wat) extensie meegeef, maar dan wél dat het *.png file'tje werkt als een *.php file'tje, klooien met mime-types dus... Waarin/hoe verander ik dit?

Alvast danke schön :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

laat de eerste header weg en open de pagina apart in je browser, wat voor foutmeldingen zie je dan?
Jpg is trouwens image/jpeg meen ik.

[ Voor 16% gewijzigd door ACM op 22-10-2003 22:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Die resulteert in een kruisje
Haal die headers eens weg, en probeer je plaatje rechtstreeks op te vragen (zonder img tags erom heen?)
Error reporting aan, en kijk eens of en wat voor foutmelding je krijgt :)

edit:
ACM was me voor

[ Voor 7% gewijzigd door Verwijderd op 22-10-2003 22:14 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
mime-types is httpd.conf ( met apache ) maar in ieder geval je webserver, want deze zegt welke interpreter het programma moet oppakken.


En verder zie ik niet in hoe dit script detecteert waar iemand vandaan komt.
Ik lees het als volgt :
Header dat je een jpg gaat sturen
Header dat hij niet gecached mag zijn.
Een random seeder aanmaken
kies een getal tussen de 1 en de 3
open een plaatje met de naam van het getal
stuur de hele zooi terug naar de browser.

Waar controleer jij hier op locatie van de browser ???

Maar ik dacht dat het ook veel beter met apache rewrite regels te doen was. Nooit zelf uitgeprobeert, maar dan kan je wel zeggen wie iets wel of niet mag krijgen.

Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Oke, heb ff wat aangepast in dat *.php file'tje, maar krijg geen errors in m'n logs (Normaal krijg ik errors te zien in error.log of in errors.txt, dat zich nestelt in de huidige dir...)

Voor mensen die 'r willen testen; http://devedge.weirdinside.nl/rommel/ico/

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Misschien dat je hier iets aan hebt, misschien niet.

Allereerst, bla.png is nog gewoon php dus je webserver start geen php-interpreter op.

En in mozilla krijg ik de binaire inhoud van een bestand te zien. Maar dit is geen 3kb wat ik dan binnenkrijg, maar ongeveer 1kb Te kort dus.

Werkt het trouwens wel als je gewoon in regel 4 $nr vervangt door 1???

Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Gomez12 schreef op 22 oktober 2003 @ 22:34:
Allereerst, bla.png is nog gewoon php dus je webserver start geen php-interpreter op.
Klopt, server moet zo ff opnieuw gestart worden, mime type geklungel werkt dan sowieso :)...
Gomez12 schreef op 22 oktober 2003 @ 22:34:
Werkt het trouwens wel als je gewoon in regel 4 $nr vervangt door 1???
Nop :'(

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

Zou je op dat voorbeeld de 'Content-type: ' ff op text/html kunnen zetten?

offtopic:
[quote]Jpg is trouwens image/jpeg meen ik.[/quote]

Om helemaal compatible te zijn: image/pjpeg

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Ik zit me helemaal gek te klooien, maar het werkt nog steeds voor geen hork :(

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

ik krijg nog steeds een plaatje ipv text te zien, probeer trouwens eens te fopen()-en in binary mode...

/edit: 'een plaatje' geen plaatje dus, maar wel áls plaatje, naja je snapt wat ik bedoel

[ Voor 39% gewijzigd door Jurgle op 22-10-2003 23:12 ]

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Jurgle schreef op 22 October 2003 @ 23:08:
ik krijg nog steeds een plaatje ipv text te zien, probeer trouwens eens te fopen()-en in binary mode...

/edit: 'een plaatje' geen plaatje dus, maar wel áls plaatje, naja je snapt wat ik bedoel
Ik neem aan dat je hier het verbouwen van headers bedoelt? Ik had al speciaal http://devedge.weirdinsid...co/opverzoekvanjurgle.php voor je aangemaakt :)

Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Het vreemde is dat 'ie *.txt bestandjes wel accepteert: http://devedge.weirdinside.nl/rommel/ico/alstxt/damnicon.php :?

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

inderdaad, die (opverzoekvanjurgle.php) had ik al gezien, maar die gaf hetzelfde. ik had 'rare tekens' verwacht.

heb je al geprobeerd binary te lezen?
PHP:
1
fopen('./'.$nr.'.jpg','rb');


en een Content-disposition header?
PHP:
1
header('Content-Disposition: inline; filename='.$nr.'.jpg');


/edit:
Bekijk http://nl2.php.net/manual/en/function.header.php, heb je zlib compressie aanstaan? Dit zóú een probleem kunnen zijn icm headers maar denk het niet.

[ Voor 45% gewijzigd door Jurgle op 22-10-2003 23:30 ]

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Jurgle schreef op 22 October 2003 @ 23:27:
Bekijk http://nl2.php.net/manual/en/function.header.php, heb je zlib compressie aanstaan? Dit zóú een probleem kunnen zijn icm headers maar denk het niet.
zlib.output_compression staat hier op "off"...

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

da's dan ok. En de rest? effect?

Code van php.net:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

// open the file in a binary mode
$name = ".\public\dev\img\ok.png";
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: ".filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

?>

[ Voor 87% gewijzigd door Jurgle op 22-10-2003 23:39 ]

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • Jermaine
  • Registratie: Januari 2003
  • Laatst online: 12:16
Hmm, ik word er niet goed van, dus heb maar ff wat gefixt zonder header gedoe, misschien dat anderen er ook wat aan hebben;

PHP:
1
2
3
4
5
6
7
<?php 
$avatars = array (1 => "1.jpg", "2.jpg", "3.jpg");
$url = 'http://devedge.weirdinside.nl/rommel/ico/';
$avatar_number = rand(1,3);
$rand_avatar = "$avatars[$avatar_number]"; 
header("Location: $url" . "$rand_avatar"); 
?> 


:)

Acties:
  • 0 Henk 'm!

Verwijderd

mmmmm maybe een foute oplossing, maar aangezien je geen custom plaatje gebruikt zou ik het zo doen....

ASP:
1
2
3
4
5
6
7
8
<html>
<%
dim blaat
'getal tussen 1 en 5
blaat = (Random() * 5) + 1

response.redirect(blaat & ".png")
%>


ik weet t het is ASP, maar als asp dit soort dingen kan kan PHP het vast ook wel

Maar om ff de code te verklaren... je vraagt een random getal (1 en 5 in dit geval) daarna redirect je de browser naar random + ".png" (waarbij je .png ook nog variabel kan maken)


Als je het script direct aanroept dan zallike door springen, maar als je zegt

HTML:
1
[img]"source.php"[/img]


dan zalie het ook doen... veel forums trappen hier in, en anders link je naar source.php?blaat.jpg

dat wil ook nog wel eens.....

Gebruik dit in iedergeval ook altijd omdat APS zuigt in images.....
Pagina: 1