Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New Coder
    Join Date
    Sep 2008
    Location
    Mexabet.biz
    Posts
    89
    Thanks
    12
    Thanked 0 Times in 0 Posts

    Help me to fix registration, image upload, resize and store path in MySQL script

    I'm trying to create a site registration form. I added a borrowed code snippet of image upload that resizes, saves and store the image path in MySQL database. Each time I attempt to register, I get this error: "Username has been taken." And I'm not sure the file upload part works, since I haven't been able to register. Your help would be much appreciated.

    Here goes the register.php:
    PHP Code:
    <?php

        
    // include configuration file
        
    require("../includes/config.php");
        
        
    // if form was submitted
        
    if ($_SERVER["REQUEST_METHOD"] == "POST")
        {
            
    // validate submission
            
    if (empty($_POST["username"]))
            {
                
    apologize("Provide a username.");
            }
            else if (empty(
    $_POST["password"]))
            {
                
    apologize("Enter a password.");
            }
            else if (empty(
    $_POST["confirmation"]))
            {
                
    apologize("Confirm your password.");
            }
            else if (
    $_POST["password"] != $_POST["confirmation"])
            {
                
    apologize("Password and confirmation do not match.");
            }
            
            if (!empty(
    $_POST["username"]))
            {
                
    $result query("INSERT INTO users(username, hash, cash) VALUES (?, ?, 10000.00)",
                
    $_POST["username"],
                
    crypt($_POST["password"]));
                
                
    // if username is in database
                
    if ($result === false)
                {
                    
    apologize("Username has been taken.");
                }
                
                
    // find out user's ID
                
    $rows query("SELECT LAST_INSERT_ID() AS id");
                
    $id $rows[0]["id"];
                
                
    // remember user is logged in by storing user's ID in a session
                
    $_SESSION["id"] = $row["id"];
                
                
    // redirect to portfolio
                
    redirect("/");
            }
        }
        else
        {
            
    // else render form
            
    render("register_form.php", ["title" => "Register"]);
        }

    ?>
    And here is the included upload_class.php:
    PHP Code:
    class file_upload {



        var 
    $the_file;

        var 
    $the_temp_file;

        var 
    $upload_dir;

        var 
    $replace;

        var 
    $do_filename_check;

        var 
    $max_length_filename 100;

        var 
    $extensions;

        var 
    $ext_string;

        var 
    $language;

        var 
    $http_error;

        var 
    $rename_file// if this var is true the file copy get a new name

        
    var $file_copy// the new name

        
    var $message = array();

        var 
    $create_directory true;

        

        function 
    file_upload() {

            
    $this->language "en"// choice of en, nl, es

            
    $this->rename_file false;

            
    $this->ext_string "";

        }

        function 
    show_error_string() {

            
    $msg_string "";

            foreach (
    $this->message as $value) {

                
    $msg_string .= $value."<br>\n";

            }

            return 
    $msg_string;

        }

        function 
    set_file_name($new_name "") { // this "conversion" is used for unique/new filenames 

            
    if ($this->rename_file) {

                if (
    $this->the_file == "") return;

                
    $name = ($new_name == "") ? strtotime("now") : $new_name;

                
    $name $name.$this->get_extension($this->the_file);

            } else {

                
    $name $this->the_file;

            }

            return 
    $name;

        }

        function 
    upload($to_name "") {

            
    $new_name $this->set_file_name($to_name);

            if (
    $this->check_file_name($new_name)) {

                if (
    $this->validateExtension()) {

                    if (
    is_uploaded_file($this->the_temp_file)) {

                        
    $this->file_copy $new_name;

                        if (
    $this->move_upload($this->the_temp_file$this->file_copy)) {

                            
    $this->message[] = $this->error_text($this->http_error);

                            if (
    $this->rename_file$this->message[] = $this->error_text(16);

                            return 
    true;

                        }

                    } else {

                        
    $this->message[] = $this->error_text($this->http_error);

                        return 
    false;

                    }

                } else {

                    
    $this->show_extensions();

                    
    $this->message[] = $this->error_text(11);

                    return 
    false;

                }

            } else {

                return 
    false;

            }

        }

        function 
    check_file_name($the_name) {

            if (
    $the_name != "") {

                if (
    strlen($the_name) > $this->max_length_filename) {

                    
    $this->message[] = $this->error_text(13);

                    return 
    false;

                } else {

                    if (
    $this->do_filename_check == "y") {

                        if (
    preg_match("/^[a-z0-9_]*\.(.){1,5}$/i"$the_name)) {

                            return 
    true;

                        } else {

                            
    $this->message[] = $this->error_text(12);

                            return 
    false;

                        }

                    } else {

                        return 
    true;

                    }

                }

            } else {

                
    $this->message[] = $this->error_text(10);

                return 
    false;

            }

        }

        function 
    get_extension($from_file) {

            
    $ext strtolower(strrchr($from_file,"."));

            return 
    $ext;

        }

        function 
    validateExtension() {

            
    $extension $this->get_extension($this->the_file);

            
    $ext_array $this->extensions;

            if (
    in_array($extension$ext_array)) { 

                
    // check mime type hier too against allowed/restricted mime types (boolean check mimetype)

                
    return true;

            } else {

                return 
    false;

            }

        }

        
    // this method is only used for detailed error reporting

        
    function show_extensions() {

            
    $this->ext_string implode(" "$this->extensions);

        }

        function 
    move_upload($tmp_file$new_file) {

            
    umask(0);

            if (
    $this->existing_file($new_file)) {

                
    $newfile $this->upload_dir.$new_file;

                if (
    $this->check_dir($this->upload_dir)) {

                    if (
    move_uploaded_file($tmp_file$newfile)) {

                        if (
    $this->replace == "y") {

                            
    //system("chmod 0777 $newfile"); // maybe you need to use the system command in some cases...

                            
    chmod($newfile 0777);

                        } else {

                            
    // system("chmod 0755 $newfile");

                            
    chmod($newfile 0755);

                        }

                        return 
    true;

                    } else {

                        return 
    false;

                    }

                } else {

                    
    $this->message[] = $this->error_text(14);

                    return 
    false;

                }

            } else {

                
    $this->message[] = $this->error_text(15);

                return 
    false;

            }

        }

        function 
    check_dir($directory) {

            if (!
    is_dir($directory)) {

                if (
    $this->create_directory) {

                    
    umask(0);

                    
    mkdir($directory0777);

                    return 
    true;

                } else {

                    return 
    false;

                }

            } else {

                return 
    true;

            }

        }

        function 
    existing_file($file_name) {

            if (
    $this->replace == "y") {

                return 
    true;

            } else {

                if (
    file_exists($this->upload_dir.$file_name)) {

                    return 
    false;

                } else {

                    return 
    true;

                }

            }

        }

        function 
    get_uploaded_file_info($name) {

            
    $str "File name: ".basename($name)."\n";

            
    $str .= "File size: ".filesize($name)." bytes\n";

            if (
    function_exists("mime_content_type")) {

                
    $str .= "Mime type: ".mime_content_type($name)."\n";

            }

            if (
    $img_dim getimagesize($name)) {

                
    $str .= "Image dimensions: x = ".$img_dim[0]."px, y = ".$img_dim[1]."px\n";

            }

            return 
    basename($name);

        }

        
    // this method was first located inside the foto_upload extension

        
    function del_temp_file($file) {

            
    $delete = @unlink($file); 

            
    clearstatcache();

            if (@
    file_exists($file)) { 

                
    $filesys eregi_replace("/","\\",$file); 

                
    $delete = @system("del $filesys");

                
    clearstatcache();

                if (@
    file_exists($file)) { 

                    
    $delete = @chmod ($file0775); 

                    
    $delete = @unlink($file); 

                    
    $delete = @system("del $filesys");

                }

            }

        }

        
    // some error (HTTP)reporting, change the messages or remove options if you like.

        
    function error_text($err_num) {

            switch (
    $this->language) {

                case 
    "nl":

                
    $error[0] = "Foto succesvol kopieert.";

                
    $error[1] = "Het bestand is te groot, controlleer de max. toegelaten bestandsgrootte.";

                
    $error[2] = "Het bestand is te groot, controlleer de max. toegelaten bestandsgrootte.";

                
    $error[3] = "Fout bij het uploaden, probeer het nog een keer.";

                
    $error[4] = "Fout bij het uploaden, probeer het nog een keer.";

                
    $error[10] = "Selecteer een bestand.";

                
    $error[11] = "Het zijn alleen bestanden van dit type toegestaan: <b>".$this->ext_string."</b>";

                
    $error[12] = "Sorry, de bestandsnaam bevat tekens die niet zijn toegestaan. Gebruik alleen nummer, letters en het underscore teken. <br>Een geldige naam eindigt met een punt en de extensie.";

                
    $error[13] = "De bestandsnaam is te lang, het maximum is: ".$this->max_length_filename." teken.";

                
    $error[14] = "Sorry, het opgegeven directory bestaat niet!";

                
    $error[15] = "Uploading <b>".$this->the_file."...Fout!</b> Sorry, er is al een bestand met deze naam aanwezig.";

                
    $error[16] = "Het gekopieerde bestand is hernoemd naar <b>".$this->file_copy."</b>.";

                break;

                case 
    "de":

                
    $error[0] = "Die Datei: <b>".$this->the_file."</b> wurde hochgeladen!"

                
    $error[1] = "Die hochzuladende Datei ist gr&ouml;&szlig;er als der Wert in der Server-Konfiguration!"

                
    $error[2] = "Die hochzuladende Datei ist gr&ouml;&szlig;er als der Wert in der Klassen-Konfiguration!"

                
    $error[3] = "Die hochzuladende Datei wurde nur teilweise &uuml;bertragen"

                
    $error[4] = "Es wurde keine Datei hochgeladen"

                
    $error[10] = "W&auml;hlen Sie eine Datei aus!."

                
    $error[11] = "Es sind nur Dateien mit folgenden Endungen erlaubt: <b>".$this->ext_string."</b>";

                
    $error[12] = "Der Dateiname enth&auml;lt ung&uuml;ltige Zeichen. Benutzen Sie nur alphanumerische Zeichen f&uuml;r den Dateinamen mit Unterstrich. <br>Ein g&uuml;ltiger Dateiname endet mit einem Punkt, gefolgt von der Endung."

                
    $error[13] = "Der Dateiname &uuml;berschreitet die maximale Anzahl von ".$this->max_length_filename." Zeichen."

                
    $error[14] = "Das Upload-Verzeichnis existiert nicht!"

                
    $error[15] = "Upload <b>".$this->the_file."...Fehler!</b> Eine Datei mit gleichem Dateinamen existiert bereits.";

                
    $error[16] = "Die hochgeladene Datei ist umbenannt in <b>".$this->file_copy."</b>.";

                break;

                
    //

                // place here the translations (if you need) from the directory "add_translations"

                //

                
    default:

                
    // start http errors

                
    $error[0] = "File: <b>".$this->the_file."</b> successfully uploaded!";

                
    $error[1] = "The uploaded file exceeds the max. upload filesize directive in the server configuration.";

                
    $error[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form.";

                
    $error[3] = "The uploaded file was only partially uploaded";

                
    $error[4] = "No file was uploaded";

                
    // end  http errors

                
    $error[10] = "Please select a file for upload.";

                
    $error[11] = "Only files with the following extensions are allowed: <b>".$this->ext_string."</b>";

                
    $error[12] = "Sorry, the filename contains invalid characters. Use only alphanumerical chars and separate parts of the name (if needed) with an underscore. <br>A valid filename ends with one dot followed by the extension.";

                
    $error[13] = "The filename exceeds the maximum length of ".$this->max_length_filename." characters.";

                
    $error[14] = "Sorry, the upload directory doesn't exist!";

                
    $error[15] = "Uploading <b>".$this->the_file."...Error!</b> Sorry, a file with this name already exitst.";

                
    $error[16] = "The uploaded file is renamed to <b>".$this->file_copy."</b>.";

                

            }

            return 
    $error[$err_num];

        }

    }

    ?> 

  • #2
    Senior Coder
    Join Date
    Jan 2011
    Location
    Missouri
    Posts
    4,710
    Thanks
    25
    Thanked 660 Times in 659 Posts
    There maybe nothing wrong here. You probably are already registered. When testing a new database registration program I use 'fake1', 'fake2' as names and the password is 'pass' if length restrictions aren't called for and 'password' if they are. You can clear them out of the DB using phpMyAdmin afterwards.
    Evolution - The non-random survival of random variants.

    "If you leave hydrogen alone, for long enough, it begins to think about itself."

  • #3
    New Coder
    Join Date
    Sep 2008
    Location
    Mexabet.biz
    Posts
    89
    Thanks
    12
    Thanked 0 Times in 0 Posts
    @sunfighter,
    Thanks for your contribution. But the script doesn't work after I made some modifications to include more form fields. Any idea why this doesn't work?
    PHP Code:
    <?php



        
    // include configuration file

        
    require("../includes/config.php");

        

        
    //Class import for image uploading

        
    include("../includes/upload_class.php");

        

        
    // if form was submitted

        
    if ($_SERVER["REQUEST_METHOD"] == "POST")

        {

            
    // validate submission

            
    if (empty($_POST["firstname"]))

            {

                
    apologize("Provide your first name.");

            }

            if (empty(
    $_POST["lastname"]))

            {

                
    apologize("Provide your last name.");

            }

            if (empty(
    $_POST["username"]))

            {

                
    apologize("Provide a username.");

            }

            if (empty(
    $_POST["usersex"]))

            {

                
    apologize("Select your sex.");

            }

            else if (empty(
    $_POST["password"]))

            {

                
    apologize("Enter a password.");

            }

            else if (empty(
    $_POST["confirmation"]))

            {

                
    apologize("Confirm your password.");

            }

            else if (
    $_POST["password"] != $_POST["confirmation"])

            {

                
    apologize("Password and confirmation do not match.");

            }

            if (empty(
    $_POST["email"]))

            {

                
    apologize("Provide your email address");

            }

            

            if (!empty(
    $_POST["username"]))

            {

                
    $result query("INSERT INTO users(firstname, lastname, username, usersex, hash, email, userimage) VALUES (?, ?, ?, ?, ?, ?, ?)",

                
    $_POST["firstname"],

                
    $_POST["lastname"],

                
    $_POST["username"],

                
    $_POST["usersex"],

                
    crypt($_POST["password"]),

                
    $_POST["email"]);

                

                
    // if username is in database

                
    if ($result === false)

                {

                    
    apologize("Username has been taken");

                }

                if (
    $_POST["email"] === false)

                {

                    
    apologize("The email has already been taken.");

                }

            

            
    //image uploading part

            
    if($_FILES['fileimage']['name'])

            {



                
    $max_size 10000*10000// the maximum size for uploading

            

                
    $my_upload = new file_upload;

        

                
    $my_upload->upload_dir "images/user/"// "files" is the folder for the uploaded files (you have to create this folder)

                
    $my_upload->extensions = array(".png"".jpeg"".gif"".jpg"".jpeg"); // specify the allowed extensions here



                // $my_upload->extensions = "de"; // use this to switch the messages into an other language (translate first!!!)

                
    $my_upload->max_length_filename 1000// change this value to fit your field length in your database (standard 100)

                
    $my_upload->rename_file true;

                

        

                
    $my_upload->the_temp_file $_FILES['fileimage']['tmp_name'];

                
    $my_upload->the_file $_FILES['fileimage']['name'];

                
    $my_upload->http_error $_FILES['fileimage']['error'];

                
    //$my_upload->replace = (isset($_POST['replace'])) ? $_POST['replace'] : "n"; // because only a checked checkboxes is true

                //$my_upload->do_filename_check = (isset($_POST['check'])) ? $_POST['check'] : "n"; // use this boolean to check for a valid filename

                //$new_name = (isset($_POST['name'])) ? $_POST['name'] : "";

                
    if ($my_upload->upload())

                { 
    // new name is an additional filename information, use this to rename the uploaded file

                    
    $full_path $my_upload->upload_dir.$my_upload->file_copy;

                    
    $imagename $my_upload->get_uploaded_file_info($full_path);

                    
    // ... or do something like insert the filename to the database

                
    }



            }

            else

            {

                 
    $imagename "";

            }



          
    //End of the image uploading section

                

                // find out user's ID

                
    $rows query("SELECT LAST_INSERT_ID() AS id");

                
    $id $rows[0]["id"];

                

                
    // remember user is logged in by storing user's ID in a session

                
    $_SESSION["id"] = $row["id"];

                

                
    // redirect to portfolio

                
    redirect("/");

            }

        }

        else

        {

            
    // else render form

            
    render("register_form.php", ["title" => "Register"]);

        }



    ?>
    Here is the register_form.php:
    Code:
    <form enctype="multipart/form-data" action="register.php" method="post">
    
        <fieldset>
    
            <div class="form-group">
    
                <input autofocus class="form-control" name="firstname" placeholder="First Name" type="text"/>
    
            </div>
    
            <div class="form-group">
    
                <input autofocus class="form-control" name="lastname" placeholder="Last Name" type="text"/>
    
            </div>
    
            <div class="form-group">
    
                <input autofocus class="form-control" name="username" placeholder="Username" type="text"/>
    
            </div>
    
            <div class="form-group">
    
                <select autofocus class="form-control" name="usersex" value="usersex">
    
                    <option value="Male" selected="selected">Male</option>
    
                    <option value="Female">Female</option>
    
                </select>
    
            </div>
    
            <div class="form-group">
    
                <input class="form-control" name="password" placeholder="Password" type="password"/>
    
            </div>
    
            <div class="form-group">
    
                <input class="form-control" name="confirmation" placeholder="Confirm Password" type="password"/>
    
            </div>
    
            <div class="form-group">
    
                <input autofocus class="form-control" name="email" placeholder="Email" type="text"/>
    
            </div>
    
            <div class="form-group">
    
                <input autofocus class="form-control" name="userimage" id="fileimage" placeholder="Your Photo" type="file"/>
    
            </div>
    
            <div class="form-group">
    
                <button type="submit" class="btn btn-default">Register</button>
    
            </div>
    
        </fieldset>
    
    </form>
    
    <div>
    
        or <a href="login.php">log in</a>
    
    </div>
    
    <br/>


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •