Jump to content
Larry Ullman's Book Forums

Recommended Posts

Hi Larry and everyone

 

I have an academic type question so won't bore you with too much code.  I am using the filenames generated by my camera (e.g. P9100399.JPG), uploading them, and then adding comments for a website later when I have time.  I know you don't like doing this but hey!  When uploading an image file, it is nice to check that it hasn't been uploaded to the same file previously.

 

- Select file

 

- Check if it exists on PC / size etc. etc.

 

- Check if there is a matching filename using "if (file_exists(strtolower($_FILES['upload']['name'])))

 

- If exists, then "File exists on system.  Do you want to overwrite?<a href upload_file2.php...etc>YES</a>"

 

- Use SESSIONs to send $_FILES['upload']['temp_file] to upload_file2.php

 

- Overwrite file with new image using SESSIONs to grab the temp filename.

 

- Save filename to MySQL database with other data such as where taken, comments (to be updated later whenever), using the filename minus the file extension as the index, so it is therefore unique.

 

The problem is that whether using $_POST or <a href> you seem to lose the temp file off of the server - I guess PHP erases it when you call recursively or to another program.

 

What it means (when I'm programming anyway) is that if you want to overwrite the file, you need to re-start the process again (ignoring the 'file_exists' part) thus requiring the user to re-select the image.  It works fine but I just feel that it is a bit clunky.  Maybe Javascript would be a solution? 

Link to post
Share on other sites
  • 2 weeks later...
  • Replies 104
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Sorry for the delay and for the confusion. In Chapter 6, the forum tables are created without mentioning the storage engine, that is true. But in Chapter 7, an ALTER command is used to convert those t

Hi Rafaec, I haven't got as far as you in the book so I can't answer your question. I've just been posting here what I think might be the answers to the Review and Pursue. Like you I am not always su

Another post: solution to Chapter 9 Review and Pursue, Pursue topic 3: In view_users.php: To use the mysqli_num_rows($result) as a boolean value to test TRUE, I simply removed line 19 if ($num

Ah! Interesting problem. Yes, a temporary file is, by definition, temporary, so your second step means you lose access to it. JavaScript can't really help as it's client-side. But what you can do is make the temporary file not temporary by moving it to an intermediary location/filename. Then you would make the official move if appropriate. The only thing to watch out for is if the final step is never taken you could have phantom unnecessary files, so I'd recommend putting these into a new directory during the intermediary step so you can always go back in and clear out that directory later (i.e., perform garbage collection).

Link to post
Share on other sites
  • 2 weeks later...
  • 6 months later...

Been trying my best at the review and pursue section for chapter 15, login_ajax.php

where it said

 

*Modify login_ajax.php so that it uses
a database to confirm successful login.*

 

this is what i've tried so far, whatever i do, the response i get seems to always be "INCORRECT" and then the ajax script never logs me in

 

my code so far:

<?php

if (isset($_GET['email'], $_GET['password'])){

    $email = $_GET['email'];
    $password = $_GET['password'];

    // Need a valid email address:
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {

        // must match specific values:
        // This values will be gotten from a database

        require('../mysqli_connect.php');

        // retrieve from database

        $q = "SELECT email, pass FROM users WHERE email = '$email'LIMIT 1";

        // run the query
        $r = @mysqli_query($dbc, $q);


        //$check_email = "";
        //$check_pass = "";

        /*while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {

            $check_email = $row['email'];
            $check_pass = $row['pass'];

        }*/   // if the email and password match those in database

        //if (($email == $check_email && $password == $check_pass)) {
        if (mysqli_num_rows($r) > 0) {

            echo 'CORRECT';


        } else {

            echo 'INCORRECT';
        }



        mysqli_close($dbc);


        /*    if(($_GET['email'] == 'email@example.com') && ($_GET['password'] == 'testpass')){
    
                //Set a cookie, if you want, or start a session.
                // indicate  success:
                echo 'CORRECT';
    
            }else{// mismatch
    
                echo'INCORRECT';
            }*/
    }else{ // invalid email

        echo 'INVALID_EMAIL';
    }

}else{ // missing one of the two variables

    echo 'INCOMPLETE';

}

it contains my different tries, please i need urgent review

Link to post
Share on other sites
  • 2 months later...

So sorry for the delayed reply. This got lost on my end. I hope you've figured it out by now but if not, let me know, sharing the current version of the code. With what you posted, it looks like your query has a syntax error (missing a space before "LIMIT"). Apologies again!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...