2017-04-08 3 views
0

私はここにいるので、私はこれを正しく行うことを願っています。 私のPHPから私の htmlに正しいメッセージを送ることにいくつか問題があります。ユーザー名確認後の一致しない返信メッセージ

ここでは、ユーザ名が有効でない場合、バックメッセージを与えるsould PHPの一部(ある場合には、などの#$%^ &を使用しています)見ることができます

$validUsername = $CurrentUser->ValidateUsername($username); 

//if the input isn't filled send a message back 
    if(!$validUsername) 
{ 
    $messageError = "Please fill in a valid username"; 
    header("location: ../public/index.php?messageError=$messageError"); 
} 

とかどうかを確認する必要があり、別の1ユーザ名は

$uniqueUsername = $CurrentUser->CheckAvailableUsername($validUsername); 

    if (!$uniqueUsername) 
{ 
    $messageError = "Please fill in a unique username"; 
    header("location: ../public/index.php?messageError=$messageError"); 
} 

ユニーク今奇妙なことは、それは私にユニークなユーザー名を記入してください代わりに、有効なユーザー名を記入してください、私をお返ししますユーザ名としてなど使用の#$%^ &場合です理由を見つけることができません。

oh btw私は、これらのメソッドを使ってUserという名前のクラスを作成しました。

 public function ValidateUsername($username) 
    { 
     if (!empty($username)) 
     { 
      if (isset($username)) 
      { 
       if (!preg_match("/^[a-zA-Z ]*$/", $username)) 
       { 
        return false; 
       } 
       return $this->username = $username; 
      } 
      return false; 
     } 
     return false; 
    } 

そしてもう1つ。

 public function CheckAvailableUsername($username) 
    { 
     $sql = "SELECT * FROM `tbl_todolist` 
      WHERE `username` = '$username';"; 

     $result = $this->dataBase->query($sql)->rowCount(); 
     if ($result == 1) 
     { 
      return false; 
     } 
     return $this->username = $username; 
    } 

私は本当にあなたがこれで私を助けることを願っています。

+0

操作の順序は何ですか?何が最初に呼び出されますか? – segFault

+0

注文は表示されています。 – ThatOneGuyThatDontGetIt

答えて

0

header(...);の後には、return;またはexit;を送信する必要があります。そうでない場合は、そのヘッダーを超えて続きます。

追加メモ

あなたは、あなたがその関数に到達する前に値をサニタイズしても、代わりに/ bindクエリに値をエスケープする必要があり、CheckAvailableUsernameにSQLインジェクションに開いています。既にPDOを使用しているようです。

+1

SQLインジェクションと私の問題を解決するためのフィードバックをありがとう。 – ThatOneGuyThatDontGetIt

関連する問題