Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用此代码?_Php_Encryption_Pdo - Fatal编程技术网

Php 如何使用此代码?

Php 如何使用此代码?,php,encryption,pdo,Php,Encryption,Pdo,变量$member\u password来自$\u POST,但是有人能在这里解释并演示如何加密吗 session_start(); $member_username = $_POST['username']; $member_password = $_POST['password']; $crypt_pass = crypt($member_password,"somesalt"); try { $dbh = new PDO('mysql:host=localhost;dbname

变量
$member\u password
来自
$\u POST
,但是有人能在这里解释并演示如何加密吗

session_start();
$member_username = $_POST['username']; 
$member_password = $_POST['password'];
$crypt_pass = crypt($member_password,"somesalt");

try {
    $dbh = new PDO('mysql:host=localhost;dbname='.DB_NAME, DB_USERNAME,DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} 
catch (PDOException $e) {
    echo "Fatal error.";
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}    

$sth = $dbh->prepare("SELECT * FROM ".DB_PREFIX."_users WHERE username = :user AND password = :pass");
$sth->bindParam(':user', $member_username);
$sth->bindParam(':pass', $crypt_pass);
$sth->execute();
$total = $sth->rowCount();
$row = $sth->fetch();

函数crypt返回密码的散列,您不能简单地从散列中检索原始密码,攻击者也不能,这样您就可以在数据库中以最佳的安全性存储密码,并且复杂性越高,散列越安全,请参见

crypt
是一个PHP函数,它获取一个字符串并使用DES算法(默认情况下)使用给定的salt对其进行加密。这是必要的,因为出于明显的安全原因,您不应该在没有加密或散列的情况下存储密码

salt是一个(可能是随机的)值,您应该将其与用户信息一起存储,并且它是使加密“更安全”所必需的(有关更多信息,请参阅PHP文档,或者有关如何存储密码的教程,请参阅google)


希望这有帮助:)

看看这里一般提示:如果您需要PHP函数的帮助,请转到
http://php.net/name_of_function
。除非您想使用自己独特的salt和哈希代码,否则您应该忘记使用crypt,PHP5.5的新功能可以为您处理所有这些;如果你没有PHP5.5,那么你应该使用ircmaxell。这与PDO没有任何关系。
$crypt_pass = crypt($member_password,"somesalt");