Avatar billede torbennielsen666 Nybegynder
17. marts 2011 - 11:34 Der er 6 kommentarer og
1 løsning

Fejl i upload script

Hejsa.

Efter at have luret i mange år, så har jeg endelig fået mig meldt ind og vil prøve at deltage lidt mere aktivt.

Nogen der kan greje fejlen i dette upload script?
 
Den kommer med fejl i linje 25 og jeg har prøvet alt, men kan ikke helt greje problemet. Scriptet burde virke siger ham jeg har fået det fra. Har prøvet at fjerne } som den siger er fejl og scriptet kører videre til upload delen, men så skal den op og bruge funktionen, hvor jeg så har fjernet } og så går det galt.

Det er her det går galt, den siger at } ikke bør være der.
Parse error: syntax error, unexpected '}'

  return $good;
}    <------------------------- fejlen her

Håber nogen kan hjælpe. :-)


<?php
 
  // size input prevents buffer overrun exploits.
  function sizeinput($input, $len){
        (int)$len;
      (string)$input;
      $n = substr($input, 0,$len);
    $ret = trim($n);
    $out = htmlentities($ret, ENT_QUOTES);
    return $out;
}
//Check the file is of correct format.  function checkfile($input){
    $ext = array('mpg', 'wma', 'mov', 'flv', 'mp4', 'avi', 'qt', 'wmv', 'rm');
    $extfile = substr($input['name'],-4);
    $extfile = explode('.',$extfile);
    $good = array();
    $extfile = $extfile[1];
    if(in_array($extfile, $ext)){
          $good['safe'] = true;
        $good['ext'] = $extfile;
    }else{
          $good['safe'] = false;
  }
    return $good;
}
  $user_id = $_SESSION['table_id'];
