2011-08-19 13 views
1

可能性の重複:
PHP: “Notice: Undefined variable” and “Notice: Undefined index”Notice:未定義インデックス:ZZZZZZWTF?

突然私のPHPコードはすべてを打ち出している:

お知らせ:未定義のインデックス:Cに提出:\ xamppの\ htdocsに\をglobalautoparts \ register.php on line 36

注意:定義されていないインデックス:fullname:C:\ xampp \ htdocs \ globalautoparts \ register.php on line 40

お知らせ:未定義のインデックス:Cでのユーザ名:\ xamppの\ htdocsに\ globalautoparts \ register.phpライン上の41

お知らせ:未定義のインデックス:Cでのパスワード:\ xamppの\ htdocsに\ globalautoparts \ register.phpにライン42

お知らせ:未定義のインデックス:Cでrepeatpassword:\ xamppの\ htdocsに\ globalautoparts \ register.phpライン上の43

お知らせ:未定義のインデックス:Cでの電子メール:\ xamppの\ htdocsに\ globalautoparts \登録してください。 php on line 45

登録者イオンページ。

どうすれば修正できますか?

これは私のコードです:

<!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 
       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--> 
+0

は、()' 'mysql_real_escape_stringのをよく読んで、もっと重要ないくつかの' @() 'とを追加します。 – mario

答えて

7

他の人が示唆したように、あなたは可能性があり

変更スクリプトの先頭にこのコードを実行することにより、レベル

エラー報告:error_reporting(E_ALL^E_NOTICE)

または、実際には変数は、使用する前に転記されました。

迅速かつ汚い修正はこれを行うことです。

@$_POST['submit'] 

@記号がエラーを抑制し、文字列の代わりにfalseを返します。今では、その練習は一般的には眉をひそめます。

<?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']); 

は、その後、あなたが不足しているインデックスについてのエラーを持っていることは決してないだろう、とあなたが好きなようにデフォルト値を設定することができます:あなたはクリーンな方法をしたい場合は

、私はこれを行うだろう。

幸運strip_tags`が、ここではかなり十分ではありません `として

+1

非常に良い答えです、error_reportingを変更するのは醜いですが、一言で言えば、エラーは理由のためにそこにあります:) –

+0

よろしくお願いします。 –

+0

victor - 問題はありません。ラス - ありがとう、同意した – Jason

5

誰かがE_NOTICEエラーを含めることができ、サーバ/アプリケーション上でエラー報告を持ち上げました。

あなたは

error_reporting(E_ALL^E_NOTICE); 

を使用してこれを無効にするか、それらを

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

ありがとうございます。 –

1

まあを使用する前に、配列のインデックスをチェックすることで、アプリケーションを向上させることができますいずれか、それらはおそらく、常に生成されているが、エラー報告のためのあなたの設定最近通知を含むように変更されている可能性があります。 PHPは、変数を定義されていない別の変数と同じに設定していることを通知するだけです。 $_POST['submit']がまだ入力されていない場合は、PHPを使用しようとすると通知エラーが発生します。場合($提出) をブロック外で使用すると、フォームデータのデフォルト値を確認する必要があり

ini_set('error_reporting', E_ALL^E_NOTICE); 
+0

'ini_set()'、 "init"ではありません – Phil

+0

@Phil:ありがとうございました。 – animuson

+1

これは良い対処法です。生きているサーバーでこれをやってみてください。これらのメッセージはあなたのライブサイトが折り畳まれないように有益であるように設計されています。彼らはあなたに何を修正するかを教えてくれることを伝えます。ここから常にエラーが発生している場合は、エラー表示を修正しないでください。エラーを修正してください!! –

0

:あなたはそれらを使用するか、またはちょうどあなたがエラーに気づく表示しないようにPHPを教えしようとする前に、これらの変数が設定されているかどうかを確認しますか、厳密なPHP環境でのエラー/通知を避けるために、ifブロックの内部でフォームデータを取得します。

// 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

'$ submit'でも定義されていないエラーがスローされます..' isset($ submit) 'を使うべきです。 –

関連する問題