2016-03-26 12 views
0

どこが問題なのかわかりません。どうすれば助けてくれますか?私はこれをデバッグすることはできません。 私は問題であり、それはここでif(isset($_POST['SUBMIT'])) {

で停止すると、全体のphpで場所を確認するためにどこでもエコーを入れてみました:

<?php 
$conn = mysqli_connect($IP, "pavip", "", "c9") or die("Kapcsolatot nem sikerult letrehozni!"); 

$error = "Here's the problem: "; 
$err = false; 
$name = $_POST['name']; 
$password = $_POST['pass']; 
$email = $_POST['email']; 

if(isset($_POST['SUBMIT'])) { 
    echo $name; 
    if(isset($_POST['email'])){ 
     if($_POST['name'] != "") { 
      if($_POST['pass'] == $_POST['pass2'] AND strlen($_POST['pass']) < 6) { 
       if($_POST['email'] != "") { 

        $name = $_POST['name']; 
        $password = $_POST['pass']; 
        $email = $_POST['email']; 

        $sql = "INSERT INTO user (username, password, email) 
        VALUES ('$name, '$password','$email)"; 
       }else { 
        $error .= "No email"; 
        $err = true; 
       } 
      }else { 
       $error .= "Password too short or wrong ujrairas "; 
       $err = true; 
      } 
     }else { 
      $error .= "No name "; 
      $err = true; 
     } 
    }else { 

    } 
} 
if($err == true){ echo '<script type="text/javascript">alert("' . $error . '"); </script>';} 
?> 

そして、ここでは私が作った形式は次のとおりです。

<form action="index.php" method="Post" class="register"> 
       <input type="text" name="name" placeholder="Name(Can be nick!)"> 
       <input type="pasword" name="pass" placeholder="Password"> 
       <input type="password" name="pass2" placeholder="Password again"> 
       <input type="text" name="email" placeholder="Email address"> 
       <input type="submit" value="Register"> 
      </form> 
+1

'名前タイプを提出で行方不明attribute'!送信ボタンに 'name =" SUBMIT "を追加してください – Saty

+1

はい、それが問題でした。ありがとうございました! @djot:私はハンガリー語で書いたので、私は英語で何か分かっていません:) – pavip

+0

あなたのコードログインにも問題があります。パスワードが6文字未満の場合、フォームを処理します。プレーンテキストのパスワードを使用しているようです。また、SQLインジェクションにもオープンしています。 – chris85

答えて

0

まず、フォームにname属性がないため、$_POST['SUBMIT']が見つかりません。

あなたはそれを指定する必要があります:

<input name="SUBMIT" type="submit" value="Register"/> 

第二に、あなたは'$emailで単一引用符を逃します:

第三
$sql = "INSERT INTO user (username, password, email) 
       VALUES ('$name, '$password','$email')"; 

を、あなたが防ぐ必要がありますMySQLインジェクションを使用してmysqli_real_escape_string

$name = mysqli_real_escape_string($conn, $_POST['name']); 
$password = mysqli_real_escape_string($conn, $_POST['pass']); 
$email = mysqli_real_escape_string($conn, $_POST['email']); 

第四に、あなたは、例えば、空のフィールドをチェックするempty()の使用を検討することができます。:

if(!empty($_POST['name'])) { 
+0

ありがとう! @luweiqi – pavip

+0

@pavipよろしくお願いします!あなたの問題を解決してうれしいです:) – Panda

+0

しかし、私はセキュリティについてもっと知る必要があります。なぜ私はmysql接続などが必要か分からない。もう一度ありがとう! :) @luweiqi – pavip

-1

サブミットボタン「SUBMIT」 を追加する必要がある場合は、このように使用する必要があります。

<input type="submit" name="SUBMIT"> 

私の知る限りで

0

「=あなたが入力された名前を持っていない見てみてください直接ルートは($ _ POST)場合にも使用することができます ノートに異なるコントローラ機能に提出する方が良いだろう「SUBMIT」はHTMLのどこにでも書かれています。

があなたを変更し

<input type="submit" value="Register" name="SUBMIT" /> 

<input type="submit" value="Register"> 

・ホープこのことができます!