javascript和php不能一起工作
我正在为我的网站编写注册页面。这里是我的注册页面。任何人都可以看到为什么它不检查用户名是否已被使用或不是。我不知道PHP和JavaScript是否可以一起工作。javascript和php不能一起工作
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>
不,JavaScript和PHP不以这种方式 “同心协力”。 Javascript在您的浏览器中运行,PHP在此之前在服务器上运行。因此,您不能使用PHP进行客户端验证,只能使用服务器端。对于这个第一个演示,只需在浏览器的页面上显示“查看源代码”即可。
你必须单独考虑它们。您必须让PHP检查表单提交的内容,并返回一个新页面,指出它是否为有效/新用户名,并允许用户在需要时再次尝试。
你可以使用ajax来伪装它,但即使这样,它只是向服务器发送一个请求,而服务器是单独运行的,并将结果返回给页面,由不同的函数处理。你的尝试会变得更加复杂。
PHP在服务器端进行评估。 JavaScript在客户端进行评估。也就是说:当用户向服务器发出请求时,php会在服务器上进行评估,然后将结果输出发送给用户,如果涉及到javascript,则会在php评估后在客户端进行评估。
这意味着PHP可以给JavaScript的消息,但JavaScript不能发送消息到PHP。在你的代码中,它看起来像你想要php来评估JavaScript正在使用的用户输入。这不能完成,因为当JavaScript运行时,PHP已经完成。
您可以提供所需功能的一种方法是编写php代码,以便在JavaScript中编写包含所有用户名的数组代码。然后,javascript可以查看这个数组,告诉用户是否获取了用户名。然而,这存在一些缺陷,如果你有很多用户,你将会向很多用户发送大量文本。这也可能是一个安全问题,因为每个人都能够知道所有在该站点注册的人员的所有用户名,也有可能有人加载该页面,键入他们的用户名,等待很长时间,让其他人创建一个具有相同名称的帐户,然后第一个人返回,提交该页面,然后您将拥有两个具有相同用户名的用户。
在php中首先编写整个站点可能会更容易,但也更少乐趣,并且在所有工作之后,添加javascript以完成功能。
是和否。通过Ajax,PHP和JS可以一起工作。由于PHP是在服务器端处理的,所以不会以您编码的方式进行编码,因此在任何JS运行之前,页面中的所有php都将作为HTML进行处理和输出。 PHP只会在您提交或重新加载页面时再次运行。因此,您要么使用Ajax检查用户名可用性,要么使用PHP来完成。 – 2012-07-08 06:51:59
* checkInput()函数中的每个*代码路径是否返回false?你的表单是否提交?如果表单实际上没有提交给服务器,那么您如何期望服务器端PHP代码对其作出响应? – David 2012-07-08 06:56:14
@David JS函数默认返回'true',所以如果它没有得到任何错误路径,表单将被提交(当然,考虑一个有效函数)。 – 2012-07-08 06:59:04