0

私は自分のウェブサイトの登録ページを書いています.これが私の登録ページです.ユーザー名が既に使用されているかどうかを確認しない理由を誰か教えてください.PHPとJavaScriptが連携できるかどうかわかりません. .

html ページは次のとおりです。

<html>
<head>
    <title>Register</title>

</head>

<body>
<script language="javascript">
  function checkInput()
  {
   if(document.register.username.value=="")
   {
      alert("Fill in username");
      document.register.username.focus();
      return false;
    }else if(document.register.password.value==""){
      alert("Fill in your password");
      document.register.password.focus();
      return false;
}else {
<?php
if(isset($_POST['submit'])){
include "connect.php";
$username=$_POST['username'];
$query="SELECT username FROM user";
$result=mysql_query($query);
while($row=mysql_fetch_array($result)){
    $arr[]=$row['username'];    
}
if(in_array($username,$arr)){
    ?>
    alert("Username is already in use");// this part does not work!
    document.register.username.focus();
    return false;
<?php
}
}
?>
}
    }
  </script>

<form name="register" method="post" action="dangki.php" onsubmit="return checkInput();">
  <table width="289" height="185" border="1">
    <tr>
      <td colspan="2">register</td>
    </tr>
    <tr>
      <td width="83">Username</td>
      <td width="190"><input type="text" name="username" id="textfield" ></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input type="text" name="password" id="textfield2"></td>
    </tr>
    <tr>
      <td>Re-type Password</td>
      <td><input type="text" name="repassword" id="textfield3"></td>
    </tr>
    <tr>
      <td colspan="2"><input type="submit" name="submit" id="button" value="Submit">    </td>
    </tr>
    </table> 
    </form>

    </body>
    </html>
4

2 に答える 2

0

いいえ、Javascript と PHP はそのように「連携」しません。Javascript はブラウザで実行され、PHP はその前にサーバーで実行されます。したがって、PHP はクライアント側の検証には使用できず、サーバー側のみに使用できます。これの最初のデモンストレーションとして、ページがブラウザにどのように見えるかについて「ソースを表示」してください。

それらを分けて考える必要があります。フォームが送信するものをPHPにチェックさせ、それが有効な/新しいユーザー名であるかどうかを示し、必要に応じてユーザーが再試行できるようにする新しいページを返す必要があります。

あなたはそれをajaxで偽造することができますが、それでさえ、別々に実行されるサーバーにリクエストを送信し、別の機能によって処理される結果をページに返します。あなたの試みよりも複雑になります。

于 2012-07-08T06:54:16.437 に答える
0

PHP はサーバー側で評価されます。JavaScript はクライアント側で評価されます。つまり、ユーザーがサーバーにリクエストを送信すると、php がサーバーで評価され、結果の出力がユーザーに送信されます。javascript が含まれている場合は、php が評価された後にクライアントで評価されます。 .

つまり、PHP は javascript にメッセージを送信できますが、javascript は php にメッセージを送信できません。あなたのコードでは、javascriptが取っているユーザー入力をphpに評価させたいようです。JavaScript が実行されているとき、php はすでに終了しているため、これを行うことはできません。

必要な機能を提供する 1 つの方法は、php コードを記述して、すべてのユーザー名を含む配列のコードを JavaScript で記述することです。次に、JavaScript はこの配列を調べて、ユーザー名が使用されているかどうかをユーザーに通知します。ただし、これにはいくつかの欠点があります。多くのユーザーがいる場合、大量のテキストを新しいユーザーに送信することになります。誰もがサイトに登録されているすべての人のすべてのユーザー名を知ることができるため、これもセキュリティ上の問題になる可能性があります。また、誰かがページを読み込んでユーザー名を入力し、長時間待機する可能性もあります。他の誰かに同じ名前でアカウントを作成してもらい、最初の人が戻ってきてページを送信すると、同じユーザー名を持つ 2 人のユーザーができます。

最初にサイト全体を php で記述し、すべてが機能した後に JavaScript を追加して機能を整える方が簡単かもしれませんが、面白くはありません。

于 2012-07-08T07:09:34.853 に答える