Asked  7 Months ago    Answers:  5   Viewed   38 times

I am new to PHP and am following a tutorial on YouTube. I have everything working in this file, except for the file uploading, any help would be appreciated. Here is the error i am getting:

*NOTE: I have looked for this many times, but could not find undefined index error relevant to $_FILES...

Notice: Undefined index: avatar in /Applications/xxx on line 95

Notice: Undefined index: avatar in /Applications/xxx on line 96

Notice: Undefined index: avatar in /Applications/xxx on line 97

Notice: Undefined index: avatar in /Applications/xxx on line 98

Sorry for this if it is a simple fix...

            <?php $title = "Register";?>
        <?php require ("styles/top.php") ; ?>           
        <?php //de-bugging remove this after script works as desired>
         ini_set("display_errors", 1); 
        //end de-bugging//
        $form = "<form action='register.php' method='post'>
        <table cellspacing='5px'>
                <td><font color='red'>*</font> are required fields.</td>
                <td>First Name:</td>
                <td><input type='text' name='firstname' class='textbox'><font color='red'> *</font></td>
                <td>Last Name:</td>
                <td><input type='text' name='lastname' class='textbox'><font color='red'> *</font></td>
                <td><input type='text' name='username' class='textbox'><font color='red'> *</font></td>
                <td><input type='text' name='email' class='textbox'><font color='red'> *</font></td>
                <td><input type='password' name='password' class='textbox'><font color='red'> *</font></td>
                <td>Confirm Password:</td>
                <td><input type='password' name='repassword' class='textbox'><font color='red'> *</font></td>
                <td>Profile Picture:</td>
                <td><input name='avatar' type='file' ></td>
                <td>Profile Message:</td>
                <td><textarea name='bio' cols='35' rows='5' class='textbox'></textarea></td>
                <td><input type='submit' name='submitbtn' value='Submit' class='button'></td>
        if ($_POST['submitbtn']) {
            $firstname = strip_tags($_POST['firstname']);
            $lastname = strip_tags($_POST['lastname']);
            $username = strip_tags($_POST['username']);
            $email = strip_tags($_POST['email']);
            $class = ($_POST['class']);
            $password = strip_tags($_POST['password']);
            $repassword = strip_tags($_POST['repassword']);
            $bio = strip_tags($_POST['bio']);
            //AVATAR UPLOAD
            $name = $_FILES['avatar'] ['name'];
            $type = $_FILES['avatar'] ['type'];
            $size = $_FILES['avatar'] ['size'];
            $tmpname = $_FILES['avatar'] ['tmpname'];
            $ext = substr($name, strrpos($name, '.'));

            if ($firstname && $lastname && $username && $email && $password && $repassword) {
                if ($password == $repassword) {
                    if (strstr($email, "@") && strstr($email, ".") && strlen($email) >= 6) {
                        $query = mysql_query("SELECT * FROM users WHERE username ='$username'");
                        $numrows = mysql_num_rows($query);
                        if ($numrows == 0) {
                            $query = mysql_query("SELECT * FROM users WHERE email ='$email'");
                            $numrows = mysql_num_rows($query);
                            if ($numrows == 0) {
                                $pass = (md5(md5($password)));
                                $date = date("F j, Y");

                                        move_uploaded_file($tmpname, "avatars/$username.$ext");
                                        $avatar = "$username.$ext";
                                            $avatar = "default_avatar.png";
                                    $code = substr(md5(rand(111111111111, 99999999999999999)), 2, 25);  
                                mysql_query("INSERT INTO users VALUES ('', '$firstname', '$lastname', '$username', '$email', '$pass', '$avatar', '$bio', '', '', '$code', '', '$date')"); 
                                    $webmaster = "xxxx";
                                    $subject = "xxxx";
                                    $headers = "From:xxx<$webmaster>";
                                    $message = "xxx";
                                    mail($email, $subject, $message, $headers);
                                    echo "xxx";
                                echo "That email is already taken. $form";
                            echo "That username is already taken. $form";
                        echo "You did not enter a valid email. $form";
                    echo "Your passwords did not match. $form";
                echo "You did not fill in all of the required fields. $form";
                echo "$form";
            <?php require ("styles/bottom.php") ; ?>



first: try to strict programming

error_reporting(E_ALL | E_STRICT);

also you must use isset for check is index for array available or not

if (isset($_POST['submitbtn']) && isset($_FILES['avatar'])) {
     // ...

also check php configuraion

file_uploads    "1"
upload_max_filesize     "2M"
post_max_size   "8M"
max_file_uploads    20

post max size must be larger than upload max file size.

also as guys said check form enctype

Wednesday, March 31, 2021
answered 7 Months ago

Look at your php.ini file for these 2 parameters, WAMPServer comes configured with

upload_max_filesize = 2M
post_max_size = 8M

Increase the upload_max_filesize to a little bigger that the largest file you want to allow to be unloaded. Or a lot larger if you intend to upload more than one file at a time.

Then increase post_max_size to a number LARGER that you set upload_max_filesize to so for example

upload_max_filesize = 80M
post_max_size = 85M

post_max_size must be larger that upload_max_filesize as the file is transported in the POST buffer as well as all other fields that may exist on your form

NOTE use the wampmanager icon to get to edit php.ini and that will ensure you edit the correct php.ini there are 2.

wampmanager -> php -> php.ini

Also remember to restart Apache once you have edited and saved php.ini

wampmanager -> Apache -> Service administration 'wampapache' -> Restart Service
Friday, May 28, 2021
answered 5 Months ago

Initialize the value before you use it:

if (!isset($assignedQuantityPerUser[$row["sellerid"]])) {
  $assignedQuantityPerUser[$row["sellerid"]] = 0;
$assignedQuantityPerUser[$row["sellerid"]] += $totalUnitsOrdered;
Saturday, May 29, 2021
answered 5 Months ago

Some providers does not allow you change certain values in running time. Instead of this, try to either change it in the real php.ini file or use an .htaccess (For Apache web servers) where you can add your configuration. You can find more information in the article about this subject: How to change configuration settings.

Based on your story, example .htaccess

<IfModule mod_php5.c>
php_value upload_max_filesize 100000000
php_value post_max_size 110000000
php_value memory_limit 120000000
php_value max_input_time 20
Saturday, May 29, 2021
answered 5 Months ago

The problem was due to having uppercase characters in the table. I switched to all lower case characters in both the table and field names and the problem disappeared.

Tuesday, August 10, 2021
Anders Andersen
answered 3 Months ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :