Maar als je getimagesize gebruikt op een URL, dan gaat deze héél traag (2 plaatjes duurt soms al 5 tot 10 seconden). Nu wil ik het plaatje downloaden, uploaden op mijn server, getimagesize op gebruiken en verwijderen.
Die laatste 2 stappen zijn niet echt een probleem, maar die eerste 2 lukken niet echt. Ik heb dit script van php.net gehaald (getimagesize functie => comment van iemand):
function getimagesize2($data)
{
$tempfile = tempnam("logs", "temp_image_");#create tempfile and return the path/name (make sure you have created tmp directory under $cwd
$temphandle = fopen($tempfile, "w");#open for writing
fwrite($temphandle, $data); #write image to tempfile
fclose($temphandle);
$imagesize = getimagesize($tempfile); #get image params from the tempfile
unlink($tempfile); // this removes the tempfile*/
return $imagesize;
}
print_r(getimagesize2('url'));
function getimagesize2($data)
{
$tempfile=tempnam("logs","temp_image_");#create tempfile and return the path/name (make sure you have created tmp directory under $cwd
$temphandle=fopen($tempfile,"w");#open for writing
fwrite($temphandle,$data);#write image to tempfile
raar dat dat script niet werkt, ik heb het ooit ook ergens gebruik mits een paar aanpassingen, ga eerst even eten net thuis van het werk, zal dan eens zoeken naar dat script, dacht het gebruikt te hebben voor een script voor imageupload met watermerk.
Het is me nog niet helemaal duidelijk wat je nou precies wilt. Dus even checken. Je wilt een de width en height van een plaatje weten. Dus daarom ga jij eerst het plaatje downloaden, uploaden naar je server om daar de width en height op te vragen?
Waarom wil je dat? Er is vast wel een betere manier maar dan moeten we wel weten waarvoor het is
Ja voor wat? Nieuws bericht systeem of zo iets dergelijks?
Is het dan niet beter om bij het posten van het bericht of de reply het plaatje op te halen en te uploaden naar je server ipv dit elke keer te doen als de reply bekeken wordt?
dus het is iets wat elke keer weer voorkomt, dan kan je het plaatje toch beter uploaden naar je server en verwerk je de widht en height in de plaatjes naam. Of je maakt 1 malig een thumb en daar zet je een url op naar het groote plaatje.
Het zijn maar wat ideeen hoor. maar het klinkt mij allemaal beter in de oren dan elke keer weer het plaatje downloaden en/of uploaden alleen maar om de width en height te bepalen
Dit werkt. Je zou zelf maar moeten kijken of je dit veilig genoeg vind. Het is makkelijk te achterhalen of het echt een plaatje is door de widht en height op te vragen (dit kan achteraf maar ook vooraf, omdat je dit doet bij het posten van de reply hoeft het maar 1 keer. 1maal op je eigen server blijft natuurlijk sneller). Zo nodig kan je het plaatje ook verkleinen als het niet in de layout past (omdat het bijvoorbeeld te breed is) en dan kan je weer een link om het plaatje zette die verwijst naar het echte plaatje. Wel goed controleren op de extensie waarop je het opslaat
Zo ben je er zeker van dat je niet hoeft te wachten op de andere server en dat bespaard veel tijd.
Ah mooi, dat iemand er eindelijk in is geslaagd . Ik was al tijden opzoek naar een manier op dit te kunnen doen op serverside gebied. Het script is nog wel erg onveilig, maar het principe werkt.
Je kunt nu heel simpel als hacker een php bestand uploaden door als image locatie een php bestand op te geven. Controleer dus of het 'php' in de extensie naam voorkomt, zodat er geen php kan worden uitgevoerd.
Als men nu een .php bestand gebruikt, maar men veranderd de extensie naar .jpg. Dan is dat nog steeds een PHP bestand. Is dit een goede functie om dit te controleren:
als je checked op mimetype ipv enkel extensie is het ook ok, dan filter je ook enkel images.
Je kan ook uitgebreider gaan werken met http://be2.php....d-data.php hangt ervan af welke data je later allemaal wil gaan gebruiken en/of nodig hebt van een image.
Warning: file_get_contents(http://www.metalendakramen.be/afbeeldingen/wp4fc462a8.php) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/quinten/www/hp-d_v30/imagesize.php on line 17
Ik denk dat file_get_contents() (naast false) tevens een warning produceert, geen error, als een bestand niet bestaat.
Deze kun je onderdrukken d.m.v. een @ voor de aanroep van deze functie.
In dit geval is het niet "fataal" als een extern plaatje niet (meer) bestaat, so why not? De functie geeft toch false terug, waarmee aangegeven wordt dat het bestand niet (meer) bestaat, dus die notice/warning heb je niet nodig.
Hoe wou je het trouwens in een if-statement doen? Die notice krijg je dan ook :].