Volledige versie bekijken : Thumbnail script geeft rare tekens weer



Lenny'tje
2 December 2010, 17:31
Hallo,

Ik heb een thumbnail script in elkaar geprutst maar bij het testen geeft het ergens een fout.
Ik krijg vreemde en minder vreemde tekens in mijn browser te voorschijn als ik op Upload klik.

Kan iemand helpen met mijn meesterwerk? :lol:




if ( count($error) == 0 )
{
$filename = basename($_FILES['user_file']['name']);
$extention = '.';
$extention = $extention . strtolower( substr($filename, 1+strrpos($filename, '.')) );

$var = 'Midyat_';
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$new_name = $var . $extention;

$iPath = 'uploads/images/';
$iPath = $iPath . $new_name;

$aImage = $_FILES['user_file']['tmp_name'];
$imagesize = getimagesize($aImage);
$width = $imagesize[0];
$height = $imagesize[1];
$max_width = 150;
$max_height = 100;
if ($height > $max_width || $height > $max_height)
{
if ($width / $height > $max_width / $max_height)
{
$new_width = $max_width;
$a = $width / $max_width;
$new_height = round($height / $a);
}
else
{
$new_height = $max_height;
$a = $height / $max_height;
$new_width = round($width / $a);
}
}
else
{
$new_width = $width;
$new_height = $height;
}
if ($extention == 'jpg' || 'jpeg')
{
$img = @imagecreatefromjpeg($aImage);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
$thumb = imagejpeg($img);
}
if ($extention == 'png' || 'x-png')
{
$img = @imagecreatefrompng($aImage);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
$thumb = imagepng($img);
}
if ($extention == 'gif')
{
$img = @imagecreatefromgif($aImage);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
$thumb = imagegif($img);
}

$tPath = 'uploads/thumbs/';
$tPath = $tPath . $thumb;

$sql = "INSERT
INTO
`images`
( im_filename
, im_thumbnail
, im_tags
, im_date
, im_descript
)
VALUES
( '".$iPath."'
, '".$tPath."'
, '".$_POST['tags']."'
, '".$_POST['date']."'
, '".$_POST['descript']."'
) ";
if ( (mysql_query($sql)) === false )
{
if ( mysql_errno() == 1062 )
{
echo '<div class="error">
De afbeelding "'.$filename.'" kon niet worden gëupload<br>
Upload de afbeelding opnieuw.
</div>';
}
else
{
echo '<div class="error">
Er is een fout opgetreden tijdens het verwerken van de gegevens<br>
De foutmelding luidt: '.mysql_error().'<br>'.mysql_errno().'<br>
Gelieve contact op te nemen met de <a href="contact.php">webmaster</a>
</div>';
}
}
else
{
if ( ( move_uploaded_file($_FILES['user_file']['tmp_name'], $iPath) ) === false )
{
echo '<div class="error">
Er ging iets fout tijdens het uploaden van de afbeelding.<br>
Probeer de afbeelding opnieuw te uploaden.<br>
Gelieve contact op te nemen met de <a href="contact.php">webmaster</a> als het probleem zich blijft voordoen.
</div>';
}
elseif ( ( move_uploaded_file($thumb, $tPath) ) === false )
{
echo '<div class="error">
Kon de afbeelding niet naar zijn map verplaatsen.
</div>';
}
else
{
echo '<div class="succes">
De afbeelding "'.$filename.'" is succesvol naar het foto-album gëupload.
</div>';
}
}
}


Dit was dus het "script".

Butterflyice
2 December 2010, 18:49
Heb je ook je upload formulier erbij.
En welke fout melding krijg je ? (melding)

Lenny'tje
2 December 2010, 20:54
Het is niet echt een melding, het zijn allemaal rare tekens die ik krijg.

Ik zal ff het volledige script neerzetten ^^ ma da is veel zele.



<?php

$title = 'Config. Images';

include_once 'header.php';

include_once 'sct/connect.php';

if ( $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['get_img']) == 'Upload' )
{
$error = array();
if ( $_FILES['user_file']['error']!=0 )
{
switch($_FILES['user_file']['error'])
{
case UPLOAD_ERR_OK:
break;
case UPLOAD_ERR_INI_SIZE:
echo '<div class="error">Het bestand dat U heeft geüpload overschrijd de maximum bestand-grootte.</div>';
$error = 1;
break;
case UPLOAD_ERR_FORM_SIZE:
echo '<div class="error">Het bestand dat U heeft geüpload overschrijd de maximum bestand-grootte.</div>';
$error = 1;
break;
case UPLOAD_ERR_PARTIAL:
echo '<div class="error">Het bestand is maar gedeeltelijk geüpload<br>Probeer het bestand opnieuw te uploaden.</div>';
$error = 1;
break;
case UPLOAD_ERR_NO_FILE:
echo '<div class="error">Je hebt geen bestand gekozen.</div>';
$error = 1;
break;
case UPLOAD_ERR_NO_TMP_DIR:
echo '<div class="error">Kan de tijdelijke opslag-map niet vinden.</div>';
$error = 1;
break;
case UPLOAD_ERR_CANT_WRITE:
echo '<div class="error">Kan het bestand niet naar de doelmap schrijven.</div>';
$error = 1;
break;
default:
echo '<div class="error">Onbekende fout</div>';
$error = 1;
}
}
if ( count($error) == 0 )
{
$error = array();
$Mimetypes = array('image/jpeg' , 'image/pjpeg' , 'image/jpg' ,'image/gif' , 'image/png' , 'image/x-png');
$Mimetype = trim($_FILES['user_file']['type']);
if ( !in_array($Mimetype, $Mimetypes) )
{
echo '<div class="error">
Het bestand is van het type:<br> ("'.htmlspecialchars($Mimetype).'")<br>
Alleen afbeeldingen van de volgende types:<br> ('.implode(', ', $Mimetypes).') zijn toegelaten.
</div>';
$error = 1;
}
$Extentions = array('jpg','jpeg','gif','png','x-png');
$Original_filename = basename($_FILES['user_file']['name']);
$Extention = strtolower(substr($Original_filename, 1+strrpos($Original_filename, '.') ));
if ( !in_array($Extention, $Extentions) )
{
echo '<div class="error">
Het bestand heeft de extentie: <br>("'.htmlspecialchars($Extention).'")<br>
Alleen afbeeldingen van de volgende extenties: <br>('.implode(', ',$Extentions).') zijn toegelaten.
</div>';
$error = 1;
}
if ( isset($_POST['tags']) && !preg_match('~^[A-Za-z0-9\' ,;]{2,100}$~', $_POST['tags']) )
{
echo '<div class="error">
De tags mogen alleen de volgende tekens bevatten ( a-z A-Z 0-9 (spatie) , ; )<br>
Alle andere tekens worden niet ondersteund.<br>
Minimaal 2 tekens en maximaal 100 tekens zijn toegelaten.
</div>';
$error = 1;
}
if ( isset($_POST['descript']) && !preg_match('~^[-_a-zA-Z0-9\' ,,;éàè&üÜïÏöÖëË]{2,200}$~', $_POST['descript']) )
{
echo '<div class="error">
De omschrijving mag enkel deze tekens bevatten ( a-z A-Z 0-9 (spatie) é è à & ü ï ö ë )<br>
Alle andere tekens worden niet ondersteund.<br>
Minimaal 2 tekens en maximaal 200 tekens zijn toegelaten.
</div>';
$error = 1;
}
if ( count($error) == 0 )
{
$filename = basename($_FILES['user_file']['name']);
$extention = '.';
$extention = $extention . strtolower( substr($filename, 1+strrpos($filename, '.')) );

$var = 'Midyat_';
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$var = $var . mt_rand(0,9);
$new_name = $var . $extention;

$iPath = 'uploads/images/';
$iPath = $iPath . $new_name;

$aImage = $_FILES['user_file']['tmp_name'];
$imagesize = getimagesize($aImage);
$width = $imagesize[0];
$height = $imagesize[1];
$max_width = 150;
$max_height = 100;
if ($height > $max_width || $height > $max_height)
{
if ($width / $height > $max_width / $max_height)
{
$new_width = $max_width;
$a = $width / $max_width;
$new_height = round($height / $a);
}
else
{
$new_height = $max_height;
$a = $height / $max_height;
$new_width = round($width / $a);
}
}
else
{
$new_width = $width;
$new_height = $height;
}
if ($extention == 'jpg' || 'jpeg')
{
$img = @imagecreatefromjpeg($aImage);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
$thumb = imagejpeg($img);
}
if ($extention == 'png' || 'x-png')
{
$img = @imagecreatefrompng($aImage);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
$thumb = imagepng($img);
}
if ($extention == 'gif')
{
$img = @imagecreatefromgif($aImage);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
$thumb = imagegif($img);
}

$tPath = 'uploads/thumbs/';
$tPath = $tPath . $thumb;

$sql = "INSERT
INTO
`images`
( im_filename
, im_thumbnail
, im_tags
, im_date
, im_descript
)
VALUES
( '".$iPath."'
, '".$tPath."'
, '".$_POST['tags']."'
, '".$_POST['date']."'
, '".$_POST['descript']."'
) ";
if ( (mysql_query($sql)) === false )
{
if ( mysql_errno() == 1062 )
{
echo '<div class="error">
De afbeelding "'.$filename.'" kon niet worden gëupload<br>
Upload de afbeelding opnieuw.
</div>';
}
else
{
echo '<div class="error">
Er is een fout opgetreden tijdens het verwerken van de gegevens<br>
De foutmelding luidt: '.mysql_error().'<br>'.mysql_errno().'<br>
Gelieve contact op te nemen met de <a href="contact.php">webmaster</a>
</div>';
}
}
else
{
if ( ( move_uploaded_file($_FILES['user_file']['tmp_name'], $iPath) ) === false )
{
echo '<div class="error">
Er ging iets fout tijdens het uploaden van de afbeelding.<br>
Probeer de afbeelding opnieuw te uploaden.<br>
Gelieve contact op te nemen met de <a href="contact.php">webmaster</a> als het probleem zich blijft voordoen.
</div>';
}
elseif ( ( move_uploaded_file($thumb, $tPath) ) === false )
{
echo '<div class="error">
Kon de afbeelding niet naar zijn map verplaatsen.
</div>';
}
else
{
echo '<div class="succes">
De afbeelding "'.$filename.'" is succesvol naar het foto-album gëupload.
</div>';
}
}
}
}
}