// if the form was submitted process request if there is a file for uploading
if($_POST && array_key_exists("vid_file", $_FILES)){
                          //$uploaddir is for videos before conversion
                          $uploaddir = 'u/test/';
                          //$live_dir is for videos after converted to flv
        $live_dir = 'u/test/';
                            //$live_img is for the first frame thumbs.
        $live_img = 'u/test/';       
                          $seed = rand(1,2009) * rand(1,10);       
        $upload = $seed. basename($_FILES['vid_file']['name']);
        $uploadfile = $uploaddir .$upload;       
        $vid_title = sizeinput($_POST['vid_title'], 50);
        $vid_desc = sizeinput($_POST['vid_description'], 200);
                          $vid_cat = (int)$_POST['vid_cat'];
        $vid_usr_ip = $_SERVER['REMOTE_ADDR'];
                        $safe_file = checkfile($_FILES['vid_file']);
        if($safe_file['safe'] == 1){
                                if (move_uploaded_file($_FILES['vid_file']['tmp_name'], $uploadfile)) {
                                      echo "File is valid, and was successfully uploaded.<br/>";
                    $base = basename($uploadfile, $safe_file['ext']);
                    $new_file = $base.'flv';
                    $new_image = $base.'jpg';
                    $new_image_path = $live_img.$new_image;
                    $new_flv = $live_dir.$new_file;
                    //ececute ffmpeg generate flv
                      exec('ffmpeg -i '.$uploadfile.' -f flv -s 320x240 '.$new_flv.'');
                      //execute ffmpeg and create thumb
            exec('ffmpeg  -i '.$uploadfile.' -f mjpeg -vframes 1 -s 150x150 -an '.$new_image_path.'');
            echo 'Thank You For Your Video!<br>';
                      //create query to store video

        $sql = 'INSERT INTO video (vid_cat_id, vid_user, vid_title, vid_desc, vid_file_name, image_file, vid_usr_ip) VALUES(\''.$vid_cat.'\', \''.$user_id.'\', \''.$vid_title.'\', \''.$vid_desc.'\', \''.$new_file.'\', \''.$new_image.'\', \''.$vid_usr_ip.'\')';
                    $mysql = new mysqli('localhost', 'x', 'x', 'x');
                    echo '<img src="'.$new_image_path.'" /><br/>
                          <h3>'.$vid_title.'</h3>';
                    mysqli_query($mysql, $sql) or die(mysqli_error($mysql));
            } else {
                    echo "Possible file upload attack!\n";
                    print_r($_FILES);
            }

          else{
       
            echo 'Invalid File Type Please Try Again. You file must be of type
            .mpg, .wma, .mov, .flv, .mp4, .avi, .qt, .wmv, .rm';
       
        }
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <p align="left">Please upload Your video.  Thumbnails of your videos are based on the first frame of your video. <br /><h3>Please allow up to a minute for your video to upload. </h3>
  </p>
  <table width="600" border="0" align="center" cellpadding="2" cellspacing="2">
  <tr>
    <td width="260" align="left" colspan="3"><div align="center">
      <h3>Upload your Video ! </h3>
    </div></td>
  </tr>
    <tr>
      <td width="260"  align="left"></td>
      <td width="326" align="left"></td>
    </tr>
    <tr>
      <td align="left">Title Of Video : </td>
      <td align="left"><input name="vid_title" type="text" id="vid_title" /></td>
  </tr>
  <tr>
    <td align="left">File: .mov, .avi, .wma , .mpeg : </td>
    <td align="left"><input name="vid_file" type="file" id="vid_file" /></td>
  </tr>
  <tr>
    <td align="left">Description:</td>
    <td align="left"><textarea name="vid_description" id="vid_description"></textarea></td>
  </tr>
  <tr>
    <td align="left">Category:</td>
    <td align="left"><select name="vid_cat">
      <option value="1" selected="selected">Video</option>
      <option value="2">Kategori 1</option>
      <option value="3">Kategori 2</option>
      <option value="4">Kategori 3</option>
      <option value="5">Kategori 4</option>
    </select>
    </td>
  </tr>
  <tr>
    <td></td>
    <td><input type="submit" name="Submit" value="Upload Video" /></td>
  </tr>
</table>

</form>
Avatar billede repox Seniormester
17. marts 2011 - 11:39 #1
hvad er fejlen?
Avatar billede repox Seniormester
17. marts 2011 - 11:41 #2
Nå, for pokker... det sprang jeg lige over...

Det er fordi din "return $good;" er malplaceret. Den mangler at være pakket ind i noget da din kode ikke kan bruge return, der hvor du er. Derfor hjælper det ikke at fjerne den sidste }
Avatar billede repox Seniormester
17. marts 2011 - 11:42 #3
Ahh, endnu en åbenbaring...

Det er fordi din funktionsdefinering er i en kommentar (som jeg sjældent læser)...

Linien: //Check the file is of correct format.  function checkfile($input){
skal deles op i to:
//Check the file is of correct format.
function checkfile($input){
Avatar billede torbennielsen666 Nybegynder
17. marts 2011 - 11:50 #4
Tak tak for den hurtige respons.

Var godt nok lidt blind der, dejligt at få andre øjne på. :-)

Du har helt ret, det er da utroligt jeg ikke selv så det - men der kan man bare se, jeg læser heller aldrig selv kommentar.

Nu kom den videre, men gav følgende fejl:

Parse error: syntax error, unexpected T_ELSE
(Linjen med else{)

            }

          else{
       
            echo 'Invalid File Type Please Try Again. You file must be of type
            .mpg, .wma, .mov, .flv, .mp4, .avi, .qt, .wmv, .rm';
Avatar billede repox Seniormester
17. marts 2011 - 12:00 #5
Det er fordi du mangle en } lige før else.
Skriv }else{ og så bør det virke.
Avatar billede torbennielsen666 Nybegynder
17. marts 2011 - 12:20 #6
Hvilket du har helt ret i. Den havde jeg overset!

Jeg siger tusinde tak for hjælpen.

Det hjælper nogle gange med andre øjne på koden. :-)

Smider du lige et svar?
Avatar billede repox Seniormester
17. marts 2011 - 12:25 #7
Det fik du her...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester