Solved

image uplaod tool to with password restriction

Posted on 2010-11-17
12
305 Views
Last Modified: 2012-06-21
HI Guys,

im looking for a free tool (or very cheap) so I can upload hi res images to my hosting account so they can download for magazine editorials etc.

requirements.

user / pass protected.
have thumbnails then on click download to large hi res image.
Very clean and simple to use.
ideally no other functions.

Any ideas would be great.

php mysql  must.
0
Comment
Question by:Cheryl Lander
  • 5
  • 5
  • 2
12 Comments
 
LVL 3

Expert Comment

by:boraganesh
ID: 34161720
would you like to upload it through FTP?
or you need simple php scripting which will embed into your site to for uploading images on server. so your site users can uplaod images to server
0
 

Author Comment

by:Cheryl Lander
ID: 34161811
not ftp.

user upload form which sends to server.

So agree with your second line.
0
 
LVL 3

Assisted Solution

by:boraganesh
boraganesh earned 100 total points
ID: 34161885
http://www.webcheatsheet.com/PHP/file_upload.php you can check this code. for more user security you can your security to this code to check your users login.
0
 
LVL 108

Accepted Solution

by:
Ray Paseur earned 400 total points
ID: 34163774
This is not really a question -- it's a requirement for custom application development, with several moving parts.  I can show you some of these parts individually, and perhaps you or a paid professional developer could combine them into your custom application.

How to handle client registration and login
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_2391-PHP-login-logout-and-easy-access-control.html

How to use email to confirm registrations
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_3939-Registration-and-Email-Confirmation-in-PHP.html

How to upload files in the code snippet - this needs to be modified to suit your file structure and add the thumbnail portion, but the image resize functions are illustrated in the script, so it should be a short path from there to a finished piece of code.

HTH, ~Ray
<?php // RAY_upload_and_resize_image.php

date_default_timezone_set('America/Chicago');





// UPLOAD AN IMAGE AND RESIZE IT TO FIT A PREDEFINED SIZE





// A FUNCTION TO DETERMINE IF GD IS AT LEVEL 2 OR MORE

function get_gd_info($display=FALSE)

{



    // IS GD INSTALLED AT ALL?

    if (!function_exists("gd_info"))

    {

        if ($display) echo "<br/>GD NOT INSTALLED\n";

        return FALSE;

    }



    // IF GD IS INSTALLED GET DETAILS

    $gd = gd_info();



    // IF DISPLAY IS REQUESTED, PRINT DETAILS

    if ($display)

    {

        echo "<br/>GD DETAILS:\n";

        foreach ($gd as $key => $value)

        {

            if ($value === TRUE)  $value = 'YES';

            if ($value === FALSE) $value = 'NO';

            echo "<br/>$key = $value \n";

        }

    }



    // RETURN THE VERSION NUMBER

    $gd_version = preg_replace('/[^0-9\.]/', '', $gd["GD Version"]);

    return $gd_version;

}





// A FUNCTION TO MAKE AN IMAGE INTO THE RIGHT WIDTH FOR PAGE DISPLAY

// WILL WORK IF GD2 NOT INSTALLED, BUT WILL MAKE BETTER IMAGES WITH GD2

// INPUT IS THE IMAGE FILE NAME, OUTPUT IS AN IMAGE RESOURCE, OR FALSE IF NO RESIZE NEEDED

function create_right_size_image($image, $width=720)

{

    // IS GD HERE?

    $gdv = get_gd_info();

    if (!$gdv) return FALSE;



    // GET AN IMAGE THING

    $source = imagecreatefromjpeg("$image");



    // GET THE X AND Y DIMENSIONS

    $imageX = imagesx($source);

    $imageY = imagesy($source);



    // IF NO RESIZING IS NEEDED

    if ($imageX <= $width)

    {

        return FALSE;

    }



    // THE WIDTH IS TOO GREAT - MUST RESIZE

    $tnailX = $width;

    $tnailY = (int) (($tnailX * $imageY) / $imageX );



    // WHICH FUNCTIONS CAN RESIZE / RESAMPLE THE IMAGE?

    if ($gdv >= 2)

    {

        // IF GD IS AT LEVEL 2 OR ABOVE

        $target = imagecreatetruecolor($tnailX, $tnailY);

        imagecopyresampled ($target, $source, 0, 0, 0, 0, $tnailX, $tnailY, $imageX, $imageY);

    } else

    {

        // IF GD IS AT A LOWER REVISION LEVEL

       $target = imagecreate($tnailX, $tnailY);

       imagecopyresized   ($target, $source, 0, 0, 0, 0, $tnailX, $tnailY, $imageX, $imageY);

    }

    return $target ;

}

/* ********************************************************************************************* */





// ESTABLISH THE NAME OF THE PHOTOS DIRECTORY

$photos    = 'photos';



// ESTABLISH THE LARGEST FILE WE WILL UPLOAD

$max_file_size = '5000000'; // A BIT MORE THAN 4MB



// THIS IS A LIST OF THE POSSIBLE ERRORS THAT CAN BE REPORTED in $_FILES[]["error"]

$errors = array

( 0 => "Success!"

, 1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini"

, 2 => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"

, 3 => "The uploaded file was only partially uploaded"

, 4 => "No file was uploaded"

, 5 => "UNDEFINED"

, 6 => "Missing a temporary folder"

, 7 => "Cannot write file to disk"

)

;



// IF THERE IS NOTHING USEFUL IN $_POST, PUT UP THE FORM FOR INPUT

if ( (empty($_POST['p'])) && (empty($_POST['MAX_FILE_SIZE'])) ) {

    ?>

    <h2>Upload Photos</h2>



    <!-- NOTE THE USE OF ENCTYPE -->

    <form name="UploadForm" enctype="multipart/form-data" action="<?=$_SERVER["REQUEST_URI"]?>" method="POST">

    <input type="hidden" name="p" value="1" />

    <!-- MAX_FILE_SIZE MUST PRECEDE THE FILE INPUT FIELD -->

    <input type="hidden" name="MAX_FILE_SIZE" value="<?=$max_file_size?>" />

    <!-- INPUT NAME= IN TYPE=FILE DETERMINES THE NAME FOR ACTION SCRIPT TO USE IN $_FILES ARRAY -->

    <p>

    Find the photo you want to upload and click the "Upload" button below.

    </p>



    <table cellpadding="1" cellspacing="1" border="0">

    <tr><td align="right"><span class="required">Photo: </span></td> <td><input name="userfile" type="file" size="80" /></td></tr>

    <tr><td> </td><td><input type="submit" name="_submit" value="Upload" />

    &nbsp; &nbsp; Check this box <input autocomplete="off" type="checkbox" name="overwrite" /> to <b>overwrite</b> an existing photo.</td></tr>

    </table>

    </form>



    <?php die();



}



// THERE IS POST DATA - PROCESS IT

else

