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发送消息。在您的代码中,您似乎希望 php 评估 javascript 正在使用的用户输入。这无法完成,因为当 javascript 运行时,php 已经完成。

您可以提供所需功能的一种方法是编写 php 代码来编写包含所有用户名的 javascript 数组的代码。然后,javascript 可以通过这个数组来告诉用户是否使用了用户名。但是,这有一些缺陷,如果您有很多用户,您将向新用户传输大量文本。这也可能是一个安全问题,因为每个人都可以知道所有在该站点注册的人的所有用户名,也有可能有人加载页面,输入他们的用户名,等待很长时间,让其他人创建一个同名的帐户,然后第一个人回来,提交页面,然后您将拥有两个用户名相同的用户。

首先用 php 编写整个站点可能更容易,但没那么有趣,在一切正常之后,添加 javascript 来美化功能。

于 2012-07-08T07:09:34.853 回答