2009-08-14 14 views
-3

1つの登録/ログインスクリプトですべてを作成しています。これは、$ _POSTが設定されていない場合は最初に登録フォームを表示します。そうであるが、必須フィールドが満たされていない場合は、$ _POSTを再設定してページに再度リダイレクトされます。すべてのフィールドが入力された場合、送信ボタン$ _POST ["login"]の名前が設定されている場合、フォームはログインを確認し、ユーザーをショッピングカートにリダイレクトするページであるテキストブロックを設定するか、店に戻ります。送信ボタン$ _POST ["register"]が設定されている場合、ユーザは登録したいと思い、挿入クエリが作成され、送信されます。この問合せが影響を受けた行を戻さない場合、スクリプトはユーザーがすでに登録されているかどうかを確認します。そうであれば、ログインして、通常のログインごとにリダイレクトページを表示します。それ以外の場合、スクリプトが影響を受ける1行を返した場合、挿入が成功したと見なします(クエリが失敗した場合はスクリプトが中断します)。オールインワンのPHP/MySQL登録/ログインフォームが動作しません

ログインがうまくいけばログインできますが、必要なフィールドが見つからない場合はリダイレクトが機能しますが、それだけです。私は問題を見ることができませんし、エラーもありません - 他の状況が発生した場合は空白の画面が表示されます。それはあなたが直接あなたのクエリにユーザーから文字列を入れていけない...私は怖い、

<?php 
if(!$_POST) { 
    //hasn't seen the registration form 
    //display registration form 
     $display_block = " 
     <form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\"> 
     <p>Please fill in the registration field (required fields marked with <span class=\"req\"><</span>)<br /> 
     First name: <input type=\"text\" name=\"f_name\" size=\"25\" maxlength=\"50\" /><span class=\"req\"><</span><br /> 
     Last name: <input type=\"text\" name=\"l_name\" size=\"25\" maxlength=\"50\" /><span class=\"req\"><</span><br /> 
     Address: <input type=\"text\" name=\"address\" size=\"50\" maxlength=\"150\" /><br /> 
     Town: <input type=\"text\" name=\"town\" size=\"50\" maxlength=\"150\" /><br /> 
     City: <input type=\"text\" name=\"city\" size=\"50\" maxlength=\"150\" /><br /> 
     Post Code: <input type=\"text\" name=\"postcode\" size=\"10\" maxlength=\"10\" /><br /> 
     Username: <input type=\"text\" name=\"username\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br /> 
     Confirm username: <input type=\"text\" name=\"usernameConfirm\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br /> 
     Password: <input type=\"password\" name=\"password\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br /> 
     Confirm password: <input type=\"password\" name=\"passwordConfirm\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br /> 
     <br /> 
     <input type=\"submit\" name=\"register\" value=\"Register\" /><br /><br /> 
     Already a member? <input type=\"submit\" name=\"login\" value=\"Login\" /> 
     </p>"; 

} else if ((!isset($_POST["username"])) || (!isset($_POST["usernameConfirm"])) || (!isset($_POST["password"])) || (!isset($_POST["passwordConfirm"]))) { 
    //hasn't filled out all the fields 
    header("Location: ".$_SERVER["PHP_SELF"].""); 
    exit; 
} else if($_POST["login"]) { 

    //user is logging in, so connect to server and select database, check they are registered and their details are right 
      $mysqli = mysqli_connect(hostname,username,pass,dbname); 

    //create and issue the query 
    $sql = "SELECT f_name, l_name FROM auth_users WHERE username='".$_POST["username"]."' AND password=PASSWORD('".$_POST["password"]."')"; 
    $sql_res =mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli)); 

    //get the number of rows in the result set; should be 1 if a match 
    if(mysqli_num_rows($sql_res) == 1) { 
     //if authorized, get the values of f_name, l_name 
     while($info = mysqli_fetch_array($sql_res)) { 
     $f_name = stripslashes($info["f_name"]); 
     $l_name = stripslashes($info["l_name"]); 
     } 
     //set authorization cookie 
     setcookie("auth", "1", 0, "/", "sinaesthesia.co.uk", 0); 

     //create display string 
     $display_block = "<p>".$f_name." ".$l_name." is authorized.</p> 
     <p>You are now logged in.</p> 
     <a href=\"basket.php5\">View Basket</a> | <a href=\"home.php5\">Continue Shopping</a>"; 

    } else if($_POST["register"]) { 

     //connect to db and issue registration query 
      $mysqli = mysqli_connect(hostname,username,pass,dbname); 

      $register_sql = "INSERT INTO aromaMaster (username, password, date_registered) VALUES ('".$_POST["username"]."',PASSWORD('".$_POST["password"]."'),now())"; 
      $register_res = mysqli_query($mysqli, $register_sql) or die(mysqli_error($mysqli)); 

      if (mysqli_num_rows($register_res) != 1) { 
      //registration failed - perhaps duplicate account 

      $check_sql = "SELECT username, password FROM aromaMaster WHERE username='".$_POST["username"]."' AND password=PASSWORD('".$_POST["password"]."')"; 
      $check_res = mysqli_query($mysqli, $check_sql) or die(mysqli_error($mysqli)); 

      if(mysqli_num_rows($check_res) == 1) { 
       //already a member 

       //set cookie 
        //set authorization cookie 
     setcookie("auth", "1", 0, "/", "sinaesthesia.co.uk", 0); 

       $display_block = " 
       <p>You are already registered.</p> 
     <a href=\"basket.php5\">View Basket</a> | <a href=\"home.php5\">Continue Shopping</a>"; 
      } 
      } else { 
      //success 
      $display_block = " 
      <p>You are registered!</p> 
     <a href=\"basket.php5\">View Basket</a> | <a href=\"home.php5\">Continue Shopping</a>"; 
      } 


    } 
    mysqli_close($mysqli); 
    } 
?> 
<html> 
<head> 
<title>Login/Register</title> 
</head> 
<body> 
<?php echo "$display_block"; ?> 
</body> 
</html> 
+2

あなたの質問には答えられませんが、コードから可能な限りHTMLレイアウトを分離しようとすると、コードは恩恵を受けます。 – koen

+2

これは多くの人がPHPを恐ろしい言語として見ている理由です。 – Duroth

+0

私は以来これを完全に廃止しており、それは完全に別のスクリプトです! – user97410

答えて

1
+0

ハイ、私は知っていますが、これは開発段階にあります - 私は悪意のあるユーザーを考える前に作業機械を望みます。 – user97410

+3

"セキュリティは、正当性と同様に、アドオン機能ではありません。 - アンドリュー・タネンバウム。 –

関連する問題