为什么要使用&x27;密码验证';PHP没有';不行?
我有一个ws,在这里我创建了一个用户名和pw的用户,我使用为什么要使用&x27;密码验证';PHP没有';不行?,php,forms,authentication,hash,ws,Php,Forms,Authentication,Hash,Ws,我有一个ws,在这里我创建了一个用户名和pw的用户,我使用 password_hash($password, PASSWORD_DEFAULT); 对密码进行哈希运算 Ws-create用户: <?php header('Content-Type: text/xml'); $username = $_REQUEST["username"] ?? ""; $password = $_REQUEST[
password_hash($password, PASSWORD_DEFAULT);
对密码进行哈希运算
Ws-create用户:
<?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();
?>
createElement(“risposta”)//回音“\n”;
$elCodRisp=$doc->createElement(“codice_risposta”)//回显“$codRisp\n”;
$elCodRisp->appendChild($doc->createTextNode($codice_risposta));
$elMex=$doc->createElement(“消息”)//回显“$msg\n”;
$elMex->appendChild($doc->createTextNode($messaggio));
//附录a
$elRisposta->appendChild($elCodRisp);
$elRisposta->appendChild($elMex);
$doc->appendChild($elRisposta);
echo$doc->saveXML();
?>
Ws-log登录:
<?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();
?>
prepare($sql);
$stmt->bind_param('ss',$username,$hashedPassword);/'s'指定变量类型=>'string'
$stmt->execute();
$stmt->bind_结果($username,$password);
$stmt->store_result();
$result=$stmt->get_result()*/
//$result=mysqli\u查询($conn,$sql);
//$result=mysqli\u查询($conn,$sql);
/*如果($result){//se sintassi非ci统计错误
如果(mysqli_num_rows($result)==1){//se c'èl'utete
//$row=mysqli\u fetch\u assoc($result);
$nome=$row['nomeutete'];
$pw=$row['Password'];
$cod_risp=1;
$messaggio=“Successo”;
}
否则{//se non c'èl'utene
$cod_risp=0;
$messaggio=“用户名和密码勘误表”;
}
}
否则{
$cod_risp=0;
$messaggio=“Errore nella query”;
}
}
否则{
$cod_risp=0;
$messaggio=“不可能的连接数据库”;
}*/
}
否则{
$cod_risp=0;
$messaggio=“Parametri mancanti nella richiesta”;
}
}
/*如果($cod_risp==1)
回声“1”;
其他的
回声“0”*/
/*回音“\n”;
回显“$cod_risp\n”;
回显“$messaggio\n”;
如果($cod_risp==1){
回音“\n”;
回显“$nome\n”;
回显“$pw\n”;
回声“;
}
回声“;*/
/*回音“\n”;
echo“$cod_risp”;
回声“$messaggio”;
回声“*/
$doc=新的DOMDocument('1.0','UTF-8');
$elRisposta=$doc->createElement(“risposta”)//回音“\n”;
$elCodRisp=$doc->createElement(“codice_risposta”)//回显“$codRisp\n”;
$elCodRisp->appendChild($doc->createTextNode($cod_risp));
$elMex=$doc->createElement(“消息”)//回显“$msg\n”;
$elMex->appendChild($doc->createTextNode($messaggio));
//附录a
$elRisposta->appendChild($elCodRisp);
$elRisposta->appendChild($elMex);
$doc->appendChild($elRisposta);
echo$doc->saveXML();
?>
每次我尝试登录时,函数password\u verify返回false。
谢谢您的关注。请尝试做一些。转储您正在处理的值,以尝试查看哪一个值可能包含您不期望的内容。@El_Vanja我已经这样做了。SQL中的hashedPassword是正确的,Url中的密码是我在登录页面中插入的密码。现在,如果取消注释,验证是否在创建页面上起作用?数据库中的
password
-列的大小是多少?顺便说一句,你完全可以接受SQL注入攻击。与绑定参数一起使用,而不是像那样在查询中直接使用用户数据。旁注:使用$password!=''
而不是$hashedPassword!=''代码>。即使密码是空字符串,您也会从password\u hash()
得到一个哈希值,因此$hashedPassword
永远不会为空。