include_once 'submenu.inc';

?>
<div id="invoerveld">
<form enctype="multipart/form-data" action="" method="post">
<div id="top">
<table width="880" cellspacing="0" cellpadding="0" border="0" style="color:#900;font-size:18px" >
<tr style="text-decoration:underline">
<td width="880" height="40">
<center>
<strong>
Voeg een afbeelding toe aan het foto-album.
</strong>
</center>
</td>
</tr>
</table>
</div>
<div id="invoer_center">
<table width="880" cellspacing="0" cellpadding="0" border="0" style="color:#900;font-size:18px">
<tr>
<td width="430" height="30" align="right" style="padding-right: 10px;">
Kies een afbeelding:
</td>
<td width="440" height="30">
<input type="file" id="button" name="user_file" />
<input type="hidden" name="date" value="<?php echo date("Y-m-d H:i:s"); ?>" />
</td>
</tr>
<tr>
<td width="430" height="30" align="right" style="padding-right: 10px;">
Vul je tags in:
</td>
<td width="440" height="30">
<input type="text" name="tags" id="textfield" />
</td>
</tr>
<tr>
<td width="430" height="30" align="right" style="padding-right: 10px;">
Vul een omschrijving in:
</td>
<td width="440" height="30">
<textarea name="descript" id="descriptfield" valign="top" /></textarea>
</td>
</tr>
<tr>
<td width="430" height="30" align="right" style="padding-right: 10px;">
Voeg de afbeelding toe aan het foto-album:
</td>
<td width="440" height="30">
<input type="submit" id="button" name="get_img" value="Upload" />
</td>
</tr>
</table>
</div>
<div id="bottom">
</div>
</form>
</div>

