单击按钮时在输入字段中显示文本(php / html)

时间:2013-02-13 09:33:37

标签: php javascript html input

我需要以下帮助;当在另一个输入字段内单击按钮“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;
}

4 个答案:

答案 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

这里有几个不同的选择(最容易做到最难):

  1. 单击 GWW 按钮执行整页刷新。 可取。

  2. 将random_Password()函数转换为JavaScript代码并在客户端中执行。非常简单,但它向黑客揭示了如何生成密码,因此不是安全

  3. 使用 AJAX 。将您的random_Password()函数移动到其自己的文件random_password.php中,并将“页面”(即8个字符的字符串)加载到文本字段val中。

  4. 我会在99%的情况下选择选项3 。这里的教程:http://www.w3schools.com/php/php_ajax_php.asp

    希望有所帮助:)