1

私はいくつかのJavaScriptを学ぼうとしていますが、コードが間違っている理由を理解するのに苦労しています(私は何か間違ったことをしていると確信しています笑)が、とにかくログインページを作成しようとしています。送信されたJavaScriptは、ログインがmysqlデータベースにあるかどうかを確認する関数を呼び出し、ユーザーのパスワードが存在する場合はその有効性を確認します。ただし、エラー (Illegally Formed XML Syntax) が発生し、解決できません。主に、netbeans が xml 構文エラーであると言っており、xml を使用していないため、私は本当に混乱しています。問題のコードは次のとおりです。

function validateLogin(login){

  login.addEventListener("input", function() {
    $value = login.value;
    if (<?php
    //connect to mysql
    mysql_connect(host, user, pass) or die(mysql_error());
    echo("<script type='text/javascript'>");
    echo("alert('MYSQL Connected.');");
    echo("</script>");
    //select db
    mysql_select_db() or die(mysql_error());
    echo("<script type='text/javascript'>");
    echo("alert('MYSQL Database Selected.');");
    echo("</script>");
    //query
    $result = mysql_query("SELECT * FROM logins") or die(mysql_error()); 
    //check results against given login
    while($row = mysql_fetch_array($result)){
      if($row[login] == $value){
        echo("true");
        exit(0);
      }
    }
    echo("false");
    exit(0);
      ?>) {
      login.setCustomValidity("Invalid Login. Please Click 'Register' Below.")
    } else {
      login.setCustomValidity("")
    }

  });
}

コードは外部の js ファイルにあり、最後の行でエラーがスローされます。また、読んだことから、ベストプラクティスはjsとphpを混在させないことだと理解していますが、それらを分離しながら必要な機能を維持するにはどうすればよいでしょうか? ありがとう!

4

2 に答える 2

2

この方法でPHPとJavaScriptを混在させることはできません。これは、JavaScriptがクライアントで実行される前に、すべてのPHPがサーバーですでに実行されているためです。

エラーは、クライアントがこれをJavaScriptとして受信し、実行に失敗したためです。

function validateLogin(login){

  login.addEventListener("input", function() {
    $value = login.value;
    if (<script type='text/javascript'>alert('MYSQL Connected.');</script>...
// etc.

クライアントからPHPと対話するには、<a>クリック、<form>送信、またはAjaxリクエストのいずれかによって別のHTTPリクエストを作成する必要があります(jQuery.post簡潔にするために使用します。詳細については、XMLHttpRequestの使用を参照してください)。

function validateLogin(login){
  login.addEventListener("input", function() {
    $.post('/validateLogin.php', { login: login }, function (result) {
      if (result === "true") {
        login.setCustomValidity("Invalid Login. Please Click 'Register' Below.")
      } else {
        login.setCustomValidity("")
      }
    });
  });
}

必要に応じて、URLを調整します/validateLogin.php。ただし、次のようなこのURLのPHPファイルを作成します。

<?php
$value = $_POST['login'];

mysql_connect(host, user, pass) or die(mysql_error());
mysql_select_db() or die(mysql_error());

$result = mysql_query("SELECT * FROM logins") or die(mysql_error());
while($row = mysql_fetch_array($result)){
  if($row[login] == $value){
    echo("true");
    exit(0);
  }
}
echo("false");
exit(0);
?>
于 2012-06-01T22:37:26.073 に答える
-1

なにが問題ですか?<script>条件にパーツを挿入するだけで、JavaScript を壊すことができますifif (<script type='text/javascript'>alert('MYSQL Connected.');</script>...次のこと: $valueJavaScript 変数である をPHP ループ内で一致させようとしていますが、そこにあり$row[login]ません$value。これらは分離されたコードです。それはすべて間違っています。

Jonathan Lonowski は、これをどのように行うべきかを非常にうまく説明しました。

于 2012-06-01T22:40:03.457 に答える