javascript和php不能一起工作

时间:2012-07-08 06:46:33

标签: javascript validation

我正在为我的网站编写注册页面。这是我的注册页面。任何人都可以告诉我为什么它不检查用户名是否已经被使用。我不知道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>

2 个答案:

答案 0 :(得分:0)

不是,Javascript和PHP不会以这种方式“一起工作”。 Javascript在您的浏览器中运行,PHP之前在服务器上运行。因此,您不能使用PHP进行客户端验证,只能使用服务器端。对于第一次演示,只需“查看源代码”,了解您的页面对浏览器的影响。

你必须分开考虑它们。您必须让PHP只检查表单提交的内容,并返回一个新页面,指示它是否是有效/新用户名,并允许用户在需要时再试一次。

您可以使用ajax对其进行伪造,但即使这样也只是向服务器发送请求(单独运行),并将结果返回到页面,由不同的函数处理。你的尝试会变得更复杂。

答案 1 :(得分:0)

PHP在服务器端进行评估。 JavaScript在客户端评估。也就是说:当用户向服务器发出请求时,在服务器上评估php,结果输出发送给用户,如果涉及到javascript,则在php评估后在客户端上进行评估。

这意味着PHP可以向javascript发送消息,但是javascript无法向php发送消息。在您的代码中,您似乎希望php评估javascript正在进行的用户输入。这是不可能的,因为当javascript运行时,php已经完成。

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

首先在php中编写整个站点可能更容易,但不那么有趣,并且在它完成所有工作之后,添加javascript以增强功能。