Archief - PHP: afbeeldingen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Miche

Legacy Member
Ik ben een admin panel aan het maken voor een bedrijf, waarmee ze producten kunnen toevoegen, aanpassen en verwijderen, en ook categoriëen toevoegen, aanpassen en verwijderen. Bij elk product moet een afbeelding zijn, maar ik heb nog nooit met afbeeldingen gewerkt.

Mijn vraag is: hoe kan ik het best afbeeldingen laten toevoegen? moet de persoon die de afbeelding wilt toevoegen deze eerst uploaden, en dan een link plaatsen in het formulier waarmee hij het toevoegt op de site? of zijn er andere mogelijkheden? is het ook mogelijk om een 'auto-resize' erbij te zetten, zodat - hoe groot de foto ook is - de foto op een bepaalde grootte op de site komt?

dank bij voorbaat :)

DarkBone

Legacy Member
http://be2.php.net/manual/en/features.file-upload.php
http://be2.php.net/manual/en/function.move-uploaded-file.php

Images zul je dus best gewoon op 1 locatie bijhouden, naamgeving bepaal je zelf, zolang ze maar uniek is (bijvoorbeeld het id of een random string).

Om te resizen zul je moeten gebruik maken van de GD library. Da's een extension van php die je eerst moet activeren in je php.ini:

;extension=php_gd2.dll

Dus de puntkomma ervoor weghalen en zorgen dat je extension_dir correct is ingevuld, bijvoorbeeld:

extension_dir = "c:\php\ext"

Vergeet dan ook niet je webserver eventueel te restarten.

Resize scripts zullen er wel te vinden zijn, functieoverzicht van alle image functies hier:
http://be.php.net/manual/en/ref.image.php

Grtz,
db

Miche

Legacy Member
mijn hosting is bij dommel, heb geen flauw idee hoe ik daar de php.ini moet veranderen :eek:

DarkBone

Legacy Member
Dat hoeft nier per se, het is niet onwaarschijnlijk dat deze extensie al is ingeschakeld. Even nakijken dus.

Miche

Legacy Member
ff een ftp vraagje, die upload directory naarwaar de afbeeldingen worden geupload, kan ik die instellen als een directory die niet publiek toegankelijk is? of moet dat de directory zijn die toegankelijk is voor iedereen (zonder passwoord dus) maar dit is niet veilig want dan kan iedereen ze verwijderen..

ik probeerde een directory in te stellen waarvoor je dus een passwoord nodig hebt, maar hij liet me niet toe:

Warning: move_uploaded_file(/usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/uploadsCollines.jpg) [function.move-uploaded-file]: failed to create stream: Permission denied in /usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/imguploadaction.php on line 9

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phppZMDnF' to '/usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/uploadsCollines.jpg' in /usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/imguploadaction.php on line 9

EdMeister

Legacy Member
Originally posted by Miche
ff een ftp vraagje, die upload directory naarwaar de afbeeldingen worden geupload, kan ik die instellen als een directory die niet publiek toegankelijk is? of moet dat de directory zijn die toegankelijk is voor iedereen (zonder passwoord dus) maar dit is niet veilig want dan kan iedereen ze verwijderen..
Chmod die directory naar 777 (write-permission voor iedereen). Gebruik je ftp-wachtwoord in je script. Heel eenvoudig en veilig (niemand kan je wachtwoord zien en ik hoop dat jij weet hoe je je admin-pagina goed kan beveiligen), maar betrekkelijk veel nadelen.

Miche

Legacy Member
PHP:
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/uploads';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   print "File is valid, and was successfully uploaded. ";
   print "Here's some more debugging info:\n";
   print_r($_FILES);
} else {
   print "Possible file upload attack!  Here's some debugging info:\n";
   print_r($_FILES);
}
print "</pre>";

?>

ik krijg als output:

Warning: move_uploaded_file(/usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/uploadsCollines.jpg) [function.move-uploaded-file]: failed to create stream: Permission denied in /usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/admin/imguploadaction.php on line 9

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpm8nnFs' to '/usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/uploadsCollines.jpg' in /usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/admin/imguploadaction.php on line 9
Possible file upload attack! Here's some debugging info:
Array
(
[userfile] => Array
(
[name] => Collines.jpg
[type] => image/pjpeg
[tmp_name] => /tmp/phpm8nnFs
[error] => 0
[size] => 28521
)

)

scriptje heb ik gehaald van php.net
iemand een idee waarom ik niet 'File is valid, and uploaded succesfull' als output krijg? hij upload het bestand ook niet naar mijn server

PS: heb de folder uploads ge-CHMOD naar 777

EdMeister

Legacy Member
Originally posted by Miche
Warning: move_uploaded_file(/usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/uploadsCollines.jpg) [function.move-uploaded-file]: failed to create stream: Permission denied in /usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/admin/imguploadaction.php on line 9
Lees je fout:
usr/local/psa/home/vhosts/cross-fire.be/httpdocs/bizzsoft/uploadsCollines.jpg

Dus geen slash tussen dir en filename! ;)

Miche

Legacy Member
zucht, dit is nou het nadeel van coden: 1 klein kakfoutje can screw everything up!

thx, het werkt.. kheb die foutmelding nochtans duizend keer gelezen, en ge blijft erover kijken.. das een fout die ik nooit meer zal maken.. hopelijk :)

dus het uploaden werkt, nu nog het resizen!

edit: van dat resizen snap ik helemaal nix.. precies chinees voor me

EdMeister

Legacy Member
Download eens de code van de Coppermine Photo Gallery en bekijk die functie die zij gebruiken om een foto te resizen. Heel leerzaam!

Miche

Legacy Member
thx allemaal! kheb een scriptje gevonden op internet en dat aangepast naar mijn needs. het upload en resized de afbeelding! moest iemand geintereseerd zijn wil ik de code wel posten

thx allemaal voor jullie hulp!

VeNeReA

Legacy Member
Ja ik ben geintresseerd in die code.

Ik probeer mijn afbeelding te tonen (geresized) zonder ze up te loaden.
Misschien dat uw code wa hulp brengt. :)

killgore

Legacy Member
voor vorige hier:

PHP:
$type = getimagesize($url);
switch($type[2])
{
case IMAGETYPE_PNG:
	$oldimg = imagecreatefrompng($url);
	break;
case IMAGETYPE_JPEG:
    $oldimg = imagecreatefromjpeg($url);
    break;
case IMAGETYPE_GIF:
    $oldimg = imagecreatefromgif($url);
    break;
default:
	header('content-type: image/jpeg');
	$fout = imagecreatefromjpeg("images/nothumb.jpg");
	imagejpeg($fout);
	imagedestroy($fout);
    exit;
}
//$mime = image_type_to_mime_type($type[2]);
if($type[0]>=$type[1])
{
  $tar_w = 150;
  $tar_h = round($type[1]/($type[0]/150));
}
else
{
	$tar_h = 150;
	$tar_w = round($type[0]/($type[1]/150));
}

$newimg = imagecreate($tar_w,$tar_h);
imagecopyresized($newimg,$oldimg,0,0,0,0,$tar_w,$tar_h,$type[0],$type[1]);
imagedestroy($oldimg);
//resize($newimg,$oldimage,0,0,0,0,100,100,imagesx($oldimage),imagesx($oldimage));
header('content-type: image/jpeg');imagejpeg($newimg);

imagedestroy($newimg);

zo heb ik dit gedaan, werkte redelijk deftig ;). Dit is (een deel van) de inhoud van een bestand sm_image.php. Ik geef wel via de url een id mee waarmee ik de juiste url van de img uit men mysql db haal.

in je main page heb je dan iets alla: <img src="sm_image.php?id=5" />
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan