php - 为什么函数'password_verify' PHP 不起作用?
问题描述
我有一个 ws 我用用户名和密码创建一个用户并使用
password_hash($password, PASSWORD_DEFAULT);
对密码进行哈希处理。
ws 创建用户:
<?php
header('Content-Type: text/xml');
$username = $_REQUEST["username"] ?? "";
$password = $_REQUEST["psw"] ?? "";
$codice_risposta = 0;
$messaggio = "";
$sql = "";
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$conn = mysqli_connect("localhost:2020","root","","pasinisilvia_elaboratogasitalia");
//password_verify($userPassword, $hashedPassword)
if ($username != '' && $hashedPassword!='' ){
if ($conn) { // connessione OK
$sql = "INSERT INTO proprietario (NomeUtente,Password)
VALUES ( '$username','$hashedPassword' ) ";
$result = mysqli_query($conn,$sql);
if ($result) { // query OK
$codice_risposta = 1;
$messaggio = "Utente creato";
}
else {
$messaggio = "Username già in uso";
}
}
}else {
$messaggio = "Parametri mancanti";
}
$doc=new DOMDocument('1.0', 'UTF-8');
$elRisposta=$doc->createElement("risposta"); //echo "<risposta>\n";
$elCodRisp =$doc->createElement("codice_risposta"); //echo " <codice_risposta>$codRisp</codice_risposta>\n";
$elCodRisp->appendChild($doc->createTextNode("$codice_risposta"));
$elMex=$doc->createElement("messaggio"); //echo " <messaggio>$msg</messaggio>\n";
$elMex->appendChild($doc->createTextNode("$messaggio"));
// appendo a risposta
$elRisposta->appendChild($elCodRisp);
$elRisposta->appendChild($elMex);
$doc->appendChild($elRisposta);
echo $doc->saveXML();
?>
登录:
<?php header('Content-Type: text/xml');
$username = $_REQUEST["username"] ?? "";
$psw = trim($_REQUEST["psw"]) ?? "";
//var_dump($psw);
//$hashedPassword = password_hash($psw, PASSWORD_DEFAULT);
$conn = mysqli_connect("localhost:2020","root","","pasinisilvia_elaboratogasitalia");
if ( $username!='' && $psw!='' ) {
if ($conn) { // se la connessione è avvenuta correttamente
$sql = "SELECT Password FROM proprietario WHERE NomeUtente='$username'";
$result = mysqli_query($conn,$sql);
if ( $result ) { // se non ci stati errori di sintassi
if ( mysqli_num_rows($result) == 1 ) { //se c'è l'utente
$row = mysqli_fetch_assoc($result);
$hashedPassword = $row['Password'];
//var_dump($psw);
// var_dump($hashedPassword);
// $hashedPassword = password_hash($psw, PASSWORD_DEFAULT);
if(password_verify($psw, $hashedPassword)){
//if($hashedPassword == $pwDb){
$cod_risp = 1;
$messaggio = "Successo";
}
else{
$cod_risp = 0;
$messaggio = "pw sbagliata";
}
}
}
/* $sql = "SELECT * FROM proprietario WHERE NomeUtente=? and Password=? " ;
$stmt = $conn->prepare($sql);
$stmt->bind_param('ss', $username, $hashedPassword); // 's' specifies the variable type => 'string'
$stmt->execute();
$stmt->bind_result($username, $password);
$stmt->store_result();
$result = $stmt->get_result();*/
// $result = mysqli_query($conn,$sql);
// $result = mysqli_query($conn,$sql);
/* if ( $result ) { // se non ci stati errori di sintassi
if ( mysqli_num_rows($result) == 1 ) { //se c'è l'utente
// $row = mysqli_fetch_assoc($result);
$nome = $row['NomeUtente'];
$pw = $row['Password'];
$cod_risp = 1;
$messaggio = "Successo";
}
else { //se non c'è l'utente
$cod_risp = 0;
$messaggio="Username o password errati";
}
}
else {
$cod_risp = 0;
$messaggio="Errore nella query";
}
}
else {
$cod_risp = 0;
$messaggio="Impossibile connettersi al database";
}*/
}
else {
$cod_risp = 0;
$messaggio = "Parametri mancanti nella richiesta";
}
}
/*if($cod_risp == 1)
echo "1";
else
echo "0";*/
/*echo "<risposta>\n";
echo " <codice_risposta>$cod_risp</codice_risposta>\n";
echo " <messaggio>$messaggio</messaggio>\n";
if ($cod_risp==1) {
echo " <dettagli>\n";
echo " <nome>$nome</nome>\n";
echo " <cognome>$pw</cognome>\n";
echo " </dettagli>";
}
echo "</risposta>"; */
/*echo "<risposta>\n";
echo " <codice_risposta>$cod_risp</codice_risposta>";
echo " <messaggio>$messaggio</messaggio>";
echo "</risposta>"; */
$doc=new DOMDocument('1.0', 'UTF-8');
$elRisposta=$doc->createElement("risposta"); //echo "<risposta>\n";
$elCodRisp =$doc->createElement("codice_risposta"); //echo " <codice_risposta>$codRisp</codice_risposta>\n";
$elCodRisp->appendChild($doc->createTextNode("$cod_risp"));
$elMex=$doc->createElement("messaggio"); //echo " <messaggio>$msg</messaggio>\n";
$elMex->appendChild($doc->createTextNode("$messaggio"));
// appendo a risposta
$elRisposta->appendChild($elCodRisp);
$elRisposta->appendChild($elMex);
$doc->appendChild($elRisposta);
echo $doc->saveXML();
?>
每次我尝试登录时,函数 password_verify 都会返回 false。感谢关注。
解决方案
推荐阅读
- r - 在闪亮的应用程序中阅读所有 Excel 工作表
- r - 将 cURL 语句转换为 HTTR
- android - 更新 gradle 包装器后无法解析类 MavenDeployment
- operating-system - 如何充分模拟 RISC-V 中的控制和状态寄存器?
- yocto - 构建中的 vpp-core 要求提供破坏构建的符号链接
- stored-procedures - 在 Powershell 中执行 azure cosmos db 存储过程的示例
- python - 如何使用DataFrame将网站中的表格数据存储到csv文件#Python
- excel - VBA - 无法保存新工作簿 - 运行时错误 1004
- r - 如何保留相同列名的最后一列?
- python - ImportError: DLL load failed while importing open3d_pybind: 找不到指定的模块