我刚写了登录ststem代码,这似乎是checkLogin代码的问题。该寄存器工作正常,但当用户尝试登录时,它会在数据库中找到他(即使它出现在那里)。
代码:
<?php
session_start();
include('dbc.php');
$username=$_POST['name'];
$mypassword=$_POST['pwd'];
$sql="SELECT pwd FROM users WHERE
name=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s",$username);
$stmt->execute();
mysqli_stmt_bind_result($stmt, $password);
mysqli_stmt_fetch($stmt);
$savedpassword = $password;
if(password_verify($mypassword, $savedpassword)){
$_SESSION['name']=$username;
// isset($_SESSION['url']) ? $location = $_SESSION['url'] :
$location = 'main.php';
header("location:$location");
}
else {
header("location:login.php?fail=yes");
}
?>
你可以回忆任何代码问题吗?
答案 0 :(得分:1)
不幸的是我无法发表评论。但我的建议是避免使用mysqli,除非你必须使用它,而是使用PDO。试试这个。
您可以为语句执行分配变量,而不是使用mysqli绑定。
// create new client at /track-my-business/client/
final String key =FirebaseDatabase.getInstance().getReference().push().getKey();
// get user input and set it to result
// edit text
Client client = new Client(firstNameEditText.getText().toString(),
lastNameEditText.getText().toString());
Map<String, Object> clientValues = client.toMap();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put(key, clientValues);
FirebaseDatabase.getInstance().getReference().updateChildren(childUpdates);
这样,您可以将$ result分配为包含查询中所有结果的数组。然后,您可以按名称调用每列。