【问题标题】:Display a random string in a html form以 html 形式显示随机字符串
【发布时间】:2018-05-08 06:20:29
【问题描述】:

我想创建一个表单,其中一个值已经填充了随机字符串。我已经尝试过 PHP 和 javascript,但是它一直显示变量名称而不是变量...任何帮助将不胜感激!

<form name="name" method="post" action="sendform.php">
    <table width="450px">
        <tr>
            <td valign="top">
                <label for="number">Number</label>
            </td>
            <td valign="top">
                <input  type="text" value="Insert random string here" maxlength="50" size="30">
            </td>
        </tr>
    </table>
</form>

脚本:

<script>
function generateRandomString($length = 10) {
$characters = 
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
    $randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
</script>

php

function generateRandomString($length = 10) {
$characters = 
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
    $randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}

【问题讨论】:

  • 发布您尝试解决问题的php/javascript
  • 您是如何尝试使用 javascript 或 php 的?使用该代码显示您的解决方案。
  • 并确保您的网站以 .php 而不是 .html 结尾
  • 您的脚本文件扩展名为 .html ?
  • 我不明白你为什么在

标签: javascript php html forms web


【解决方案1】:

试试这个..

<?php $rand = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz"), 0, 7); ?>
.
.
.
<td valign="top">
<input  type="text" value="<?php echo $rand; ?>" maxlength="50" size="30">
</td>

【讨论】:

    【解决方案2】:

    这样做

    <?php $length = 10;
    $randomString = substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length);
    ?>
     <td valign="top">
         <input  type="text" value="<?php echo $randomString;?>" maxlength="50" size="30">
     </td>
    

    输出将是数字和字母的混合,如下所示:10whDMtuLO

    另外,根据需要设置$length中字符串的长度。

    【讨论】:

      【解决方案3】:

      您可以通过Roko C. Buljan 参考此答案

      function randNumber(len, an){
          an = an&&an.toLowerCase();
          var str="", i=0, min=an=="a"?10:0, max=an=="n"?10:62;
          for(;i++<len;){
            var r = Math.random()*(max-min)+min <<0;
            str += String.fromCharCode(r+=r>9?r<36?55:61:48);
          }
          return str;
      }
      document.getElementById("foo").value = randNumber(10,'A');
      &lt;textarea id='foo' style='width:100%;height:200px'&gt;&lt;/textarea&gt;

      【讨论】:

        【解决方案4】:

        生成 sh1 哈希的函数

        function sha1 ( str ) { 
        
        var rotate_left = function(n,s) {
                var t4 = ( n<<s ) | (n>>>(32-s));
                return t4;
            };
        
        var lsb_hex = function(val) {
                var str="";
                var i;
                var vh;
                var vl;
        
                for( i=0; i<=6; i+=2 ) {
                    vh = (val>>>(i*4+4))&0x0f;
                    vl = (val>>>(i*4))&0x0f;
                    str += vh.toString(16) + vl.toString(16);
                }
                return str;
            };
        
        var cvt_hex = function(val) {
                var str="";
                var i;
                var v;
        
                for( i=7; i>=0; i-- ) {
                    v = (val>>>(i*4))&0x0f;
                    str += v.toString(16);
                }
                return str;
            };
        
        var blockstart;
        var i, j;
        var W = new Array(80);
        var H0 = 0x67452301;
        var H1 = 0xEFCDAB89;
        var H2 = 0x98BADCFE;
        var H3 = 0x10325476;
        var H4 = 0xC3D2E1F0;
        var A, B, C, D, E;
        var temp;
        
        str = this.utf8_encode(str);
        var str_len = str.length;
        
        var word_array = new Array();
        for( i=0; i<str_len-3; i+=4 ) {
            j = str.charCodeAt(i)<<24 | str.charCodeAt(i+1)<<16 |
            str.charCodeAt(i+2)<<8 | str.charCodeAt(i+3);
            word_array.push( j );
        }
        
        switch( str_len % 4 ) {
            case 0:
                i = 0x080000000;
            break;
            case 1:
                i = str.charCodeAt(str_len-1)<<24 | 0x0800000;
            break;
            case 2:
                i = str.charCodeAt(str_len-2)<<24 | str.charCodeAt(str_len-1)<<16 | 0x08000;
            break;
            case 3:
                i = str.charCodeAt(str_len-3)<<24 | str.charCodeAt(str_len-2)<<16 | str.charCodeAt(str_len-1)<<8    | 0x80;
            break;
        }
        
        word_array.push( i );
        
        while( (word_array.length % 16) != 14 ) word_array.push( 0 );
        
        word_array.push( str_len>>>29 );
        word_array.push( (str_len<<3)&0x0ffffffff );
        
        for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {
            for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
            for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
        
            A = H0;
            B = H1;
            C = H2;
            D = H3;
            E = H4;
        
            for( i= 0; i<=19; i++ ) {
                temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
                E = D;
                D = C;
                C = rotate_left(B,30);
                B = A;
                A = temp;
            }
        
            for( i=20; i<=39; i++ ) {
                temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
                E = D;
                D = C;
                C = rotate_left(B,30);
                B = A;
                A = temp;
            }
        
            for( i=40; i<=59; i++ ) {
                temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
                E = D;
                D = C;
                C = rotate_left(B,30);
                B = A;
                A = temp;
            }
        
            for( i=60; i<=79; i++ ) {
                temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
                E = D;
                D = C;
                C = rotate_left(B,30);
                B = A;
                A = temp;
            }
        
            H0 = (H0 + A) & 0x0ffffffff;
            H1 = (H1 + B) & 0x0ffffffff;
            H2 = (H2 + C) & 0x0ffffffff;
            H3 = (H3 + D) & 0x0ffffffff;
            H4 = (H4 + E) & 0x0ffffffff;
        }
        
        var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);
        return temp.toLowerCase();
        

        }

        【讨论】:

          【解决方案5】:

          这个问题有很多答案,但没有一个利用Cryptographically Secure Pseudo-Random Number Generator (CSPRNG)。

          简单、安全、正确的答案是使用RandomLib,不要重新发明轮子。

          使用安全的整数生成器,使用 CSPRNG 生成随机字符串就像在公园里散步。

          function random_str($length, $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
          {
              $str = '';
              $max = mb_strlen($keyspace, '8bit') - 1;
              for ($i = 0; $i < $length; ++$i) {
                  $str .= $keyspace[random_int(0, $max)];
              }
              return $str;
          }
          
          
          <form name="name" method="post" action="sendform.php">
              <table width="450px">
                  <tr>
                      <td valign="top">
                          <label for="number">Number</label>
                      </td>
                      <td valign="top">
                          <input  type="text" value="<?php echo random_str(10); ?>" maxlength="50" size="30">
                      </td>
                  </tr>
              </table>
          </form>
          

          【讨论】:

          • 不错的维基链接 :)
          猜你喜欢
          • 2011-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-22
          • 1970-01-01
          • 2023-03-15
          • 2015-11-03
          • 1970-01-01
          相关资源
          最近更新 更多