2017-05-27 9 views
0

私はPHPで初心者です。 マイCODEPHPエラーでinnerHTMLを変更する

<?php 
    session_start(); 
    $username = "ADMIN"; 
    $host = "localhost"; 
    $password = "chmuhammadsohaib123"; 
    $database = "USER"; 
    $con = mysqli_connect($host, $username, $password, $database); 
    $USERNAME = $_POST["lusername"]; 
    $PASSWORD = $_POST["lpassword"]; 
    if (isset($_POST["login"])) { 
     if (isset($_POST["loggedin"])) { 
       setcookie("RAUSERNAME", $USERNAME); 
       setcookie("RAPASSWORD", $PASSWORD); 
      } 
     $_SESSION["SRAUSERNAME"] = $USERNAME; 
     $_SESSION["SRAPASSWORD"] = $PASSWORD; 
    } 
    if (isset($_POST["login"])) { 
     $data = mysqli_query($con, "SELECT * FROM `INFO` WHERE `USERNAME` = '$USERNAME'"); 
     if (mysqli_num_rows($data)>0) { 
      echo "<script type='text/javascript'>window.location.replace('../');</script>"; 
     } 
     else { 
      print("<script type='text/javascript'>document.getElementsByClassName('errors').innerHTML = '<h1 class='redback'>SORRY, BUT THIS ACCOUNT DOESN'T EXISTS</h1>';</script>"); 
     } 
    } 
?> 

MY HTMLページが

<body> 
    <div class="errors"></div> 
     <fieldset class="replacement"> 
      <legend>LOGIN</legend> 
      <h1>LOGIN WITH YOUR INFORMATION</h1><br><br> 
      <form method="POST" action="<?php $_SERVER["php_self"]; ?>"> 
      <input type="text" name="lusername" placeholder="YOUR USERNAME"> 
<input type="password" name="lpassword" placeholder="YOUR PASSWORD" class="password"> 
<br> 
<br> 
<label>KEEP ME LOGGED IN: </label> 
<input type="checkbox" name="loggedin" checked> 
<br><br> 
<input type="submit" name="login" value="LOGIN"></form> 
     </fieldset> 
    </div> 
</body> 
</html> 

前述したように、私はエラーのinnerHTMLプロパティを変更しています、それは変化しません。それはと言います。がコンソールにないか、時にはそれがのエラーです。nullです。どうすれば修正できますか?

+0

? – chris85

+1

あなたはSQLインジェクションにオープンしていて、ログインロジックに欠陥がありますので、パスワード(ハッシュする必要があります)をチェックする必要があります。 – chris85

+0

by require in php –

答えて

2

javascriptコードをエコーし​​た時点で、idがerrorsのhtml要素がDOM内に存在しません。したがって、getElementByIdの返品は常に未定義です。

<script>document.getElementById("errors")...</script> 
... some more html 
<div id="errors"></div> 

あなたは、DOM文書の準備ができている後のjavascriptのコードを呼び出すことによってこの問題を解決することができます。 jQueryを使用すると、こうすることができます。

// event handler for document ready 
$(function() { 
    // at this point, the dom is ready and the 'errors' id exists 
    $('#errors').html("some error message"); 
}); 

これは機能しますが、少し不必要なようです。より良い方法は、実際のエラーメッセージをPHPでエコーし、これを行うためにjavascriptを使用しないことです。 PHPは、HTMLページに関連するどのよう

$error = false; 
if (mysqli_num_rows($data)>0) { 
    header('location: ../'); 
} else { 
    $error = '<h1 class="redback">SORRY, BUT THIS ACCOUNT DOESN\'T EXISTS</h1>'; 
} 

以降

<div class="errors"> 
<?php if ($error) echo $error; ?> 
</div> 
+0

ありがとう、フィリピン –

+0

本当に良い答え。 –

関連する問題