{

    echo "<h2>Results: Upload Photos</h2>\n";

    echo "<p>\n";



    // SYNTHESIZE THE NEW FILE NAME

    $f_type  = trim(strtolower(end    (explode( '.', basename($_FILES['userfile']['name'] )))));

    $f_name  = trim(strtolower(current(explode( '.', basename($_FILES['userfile']['name'] )))));

    $my_new  = getcwd() . '/' . $photos . '/' . $f_name . '.' . $f_type;

    $my_file = $photos  . '/' . $f_name . '.' . $f_type;



    // TEST FOR ALLOWABLE EXTENSIONS

    if ($f_type != 'jpg')

    {

        die('Sorry, only JPG files allowed');

    }



    // IF THERE ARE ERRORS

    $error_code    = $_FILES["userfile"]["error"];

    if ($error_code != 0)

    {

        $error_message = $errors[$error_code];

        echo "<p class=\"required\">Upload Error Code: $error_code: $error_message</p>\n";

        die('Sorry');

    }



    // MOVE THE FILE INTO THE DIRECTORY

    $overwrite    = $_POST['overwrite'];

    $file_size    = number_format($_FILES["userfile"]["size"]);



    // IF THE FILE IS NEW

    if (!file_exists($my_new))

    {

        if (move_uploaded_file($_FILES['userfile']['tmp_name'], $my_new))

        {

            $upload_success = 1;

        }

        else

        {

            $upload_success = -1;

        }

    }

    // IF THE FILE ALREADY EXISTS

    else

    {

        echo "<b><i>$my_file</i></b> already exists.\n";



        // SHOULD WE OVERWRITE THE FILE? IF NOT

        if (empty($overwrite))

        {

            $upload_success = 0;

        }

        // IF WE SHOULD OVERWRITE THE FILE, TRY TO MAKE A BACKUP

        else

        {

            $now    = date('Y-m-d');

            $my_bak = $my_new . '.' . $now . '.bak';

            if (!copy($my_new, $my_bak))

            {

                echo "<b>Attempted Backup Failed!</b>\n";

            }

            if (move_uploaded_file($_FILES['userfile']['tmp_name'], $my_new))

            {

                $upload_success = 2;

            }

            else

            {

                $upload_success = -1;

            }

        }

    }



    // REPORT OUR SUCCESS OR FAILURE

    if ($upload_success == 2) { echo "It has been overwritten.\n"; }

    if ($upload_success == 1) { echo "<b><i>$my_file</i></b> has been saved.\n"; }

    if ($upload_success == 0) { echo "<b>It was NOT overwritten.</b>\n"; }



    if ($upload_success > 0)

    {

        echo "$file_size bytes uploaded.\n";

        chmod ($my_new, 0755);

    }



    echo "</p>\n";



    // RESIZE THE FILE TO FIT PAGE WIDTH, IF NECESSARY

    if ($upload_success > 0)

    {

        if ($imageblob = create_right_size_image($my_new))

        {

            imagejpeg($imageblob, $my_new);

        }

    }



    echo "<p><a href=\"$my_file\">See the file</a></p>\n";

}

Open in new window

0
 

Author Comment

by:Cheryl Lander
ID: 34168736
HI Guys.

I can code up an upload form.

But I was looking for an already developed solution which handle everything so I just had to install on the server and start using.
0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 34169706
Please feel free to copy my code and modify it for your own unique needs.  Nobody would have your exact file structure nor your exact database.  So no matter where you start there is some customization required.  It would not take more than a few hours at most.
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Closing Comment

by:Cheryl Lander
ID: 34169728
wanted an already developed solution.
0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 34169747
Yeah, and I want a Ferrari.  There's just not anything quite like your unique needs.  Believe me, I looked!  Good luck with it, ~Ray
0
 

Author Comment

by:Cheryl Lander
ID: 34169778
;-)

Thanks.

Maybe a market for it.

Generally we wanted something for myself to upload editorial photos in hi res.

At the moment we have to email clients each time that want photos on a particular product / service.

Thought we can could add them via a managed website so people could login and download the images in hi res after logging in securely.

But I will look into budgets and develop something.
0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 34169797
Cool - let me know if you need a hired hand.  I have some bandwidth between now and Christmas.
0
 

Author Comment

by:Cheryl Lander
ID: 34169809
ok. can you send me some info about you?
0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 34169824
Uhh, not much more than my profile here at EE.  I get 100% of my work from referrals and do not even have a resume.  I'm fairly good with PHP and MySQL.  I am not a designer, but I know CSS well enough to create styled code.  I am not a bigot about OOP.  I live and work near Washington, DC.  I have a son who plays catcher on a top-notch baseball team.  I have a dog that catches frisbees.  I'm using my EE experience to write a book on PHP.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Building a website can seem like a daunting task to the uninitiated but it really only requires knowledge of two basic languages: HTML and CSS.
These days socially coordinated efforts have turned into a critical requirement for enterprises.
In this tutorial viewers will learn how to style elements, such a divs, with a "drop shadow" effect using the CSS box-shadow property Start with a normal styled element, such as a div.: In the element's style, type the box shadow property: "box-shad…
In this tutorial viewers will learn how to embed videos in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: "<!DOCTYPE html>": Use the <video> tag to insert a video. Define the src as the URL of your video; this is similar to …

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now