@lemonlimelike

Объясните пару строк кода, что они делают?

if (isset($_POST['auth_name']))
{
    $sql = "SELECT * FROM users WHERE name=?s";
    $row = $db->getRow($sql, $_POST['auth_name']);
    if ($row && password_verify($_POST['auth_pass'], $row['pass'])) {
        $_SESSION['user_id'] = $row['id'];
    }
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    exit;
}

if (isset($_GET['action']) AND $_GET['action']=="logout") {
    session_start();
    session_destroy();
    header("Location: http://".$_SERVER['HTTP_HOST']."/");
    exit;
}


Что делает вот этот кусочек
if ($row && password_verify($_POST['auth_pass'], $row['pass'])) {
        $_SESSION['user_id'] = $row['id'];
    }
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    exit;
}


и вот это?
if (isset($_GET['action']) AND $_GET['action']=="logout") {
    session_start();
    session_destroy();
    header("Location: http://".$_SERVER['HTTP_HOST']."/");
    exit;
}
  • Вопрос задан
  • 262 просмотра
Пригласить эксперта
Ответы на вопрос 3
sergiks
@sergiks Куратор тега PHP
♬♬
if ($row && password_verify($_POST['auth_pass'], $row['pass'])) {

Здесь проверяется, оба ли выражения переводятся в логическое TRUE.
if( $a && $b) { выполнится если и $a и $b имеют значение TRUE или переводятся в него. Например "aaa" && "bbb". В вашем коде переменная $row и результат функции password_verify() должны быть не NULL, не FALSE, не 0, не пустой строкой.

if (isset($_GET['action']) AND $_GET['action']=="logout") {

Тут то же самое, если передан параметр action и он равен "logout". В PHP логические операторы && и AND – одно и то же. Единственное их отличие в приоритете выполнения по сравнению с другими операторами.
Ответ написан
Комментировать
blrik
@blrik
Музыкант
обычные проверки post и get запросов
Ответ написан
Комментировать
@ipokos
// Если существует в пост запросе auth_name выполняется код в условии 
if (isset($_POST['auth_name']))
{
    $sql = "SELECT * FROM users WHERE name=?s"; // Запрос SQL
    $row = $db->getRow($sql, $_POST['auth_name']); // выборка запроса с БД
// Если пароль пройдет проверку записывается значение в сессию
    if ($row && password_verify($_POST['auth_pass'], $row['pass'])) {
        $_SESSION['user_id'] = $row['id'];
    }
// редирект на страницу
    header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
// выход из скрипта
    exit;
}
// если в гет запросе есть action и он равен logout 
if (isset($_GET['action']) AND $_GET['action']=="logout") {
// убивается сессия и происходит редирект
    session_start();
    session_destroy();
    header("Location: http://".$_SERVER['HTTP_HOST']."/");
    exit;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы