php - PDO 有效 SELECT 和 INSERT

标签 php mysql pdo

我是 PHPPDO 的初学者。

下面的代码有效,但速度非常非常慢。有什么办法可以提高效率吗?

while() 效率不高,但可以完成工作。我尝试过其他解决方案,但没有任何效果。

有什么建议吗?

    public function register_new_member(){

        global $bcrypt; 
        global $populera;

        $query = $this->db->prepare("SELECT id, lid, firstname, surname FROM `members`");

        try{
            $query->execute();      
            while ($data = $query->fetch()){

            $id = $data['id'];
            $lid = $data['lid'];

            $username = $populera->create_username($data['firstname'],$data['surname']);    

            //Show data
            echo "<br>Username: ".$username;
            echo "<br>ID: ".$id;
            echo "<br>LID: ".$lid;      

            //Static password - change after login      
            $password = "password";

            //Bcrypt    
            $pass = $bcrypt->generateHash($password);

            //Show data
            echo "<br>Password: ".$pass;


            $query2  = $this->db->prepare("INSERT INTO `login` (`id`, `lid`, `user`, `password`) VALUES (?, ?, ?, ?) ");

            $query2->bindValue(1, $id);
            $query2->bindValue(2, $lid);
            $query2->bindValue(3, $username);
            $query2->bindValue(4, $pass);

            $query2->execute();
            }
            //Success? 
            echo "<br>Saved!";

            }catch(PDOException $e){
                die($e->getMessage());
            }
}

最佳答案

散列函数可能很慢——因为您为所有用户设置了相同的密码,您可以将此计算移出循环。 (它应该很慢,因为散列通常会重复一些“轮次”以使暴力破解变得困难。)

如果您对每个散列使用随机盐,我无法从您的代码中得知。如果你是(而且你应该是),那么这个建议会给你留下许多用相同盐散列的密码。鉴于您将它们全部设置为相同的值,我不确定这样做的风险有多大。

就我个人而言,我会尝试提出一个我没有预设密码的解决方案——例如生成一个随机 token ,我将其通过电子邮件发送给每个用户,以便他们可以为自己创建一个新密码。 (您可能无论如何都需要让用户重置忘记的密码。)

关于php - PDO 有效 SELECT 和 INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27593263/

相关文章:

围棋中的 PHP。快速CGI?

javascript - 单击时设置字符串的值

mysql - 在Mysql中存储列表

PHP| pear :MDB2 vs PDO vs Native-PHP (Raw)

php - 将图像上传到文件夹并获取其路径名

php - codeigniter 中的安全身份验证

php - 如何构建具有动态输入字段的表?

mysql - Joomla JFactory 查询返回今天日期之后的结果

php - 使用 $_GET [""增加 PHP 和 SQL 的页面]

javascript倒计时器与数据库中的sql时间?