Gå til innhold

Støtte for GIF?


Anbefalte innlegg

Hei. Har satt sammen et MMS-uploadingsscript av PHP-filer jeg fant på nette. Men den støtter kunn JPG bilder, og jeg vet ikke hvordan jeg regulerer grensen for max størrelse? Og skulle gjerne hatt støtte for i alle fall GIF og kanskje BMP. Har noen lyst på en utfordring kan du jo se på dette :)

 

<html>

<head>
<title>GratisMobil</title>
<?
//Menyen med mobiler som er i skjemaet
$meny = "<option value=\"2\">Nokia 3100</option>
<option value=\"2\">Nokia 3300</option>
<option value=\"1\">Nokia 3510i</option>
   <option value=\"3\">Nokia 3650</option>
   <option value=\"2\">Nokia 5100</option>
   <option value=\"2\">Nokia 6100</option>
   <option value=\"2\">Nokia 6610</option>
<option value=\"2\">Nokia 6650</option>
<option value=\"2\">Nokia 6800</option>
   <option value=\"2\">Nokia 7210</option>
   <option value=\"2\">Nokia 7250</option>
<option value=\"2\">Nokia 7250i</option>
   <option value=\"3\">Nokia 7650</option>
   <option value=\"1\">Nokia 8910i</option>
   <option value=\"4\">Ericsson T610</option>
   <option value=\"5\">Ericsson T68i</option>
   <option value=\"5\">Ericsson T310</option>
   <option value=\"5\">Ericsson T300</option>
   <option value=\"6\">Ericsson P800</option>
   <option value=\"5\">Siemens</option>";




$formstart = "<strong><font color=\"#FF0000\">ERROR:</font> Du har prøvd å laste 
opp et ugyldig bilde. Du kan kunn laste opp bilder med filendelsen jpg og jpeg.</strong></br></br>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<link href=\"style-mms-uploader.css\" rel=\"stylesheet\" type=\"text/css\">
<link href=\"../styles/main-style.css\" rel=\"stylesheet\" type=\"text/css\">
</head>
<body leftmargin=\"0\" topmargin=\"0\" class=\"BODY\">
<strong>MMS-uploader:</strong><br>
Støtter kunn jpg og jpeg bilder på max 900 KB<br>
<form action=\"index.php\" method=\"POST\" enctype=\"multipart/form-data\">
 <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"10001000\">
 Velg bilde: 
 <input type=\"file\" name=\"imgfile\" class=\"form\">
 <br>
 <br>
 <input type=\"submit\" value=\"Send bilde\" class=\"form\">
 <select name=\"size\" id=\"size\" class=\"form\">
   <option value=\"0\">Velg din mobil</option>";

$formslutt ="</select>
 <input name=\"type\" type=\"radio\" id=\"bakgrunn\" value=\"bakgrunn\" checked>
 <label for=bakgrunn>Bakgrunn</label>
 <input id=\"mms\" type=\"radio\" name=\"type\" value=\"mms\">
 <label for=mms>MMS</label>
</form>
</body>
</html>";

if ($REQUEST_METHOD == "POST") 
{

   /* SUBMITTED INFORMATION - use what you need
    * temporary filename (pointer): $imgfile
    * original filename           : $imgfile_name
    * size of uploaded file       : $imgfile_size
    * mime-type of uploaded file  : $imgfile_type
    */

    /*== upload directory where the file will be stored 
         relative to where script is run ==*/
   
   $uploaddir = ".";
   

   /*== get file extension (fn at bottom of script) ==*/
   /*== checks to see if image file, if not do not allow upload ==*/
   $pext = getFileExtension($imgfile_name);
   $pext = strtolower($pext);
   if (($pext != "jpg")  && ($pext != "jpeg"))
   {
       print($formstart);
 print($meny);
 print($formslutt);

       /*== delete uploaded file ==*/
       exit();
   }


   //-- RE-SIZING UPLOADED IMAGE

   /*== only resize if the image is larger than 250 x 200 ==*/
   $imgsize = GetImageSize($imgfile);


   /*== check size  0=width, 1=height ==*/
   if (($imgsize[0] > 1) || ($imgsize[1] > 1)) 
   {
       /*== temp image file -- use "tempnam()" to generate the temp
            file name. This is done so if multiple people access the 
           script at once they won't ruin each other's temp file ==*/
       $tmpimg = tempnam("/tmp", "MKUP");

       /*== RESIZE PROCESS
            1. decompress jpeg image to pnm file (a raw image type) 
            2. scale pnm image
            3. compress pnm file to jpeg image
       ==*/
       
       /*== Step 1: djpeg decompresses jpeg to pnm ==*/
       system("djpeg $imgfile >$tmpimg");
       

       /*== Steps 2&3: scale image using pnmscale and then
            pipe into cjpeg to output jpeg file ==*/
       if($size == 0)
 {
 print("<strong><font color=\"#FF0000\">ERROR:</font> Du har ikke angitt din mobil</strong></br></br>");
 }
       if($size == 1) /* 3510i,8910i */
 {
 	if($type == mms)
 	{
 	system("pnmscale -xy 96 65 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 	if($type == bakgrunn)
 	{
 	system("pnmscale -x 96 -y 65 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 }
 if ($size == 2) /* 3300,5100,6100,6610,6800,7210,7250 */
 {
 	if($type == mms)
 	{
 	system("pnmscale -xy 128 128 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 	if($type == bakgrunn)
 	{
 	system("pnmscale -x 128 -y 128 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 }
 if ($size == 3) /* 3650,7650 */
 {
 	if($type == mms)
 	{
 	system("pnmscale -xy 174 132 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 	if($type == bakgrunn)
 	{
 	system("pnmscale -x 174 -y 132 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 }
 if ($size == 4) /* T610 */
 {
 	if($type == mms)
 	{
 	system("pnmscale -xy 128 160 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 	if($type == bakgrunn)
 	{
 	system("pnmscale -x 128 -y 160 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 }
 if ($size == 5) /* T68i,T310,T300 */
 {
 	if($type == mms)
 	{
 	system("pnmscale -xy 101 80 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 	if($type == bakgrunn)
 	{
 	system("pnmscale -x 101 -y 80 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 }
 if ($size == 6) /* Ericsson P800 */
 {
 	if($type == mms)
 	{
 	system("pnmscale -xy 108 144 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 	if($type == bakgrunn)
 	{
 	system("pnmscale -x 108 -y 144 $tmpimg | cjpeg -smoo 10 -qual 50 >$imgfile");
 	}
 }

       /*== remove temp image ==*/
       unlink($tmpimg);

   }

   /*== setup final file location and name ==*/
   /*== change spaces to underscores in filename  ==*/
   $final_filename = str_replace(" ", "_", $imgfile_name);
   $newfile = $uploaddir . "/$final_filename";
   
   /*== do extra security check to prevent malicious abuse==*/
   if (is_uploaded_file($imgfile))
   {

      /*== move file to proper directory ==*/
      if (!copy($imgfile,"$newfile")) 
      {
         /*== if an error occurs the file could not
              be written, read or possibly does not exist ==*/
         print("<strong><font color=\"#FF0000\">ERROR:</font> Feil under opplasting. Hvis problemet 
fortsetter, så <a href=\"../main.php?id=kontakt\" target=\"_parent\">kontakt GratisMobil</a></strong>");
   print($formstart);
   print($meny);
   print($formslutt);
         exit();
      }
    }

   /*== delete the temporary uploaded file ==*/
   unlink($imgfile);

if($size == 0)
 {
 }
 else
 {
   	print("<a title=\"$final_filename\"><img src=\"$final_filename\" class=\"ramme\"></a>");
 print("</br>");
 print("</br>");
 print("Adresse: ");
 include("../inc-bin/path.inc");
 print("/$final_filename");
 print("</br>");
 print("</br>");
 }

   /*== DO WHATEVER ELSE YOU WANT
        SUCH AS INSERT DATA INTO A DATABASE  ==*/

}
?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style-mms-uploader.css" rel="stylesheet" type="text/css">
<link href="../css-bin/main-style.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="0" topmargin="0" class="BODY">
<strong>MMS-uploader:</strong><br>
Støtter kunn jpg og jpeg bilder på max 900 KB<br>
<form action="<?=$SCRIPT_NAME; ?>" method="POST" enctype="multipart/form-data">
 <input type="hidden" name="MAX_FILE_SIZE" value="10001000">
 Velg bilde: 
 <input type="file" name="imgfile" class="form">
 <br>
 <br>
 <input type="submit" value="Send bilde" class="form">
 <select name="size" id="size" class="form">
   <option value="0">Velg din mobil</option>
<?php print($meny); ?>
 </select>
 <input name="type" type="radio" id="bakgrunn" value="bakgrunn" checked>
 <label for=bakgrunn>Bakgrunn</label>
 <input id="mms" type="radio" name="type" value="mms">
 <label for=mms>MMS</label>
</form>
</body>
</html>

<?
   /*== FUNCTIONS ==*/

   function getFileExtension($str) {

       $i = strrpos($str,".");
       if (!$i) { return ""; }

       $l = strlen($str) - $i;
       $ext = substr($str,$i+1,$l);

       return $ext;

   }
?>

Endret av simenss
Lenke til kommentar
Videoannonse
Annonse
ser ut som om den bruker et eksternt program for å konvertere fra jpeg til etellerannet format. Det kan gjøre det hele vanskligere. Hvor den faktisk setter begrensningen kan jeg si forøvrig. Søk etter følgende linje:

 

if (($pext != "jpg") && ($pext != "jpeg"))

Vet for lite om bildemanipulering i php/linux til å vite noe om programmet, men det er tydeligvis bruk av et program som heter djpeg

DJPEG

Ser nesten ut som det kun konverterer Jpeg bilder. Ellers må du modifisere scripet og finne et annet program som kan ta gif filer :roll:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...