0

Ok I am to the point of pulling my hair out. I have been trying all day to get this to work right and nothing. Right now what this script is doing is when you go to upload the file it goes to the page and there is no image. I have no clue why aint it working right. I am still new at this file/image upload thing. I have tried a few different ways and nothing. Here is the upload.php code:

      <?php
    function dbConnect(){
    // Connect to the database
    $hostname="localhost";
     $database="myDatabase";
     $mysql_login="myLogin";
     $mysql_password="myPassword";

     if(!($db=mysql_connect($hostname, $mysql_login, $mysql_password))){
        echo"error on connect";
     }
     else{
        if(!(mysql_select_db($database,$db))){
            echo mysql_error();
            echo "<br />error on database connection. Check your settings.";
        }
        else{
                    echo "This is the home page. I have successfully made a connection to my database and everything
     is working as it should.";
            }
   }
    $aryImages=array("image/jpeg","image/png");
    $aryDocs=array("application/msword","application/pdf","video/x-msvideo");
    $filename=filenameSafe($_FILES['upload']['name']);
    $fileType=$_FILES["upload"]["type"];
    if (in_array($_FILES["upload"]["type"],$aryImages)){
        createThumb($fileType,$_FILES['upload']['tmp_name'],$filename,100,100);
    }
    elseif (in_array($_FILES["upload"]["type"],$aryDocs)){
        move_uploaded_file($_FILES['upload']['tmp_name'],
    "/home/valerie2/public_html/elinkswap/imagefolder/".$filename);
        $aryColumns=array("sessionID"=>$curSess,"fileName"=>$filename,"fileType"=>$fileType,"thumbFileName"=>$thumbFilename,"dateCreated"=>date('Y-m-d H:i:s'));
        dbInsert($filename,$aryColumns,$_FILES["upload"]["type"]);
    }
    else{

        echo "File Uploaded";
      }
     }
    function createThumb($type,$tmpname,$filename,$new_w,$new_h){
        $thumbFilename="tmb-".$filename;
        echo $type;
        echo "<br>".$tmpname;
        if (is_numeric(strpos($type,"jpeg"))){
            $src_img=imagecreatefromjpeg($tmpname);
        }
        if (is_numeric(strpos($type,"png"))){
            $src_img=imagecreatefrompng($tmpname);
        }
        $old_x=imageSX($src_img);
        $old_y=imageSY($src_img);
        if ($old_x > $old_y) {
            $thumb_w=$new_w;
            $thumb_h=$old_y*($new_h/$old_x);
        }
        if ($old_x < $old_y) {
            $thumb_w=$old_x*($new_w/$old_y);
            $thumb_h=$new_h;
        }
        if ($old_x == $old_y) {
            $thumb_w=$new_w;
            $thumb_h=$new_h;
        }
        $dst_img=imagecreatetruecolor($thumb_w,$thumb_h);
        imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
        if (is_numeric(strpos($type,"jpeg"))){
            imagejpeg($dst_img,"/home/valerie2/public_html/elinkswap/upload/".$thumbFilename);
            imagejpeg($src_img,"/home/valerie2/public_html/elinkswap/upload/".$filename);
        }
        if (is_numeric(strpos($type,"png"))){
            imagepng($dst_img,"/home/valerie2/public_html/elinkswap/upload/".$thumbFilename);
            imagepng($src_img,"/home/valerie2/public_html/elinkswap/upload/".$filename);
        }
        imagedestroy($dst_img);
        imagedestroy($src_img);
        dbInsert($filename,$thumbFilename,$type);
    }
    function filenameSafe($filename) {
        $temp = $filename;
        // Lower case
        $temp = strtolower($temp);
        // Replace spaces with a ’_’
        $temp = str_replace(" ", "_", $temp);
        // Loop through string
        $result = "";
        for ($i=0; $i<strlen($temp); $i++) {
            if (preg_match('([0-9]|[a-z]|_|.)', $temp[$i])) {
                $result = $result.$temp[$i];
            }
        }
        dbConnect();
        $SQL="SELECT fileID FROM upload WHERE fileName='".$result."'";
        //echo $SQL;
        $rs=mysql_query($SQL);
        echo mysql_num_rows($rs);
        if(mysql_num_rows($rs)!=0){
            $extension=strrchr($result,'.');
            $result=str_replace($extension,time(),$result);
            $result=$result.$extension;
        }
        return $result;
    }

    function dbInsert($filename,$thumbFilename,$type){
        dbConnect();
        $SQL="INSERT Into upload (fileName,thumbFileName,fileType) values('".$filename."','".$thumbFilename."','".$type."')";
        //echo $SQL;
        mysql_query($SQL);
    }
    ?>

And this is my index.php code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>File Upload</title>
<link href="styles.css" type="text/css" rel="stylesheet" />
</head>
<body>


<form enctype="multipart/form-data" action="upload.php" method="post">

Select File: <input type="file" name="upload">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
<input name="Submit" type="submit" value="Upload File">

</form>
</html>

Both these files are inside a folder name imagefolder only with a folder called upload. I have read so many things on the file/image and so many videos but I still aint understand why the picture wont show up.I even tried to do another way but it kept telling me invaild file type.

2
  • There not an error message but there is not a picture that comes up that I am trying to upload.The page is white. Commented Dec 2, 2011 at 23:52
  • You’ve got a lot going on there. Break it down to just a simple file uploader and see if that works before adding it all the other layers. Remember to check the file permissions of the folder you’re uploading to. Commented Dec 2, 2011 at 23:57

3 Answers 3

1

Your upload.php defines a lot of functions, but are they actually called somewhere? Some are calling each other, but none of them seems to be called from "always executed" code. You have to add some code which is executed in every case at executing this php file, e.g. after your dbInsert function:

function dbInsert($filename,$thumbFilename,$type){
    dbConnect();
    $SQL="INSERT Into upload (fileName,thumbFileName,fileType) values('".$filename."','".$thumbFilename."','".$type."')";
    //echo $SQL;
    mysql_query($SQL);
}
dbConnect();

But from a cursory glance I could't really determine if dbConnect is really the proper function to call - your functions seem a bit randomly interconnected; why is dbConnect calling createThumb, when createThumb is calling dbInsert, which in turn is calling dbConnect again? That will create an infinite recursion loop.

If I were you I'd start without any functions for testing the wanted behavior. You can always extract functionality to functions later on.

Sign up to request clarification or add additional context in comments.

Comments

1

There seem to be a whole lot of functions, but they never get called, so nothing will happen I suppose.

Comments

0

Check the folder's Permission and simplify your code and try to echo something in each function in order to debug and then determine where does it stop then we can help you more

But most likely its a permission issue

1 Comment

Well I gave the folder permission.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.