2016-07-20 1 views
0
<?php 
    $output = NULL; 
    $ip = $_SERVER['REMOTE_ADDR']; 

    if (isset($POST['submit'])) { 
     $username = $mysqli->real_escape_string($_post['username']); 
     $password = $mysqli->real_escape_string($_post['password']); 
     $rpassword = $mysqli->real_escape_string($_post['rpassword']); 
     $email = $mysqli->real_escape_string($_post['email']); 

     $query = $mysqli->query("SELECT * FROM users WHERE username = '$username'"); 
     if (empty($username) OR empty($password) OR empty($email) or empty($rpassword)) { 
      $output = "Please fill in all fields!"; 
     } elseif ($query->num_rows != 0) { 
      $output = "That username is already taken!"; 
     } elseif ($rpassword != $password) { 
      $output = "Password does not match!"; 
     } 
    } 
?> 

をエコーではありませんデータベースの。また、それがウェブサイトでエコーしないことがわかります。 コメントでDarkBeeが指し示すようvobern.comPHP変数スクリプトで、私はこれを使っ後で

+3

あなたは多くのタイプミスがあります。問題は、 '$ output'が' isset($ POST ['submit']) 'に対してテストするときに決して設定されないということです。開発モードでは[error_reporting](http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php)を必ずオンにしてください。 Do not note 'PHP'でも大文字と小文字が区別されるので、' $ _post'も正しくありません。 – DarkBee

+0

@DarkBee私はちょっと混乱しています。私はポストの問題を修正しましたが、$出力の問題について少し詳しく説明できますか? – astral

+0

@DarkBee彼はスクリプトの一番上に '$ output'を' NULL'で初期化しました。最終的な 'else'節はないので、'条件付きの論理 'の3つの条件がすべて失敗した場合、 '$ output'が' null'なので、エコーは何も生成しません。最初の文@Poiz – Poiz

答えて

3

PHPは大文字と小文字を区別する言語であるがあります。 $_POST$_postの間に違いがあります。あなたはそれを考慮に入れたいかもしれません。今、あなたはそれを以下のようにしてみませんか?

<?php 
    $output   = NULL; 
    $ip    = $_SERVER['REMOTE_ADDR']; 

    if(isset($_POST['submit'])){ 
     // FOR THE VARIABLES BELOW, THERE IS A DIFFERENCE BETWEEN 
     // $_POST AND $_post (AS YOU WROTE).... 
     $username = htmlspecialchars(trim($_POST['username'])); 
     $password = htmlspecialchars(trim($_POST['password'])); 
     $rpassword = htmlspecialchars(trim($_POST['rpassword'])); 
     $email  = htmlspecialchars(trim($_POST['email'])); 

     $query  = $mysqli->query("SELECT * FROM users WHERE username = '$username'"); 

     if (empty($username) || empty($password) || empty($email) || empty($rpassword)){ 
      $output = "Please fill in all fields!"; 
     }elseif($query->num_rows != 0){ 
      $output = "That username is already taken!"; 
     }elseif ($rpassword != $password){ 
      $output = "Password does not match!"; 
     } 
    }else{ 
     // IF THIS POINT IS REACHED, THEN EVERYTHING SHOULD BE OK 
     $output  = "Login Data is Correct"; 
    } 

    var_dump($output); 
?> 
+0

これは、それを修正していない、それはそれは誤り作らさらに。私はただそれをスクラップし、別の方法を試してみるつもりです。 – astral

+1

このソリューションは@astralで動作するはずです –

0

あなたは多くのエラー

if(isset($POST['submit'])) replace this with  if(isset($_POST['submit'])) 
+0

を意味するものを見るために、私のサイトをチェックしてみて下さい。 – astral

0

コード内のすべての$ _postは大文字で$ _POSTである必要があります。 最後にもう1つ追加する

elseif ($rpassword != $password){ 
     $output = "Password does not match!"; 
    }else{ 
    $output = "Valid input!"; 
    } 
関連する問題