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