<?php

include_once 'footer.php';

?>


Zo dit is het ^^

Enkel de thumbnail functie werkt niet.
(door een of andere domme reden wss) :d

Butterflyice
3 December 2010, 12:22
Heb je een klein stukje van de code(foutmelding)?

Lenny'tje
3 December 2010, 20:32
Ik heb het al gemaakt ^^ toch bedankt ^^

Die tekens ware de tekens die in de browser getoond werden was de afbeelding xd (als je de afbeelding opent in een tekstbestand zie je dezelfde tekens).

de functie imagejpeg($img) moest dit worden imagejpeg($img, $path) moest het worden ^^

nu heb ik nog 1 probleem en dat zijn de if statements (als de afbeelding een jpeg of jpg is gaat hij toch door met de codeblock's png en gif)

de extensies staan in de variabele $extention

dus men if statement is if ( $extention == 'jpg','jpeg') is dit goed zo?
Ik heb ook dit al geprobeerd if ( $extention == 'jpg' || 'jpeg')
en ook dit if ( $extention = 'jpg', 'jpeg')
en dit ook if ( $extention = 'jpg' || jpeg)
en zelfs zonder quots maar hij blijft door gaan met de volgende code blokken...

Butterflyice
3 December 2010, 21:23
if ($extention == 'jpg' ||$extention == 'jpeg')
zo zou het correct behoren te werken

Lenny'tje
3 December 2010, 22:50
ok thx, kzal het eens proberen.

hierna nog het moeilijkste gedeelte, een uploadscript voor een video en daarvan moet ook een thumb gemaakt worden.

zoiets al youtube ^^ maar in een mooier jasje ^^


nog een vraagje bij vele dingen staat -> staat die pijl gelijk aan een = ? of wat doet dit juist?

Lenny'tje
4 December 2010, 21:22
ik krijg nu deze error als ik een PNG wil uploaden

Warning: imagepng() [function.imagepng]: gd-png: fatal libpng error: zlib failed to initialize compressor -- stream error in C:\wamp\www\midyat\conf_3.php on line 178

Warning: imagepng() [function.imagepng]: gd-png error: setjmp returns error condition in C:\wamp\www\midyat\conf_3.php on line 178

in mijn GD staat dan png is enabled

Butterflyice
4 December 2010, 23:28
wat staat er op regel 178 ?
want daar geeft hij een melfing over.

Lenny'tje
5 December 2010, 16:05
daar staat dit stukje code:



$Mimetypes = array('image/png','image/x-png');
$Mimetype = trim($_FILES['user_file']['type']);
if ( in_array($Mimetype, $Mimetypes) )
{
$img = @imagecreatefrompng($aImage);
$tmp_img = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($img);
$img = $tmp_img;
imagepng($img, $tPath);//Deze gaf de foutmelding (regel 178)
}


Als PNG is enabled in GD ondersteund dit dan ook x-png?

(de afbeelding was een gewone png)

Butterflyice
5 December 2010, 16:17
Waar komen de waardes
$img en $tPath vandaan ?

Lenny'tje
6 December 2010, 21:20
Wel $tPath is het pat waar de thumb naar geschreven wordt

en $img heeft de waarden van $tmp_img die vervolgens deze waarde imagecreatetruecolor($new_width, $new_height);