1 回答
TA贡献1890条经验 获得超9个赞
您帖子中的缩进具有误导性。在else看起来像它去与if ($query->num_rows > 0),但它实际上与去if (password_verify($password, $data['password'])。
您需要一个else用于$query_num_rows检查的块。
你也不应该转义密码,因为你没有在 SQL 查询中使用它(除非你password_hash()在保存密码时在调用之前也犯了转义它的错误)。
<?php ob_start(); session_start(); ?>
<?php
$messaggio = "";
if (isset($_POST['submit']))
{
include 'connection/cnt.php';
$email = $connessione->real_escape_string($_POST['email']);
$password = $_POST['password'];
$query = $connessione->query("SELECT *FROM collaboratori WHERE email='$email'");
if ($query->num_rows > 0)
{
$data = $query->fetch_array();
if (password_verify($password, $data['password'])) {
$_SESSION['collaboratore'] = $data['ID_Collaboratore'];
?>
<script type="text/javascript">
window.location = "home.php";
</script>
<?php
} else {
$messaggio = "Please check your inputs!";
}
} else {
$messaggio = "Please check your inputs!";
}
}
?>
您还可以通过组合分配和检查来简化它。无需测试num_rows——如果没有匹配的行将$query->fetch_array()返回FALSE。
<?php ob_start(); session_start(); ?>
<?php
$messaggio = "";
if (isset($_POST['submit']))
{
include 'connection/cnt.php';
$email = $connessione->real_escape_string($_POST['email']);
$password = $_POST['password'];
$query = $connessione->query("SELECT *FROM collaboratori WHERE email='$email'");
if ($data = $query->fetch_array() && password_verify($password, $data['password'])) {
$_SESSION['collaboratore'] = $data['ID_Collaboratore'];
?>
<script type="text/javascript">
window.location = "home.php";
</script>
<?php
} else {
$messaggio = "Please check your inputs!";
}
}
?>
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报