开发者

Notice: Undefined index: ZZZZZZWTF? [duplicate]

开发者 https://www.devze.com 2023-03-28 23:06 出处:网络
This question already has answers here: Closed 11 years ago. Possible Duplicate: PHP: “Notice: Undefined variable”and “Notice: Undefined index”
This question already has answers here: Closed 11 years ago.

Possible Duplicate:

PHP: “Notice: Undefined variable” and “Notice: Undefined index”

All of a sudden my php code has come up with :

Notice: Undefined index: submit in C:\xampp\htdocs\globalautoparts\register.php on line 36

Notice: Undefined index: fullname in C:\xampp\htdocs\globalautoparts\register.php on line 40

Notice: Undefined index: username in C:\xampp\htdocs\globalautoparts\register.php on line 41

Notice: Undefined index: password in C:\xampp\htdocs\globalautoparts\register.php on line 42

Notice: Undefined index: repeatpassword in C:\xampp\htdocs\globalautoparts\register.php on line 43

Notice: Undefined index: email in C:\xampp\htdocs\globalautoparts\register.php on line 45

on the registration page.

How do i fix it?

This is my 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">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="author" content="Luka Cvrk (solucija.com)" />
    <meta name="keywords" content="conceptnova, concept, framework, web, content, corporate, business" />
    <meta name="description" content="Conceptnova" />   
    <link rel="stylesheet" href="css/main.css" type="text/css" media="screen, projection" />
    <title>Global Autoparts | Home</title>
</head>
<body>
    <div id="wrap">
        <div id="header_top">
        <h1 id="logo"><a href="#" title="Conceptnova"><img src="images/logo.gif" align="left" /></a></h1>
        <h1 id="logo"></h1>
        <ul>
                <li><a href="index.php">home</a></li>
                <li><a href="aboutus.php">about us</a></li>
                <li><a href="services.php">services</a></li>
                <li><a href="portfolio.php">portfolio</a></li>
                <li><a href="contact.php">contact</a></li>
          </ul>
            <div id="slogan">
                <p></p>
            </div>
        </div>
        <div id="header_bottom">
            <h2>Think outside of the box!</h2>
            <p>Registering with Global Auto Parts means you have access to super-fast online orders and total user customization, so you wont have to wait in a line again!</p>
        </div>  
        <div id="maincontent">
            <div id="left">
                <h2><a href="#">Register to become apart of the global community!</a></h2>
                <p><?php
echo "<h1>Registration Page.</h1>";
$submit = $_POST['submit'];


//form data
$fullname = strip_tags($_POST['fullname']);
$username = strtolower(strip_tags($_POST['username']));
$password = strip_tags($_POST['password']);
$repeatpassword = strip_tags($_POST['repeatpassword']);
$date = date("Y-m-d");
$email = $_POST['email'];

if ($submit)
{

     //open database
     $connect = mysql_connect("localhost","root","");
                mysql_select_db("phplogin"); //select database

     $namecheck = mysql_query("SELECT username FROM users WHERE username='$username'");
     $count = mysql_num_rows($namecheck);

     if  ($count!=0)

     {
       die("Username already taken! Go <a href='register.php'>back</a> to try again?");

     }

     // check for existence
     if($fullname&&$username&&$password&&$repeatpassword)
     {


       if ($password==$repeatpassword)
       {

               //check char length of username and fullname
               if (strlen($username)>25||strlen($fullname)>25)
               {
               echo "Length of username or fullname is too long!";


               }

               else{
               //check password length
         开发者_StackOverflow社区      if (strlen($password)>25||strlen($password)<6)
               {
               echo "Password must be between 6 and 25 characters";
               }
               else{
               //register the user!

               // encrypt password
       $password = md5($password);
       $repeatpassword = md5($repeatpassword);


                  //generate random number for activation process
                  $random = rand(23456789,98765432);
                $queryreg = mysql_query("

                INSERT INTO users VALUES ('','$fullname','$username','$password','$email','$date','$random','0')

                ");

                $lastid = mysql_insert_id();


                //send activation email
                ini_set("SMTP",$server);
                $to = $email;
                $subject = "Activate your account!";
                $headers = "From: Global Auto Parts";
                $server = "localhost";





                $body = "

                Hello $fullname,\n\n

                You need to activate your account with the link below:

                http://localhost/globalautoparts/activate.php?=$lastid&code=$random \n\n


                Thanks.

                ";

                //function to send mail
                mail($to, $subject, $body, $headers);

                die("You have been registered! Check your email to activate your account!");
               }


               }
       }
       else
       echo "Your passwords do not match!";

     }
    else
        echo "Please fill in <b>all</a> fields!";




}

?>

<html>
<p>
<form action='register.php' method='POST'>
      <table>
             <tr>
                 <td>
                 Your full name:
                 </td>
                 <td>
                 <input type='text' name='fullname' value='<?php echo $fullname; ?>'>
                 </td>
             </tr>
             <tr>
                 <td>
                 Choose a username:
                 </td>
                 <td>
                 <input type='text' name='username' value='<?php echo $username; ?>'>
                 </td>
             </tr>
             <tr>
                 <td>
                 Choose a password:
                 </td>
                 <td>
                 <input type='password' name='password'>
                 </td>
             </tr>
             <tr>
                 <td>
                 Repeat your password:
                 </td>
                 <td>
                 <input type='password' name='repeatpassword'>
                 </td>
             </tr>
             <tr>
                 <td>
                 Email:
                 </td>
                 <td>
                 <input type='text' name='email'>
                 </td>
             </tr>
      </table>
      <br />
      <p>
      <input type='submit' name='submit' value='Register'>
</form>
</p>
            </div>  
            <div id="right">
                <div id="searchform">
                    <form method="post" action="#">
                        <p><input type="text" name="search" class="search" value="Search Keywords" /><input type="submit" value="GO" class="submit" /></p>
                    </form>
                </div>
                <p>

                <html>

<form action='login.php' method='POST'>

    Username: <input type='text' name='username'><br /><br />
    Password: &nbsp;<input type='password' name='password'><br /><br />
    Click <a href='register.php'>here</a> to register. <input type='Submit' value='Login' id="login">

</form>    <p>




















                </p>
                <br />

            </div>
        </div>
        <div id="footer">
            <p>&copy; Copyright 2011 <a href="#">Global Autoparts</a>&nbsp;&nbsp;Design: Victor Gatto  </p>
        </div>
    </div>
</body>

</html>
<!--REGBOX-->


As the other guys suggested, you could

Change the Error Reporting Level

By running this code at the top of your script: error_reporting(E_ALL ^ E_NOTICE)

Or, it might be a better idea to actually check whether those variables were posted before you use them.

Quick and Dirty fix is to do this:

@$_POST['submit']

The @ sign will suppress any errors and return false in place of the string. Now that practice is generally frowned upon.

If you want a cleaner method, I would do this:

<?php 
$post = array('fullname'=>'','username'=>'','password'=>'','repeatpassword'=>'');

if($_POST) $post = array_merge($post, $_POST);

$fullname = strip_tags($post['fullname']);
$username = strtolower(strip_tags($post['username']));
$password = strip_tags($post['password']);
$repeatpassword = strip_tags($post['repeatpassword']);

Then you'll never have a error about missing indexes, and you can set the default values to whatever you like.

Good luck


Somebody has upped the error reporting on you server / application to include E_NOTICE errors.

You can either disable this by using

error_reporting(E_ALL ^ E_NOTICE);

or improve your application by checking array indexes before using them

$submit = isset($_POST['submit']) ? $_POST['submit'] : null;


Well, those have probably always been generated but your settings for error reporting may have gotten changed to include notices recently. PHP is simply notifying you that you're setting a variable equal to another variable that isn't defined. When $_POST['submit'] hasn't been filled yet, you will get a notice error from PHP when you attempt to use it. You can either check if these variables are set before attempting to use them or just tell PHP not to show you notice errors:

ini_set('error_reporting', E_ALL ^ E_NOTICE);


you should make default value for the form data outside the if ($submit) block and get the form data inside the if block to avoid the error/notice on strict php environtment..

// default form data
$fullname = '';
$username = '';
$password = '';
$repeatpassword = '';
$email = '';
$date = date("Y-m-d");

if ($submit)
{
    //form data
    $fullname = strip_tags($_POST['fullname']);
    $username = strtolower(strip_tags($_POST['username']));
    $password = strip_tags($_POST['password']);
    $repeatpassword = strip_tags($_POST['repeatpassword']);
    $email = $_POST['email'];

    // your code ...
}

0

精彩评论

暂无评论...
验证码 换一张
取 消