相关疑难解决方法(0)

PHP 7.4 和 MySQL:caching_sha2_password 拒绝长 (20c) 密码

更新:

23.02.2020:该错误已在PHP 7.4.3 中修复。

23.12.2019:我发现了哪些密码受到影响。看我下面的回答。仍然非常感谢为什么拒绝长密码的答案。


免责声明:我已经尝试了大约 2 个小时,只是设置了不同的密码。我绝对相信下面的密码会导致问题。它适用于其他密码。我知道如何修复它:使用不同的密码。我想知道为什么它不起作用。因为这种不一致是不可接受的。

我能够在我的系统上重现该问题。


最近切换到 PHP 7.4 和 MySQL 8,默认情况下使用caching_sha2_password. 在验证它实际上受 PHP 支持后,我无法使用随机生成的密码使其工作,因此我mysql_native_password再次使用 PHP 7.3 。

现在,我设置了一个新服务器并且它工作正常,所以我试图找出问题所在,以便我可以caching_sha2_password在我的其他服务器上使用。

MySQL(通过 mysql shell 使用root

ALTER USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
FLUSH PRIVILEGES;
QUIT
Run Code Online (Sandbox Code Playgroud)

PHP

const DB_HOST = '127.0.0.1';
const DB_USERNAME = 'test';
const DB_PASSWORD = '';
const DB_NAME = 'test_db';
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
Run Code Online (Sandbox Code Playgroud)

测试(重现)

php db.php
Run Code Online (Sandbox Code Playgroud)

错误 …

php mysql authentication mysqli php-7.4

7
推荐指数
1
解决办法
1427
查看次数

在PHP中创建短哈希

这已经在SO上被多次询问了.但我还没有找到解决问题的方法.

我想为邀请系统创建一个简短的哈希(假设最多8个字符).我无法使用,base[X] encoding因为这太容易猜到了.我不能只修剪例如MD5哈希的额外字符,因为我认为碰撞问题会在某个时候出现.

这有解决方案吗?

php hash

5
推荐指数
1
解决办法
8105
查看次数

隐藏javascript以免在浏览器中显示

我在我的文件中使用了一些javascripts.但是当我们查看源代码时,它会显示我们的javascript.有什么方法可以隐藏我们的JavaScript使用php在浏览器中显示.

javascript php hide

4
推荐指数
2
解决办法
9951
查看次数

如何制作"uniqid"只给出数字?

我有以下代码,我从不同的教程示例中汇总了这些代码:

<?php

$stamp = date("Ymdhis");
$random_id_length = 6;
$rndid = crypt(uniqid(rand(),1)); 
$rndid = strip_tags(stripslashes($rndid)); 
$rndid = str_replace(".","",$rndid); 
$rndid = strrev(str_replace("/","",$rndid));
$rndid = substr($rndid,0,$random_id_length); 
$orderid = "$stamp-$rndid";
$orderid = str_replace(".", "", "$orderid");
echo($orderid);

?>
Run Code Online (Sandbox Code Playgroud)

FIDDLE:http://phpfiddle.org/main/code/27d-qfw

我希望这能创造一个数字; 当前时间,后跟一个6位数的随机数.

例如: 20130710045730-954762

但是目前随机数字也包括字母.

例如: 20130710045730-Z3sVN2

如何编辑代码才能包含数字?任何帮助表示赞赏.

php

4
推荐指数
2
解决办法
2万
查看次数

随机字符串生成器 PHP

我正在尝试创建一个带有数字和字母的随机字符串,我发现了这个函数并认为它会很好,但我不知道这是否是创建真正随机字符串的正确方法,或者是否有更简单的方法去做这个?以下是我所拥有的:

function randomGen() {
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $length = strlen($chars);
    $random;

    for ($i = 0; $i < 8; $i++) {
        $random = $chars[rand(0, $length - 1)];
    }

    return $random;
}
Run Code Online (Sandbox Code Playgroud)

php random

3
推荐指数
1
解决办法
619
查看次数

PHP生成随机数

我需要在我的脚本中生成大约5,000个随机数,但CPU速度很快,我在随机数中看到了趋势.

例如,在100次第一次迭代中,我得到80和70之间的值与rand(0,100);这可能是一个真正的不方便.

有没有办法解决这个问题,或者2012年的随机性是否已经无法实现?

我相信有可能从执行随机次数的函数生成随机数...但我无法找出一个.

php

2
推荐指数
1
解决办法
445
查看次数

不能使用“String”作为类名,因为它是保留的

错误信息

我想生成一个随机字符串。我的开发环境是 xampp 和 php7.0.9。由于引用了一个 String 类,我得到了那个错误。

string php-7

0
推荐指数
1
解决办法
1万
查看次数

生成一个随机的no.in php

我正在申请一个在线考试申请.现在,一开始学生必须登录,他们才会得到问题.现在我想要的是当学生登录然后随机没有.必须在1到50之间生成.这将为他提取50个问题.登录成功后如何生成1到50之间的随机数.

这是我的HTML代码:

<body>
<h3>Login Form</h3>
<form id="form1" name="form1" method="post" action="login.php">
  Student Username: 
  <label>
  <input type="text" name="username" id="username" />
  </label>
  <p>Student Password: 
    <label>
    <input type="text" name="password" id="password" />
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="button" id="button" value="login" />
    </label>
  </p>
</form>
</body>
Run Code Online (Sandbox Code Playgroud)

现在当登录成功然后随机没有.必须生成1到50之间的值.

html php random

-3
推荐指数
1
解决办法
89
查看次数

标签 统计

php ×7

random ×2

authentication ×1

hash ×1

hide ×1

html ×1

javascript ×1

mysql ×1

mysqli ×1

php-7 ×1

php-7.4 ×1

string ×1