我需要以下帮助;当在另一个输入字段内单击按钮“gww”时,我想显示一个新生成的密码(php中的函数)。有人可以解释一下吗?
<td><input type="button" value="Generate" name="gww"></td>
<td><input type="text" id="ww"></td>
<script type="text/javascript">
function password()
{
var elem = document.getElementById("ww");
elem.value = "<? echo random_Password(); ?>";
}
</script>
function random_Password($length = 8)
{
//empty password string
$password = "";
//Possible characters
$karakters = "123456789abcdefghijklmnpqrstuvwxyz";
$maxlength = strlen($karakters);
if($length > $maxlength)
{
$length = $maxlength;
}
$i = 0;
while($i < $length)
{
$char = substr($karakters, mt_rand(0, $maxlength-1), 1);
if(!strstr($password, $char))
{
$password .= $char;
$i++;
}
}
return $password;
}
答案 0 :(得分:3)
我怀疑您在单击按钮时需要显示新密码。你必须使用AJAX。
所以你有你的javascript函数:
function generatePassword()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.document.getElementById("ww").value = xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://www.example.com/generatepassword.php",true);
xmlhttp.send();
}
您的HTML应该是
<input type="button" value="Generate password" onClick="generatePassword()">
generatePassword.php:
<?php
echo random_Password();
function random_Password($length = 8)
{
//your function here ;
}
?>
答案 1 :(得分:1)
这应该按原样运作。
<td><input type="button" value="Generate" name="gww" onClick="generatePassword()"></td>
<td><input type="text" id="ww"></td>
<script type="text/javascript">
function generatePassword()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.document.getElementById("ww").value = xmlhttp.responseText;
}
}
xmlhttp.open("GET","gpass.php",true);
xmlhttp.send();
}
</script>
我认为你已经将gpass.php作为:
<?php
echo random_Password();
function random_Password($length = 8)
{
//your function here ;
}
?>
答案 2 :(得分:0)
PHP是服务器端,所以你打电话给
echo random_Password();
仅在页面加载时发生,并且只发生一次。在javascript中创建函数并具有按钮的onClick属性。或者在这些评论中使用其他人提到的Ajax。
答案 3 :(得分:0)
您遇到的问题是以下代码只运行一次:
var elem = document.getElementById("ww");
elem.value = "<? echo random_Password(); ?>";
因此,假设您的random_Password()
函数(完全令人难以置信)返回值 12345678 ,此值将一直保持到手动刷新页面为止。无需刷新,点击 GWW 按钮,每次都会将 WW 字段设置为 12345678 。
这里有几个不同的选择(最容易做到最难):
单击 GWW 按钮执行整页刷新。 不可取。
将random_Password()函数转换为JavaScript代码并在客户端中执行。非常简单,但它向黑客揭示了如何生成密码,因此不是安全。
使用 AJAX 。将您的random_Password()
函数移动到其自己的文件random_password.php
中,并将“页面”(即8个字符的字符串)加载到文本字段val
中。
我会在99%的情况下选择选项3 。这里的教程:http://www.w3schools.com/php/php_ajax_php.asp
希望有所帮助:)