У меня проблема с одной-единственной страничкой РНР. Сама страничка заключается в том, чтобы залогинить юзера по 1 полю. Юзеры есть обычные, а есть админы. В базе хранятся 2 админа - Myskovets и 777. Помогите разобраться, почему хедер не шлётся после успеха (или почему это неправильные пароли). Вот код всей странички вместе с НТМL: PHP: <?php ob_start(); session_start(); if (isset($_POST['tel'])) { $connection = new mysqli('localhost', 'root', '', 'economia') or die; $query = 'select id, admin from USER where pass="' . $_POST['tel'] . '";'; $row = $connection->query($query) or die; if ($row) { $row = $row->fetch_assoc() or die; $_SESSION['auth'] = 1; $_SESSION['admin'] = intval($row['admin']); header('Location: /katalog.php'); } else echo '<h3 style="color: red;">Неправильний пароль.</h3>'; } else ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href='https://fonts.googleapis.com/css?family=Cuprum|Russo+One|PT+Sans&subset=latin,cyrillic' rel='stylesheet' type='text/css'> <link rel="stylesheet" type="text/css" href="../styles/main.css"> <title>Economia | Авторизація</title> </head> <body> <?{?> <header> <div class="wraper"> <div id="logo"> <h1><a href="../index.php">ЕКОНОМ . І . Я </a></h1> </div> <menu> <li><a href="../index.php"><i class="fa fa-home"></i>На головну</a></li> <li><a href="../infa.php"><i class="fa fa-info-circle"></i>Інформація</a></li> <li><a href="../katalog.php"><i class="fa fa-folder-open-o"></i>Каталог</a></li> <li><a class="main-item" href="javascript:void(0);"><i class="fa fa-envelope-o"></i>Зв'язок із нами</a> <ul class="soc-menu"> <li><a href="#">Ми Вконтакті</a></li> <li><a href="#">Ми у facebook</a></li> </ul> </li> </menu> </div> </header> <div id="otstyp-a"></div> <!-- height:100px --> <div class="wraper"> <div> <h2>Авторизація</h2> <div class="auth"> <p> Введіть у поле пароль, який ви вказували в повідомленні про оплату, для того, щоб почати користуватись каталогом </p> <form method='POST' action = 'auth.php'> <input type='text' name='tel'> <input type='submit' value='Підключитись...'> </form> <p> В цілях безпеки номер необхідно буде вводити при кожному вході в каталог </p> </div><!-- /auth --> </div> </div> <?}?> </body> </html>
тоже нет... и данные пишутся в сессию, к базе коннектится, находит там таблицу... а в каталог все равно не заходит. Страница каталога: PHP: <?php session_start(); if ($_SESSION['auth']<>1) { header("Location: /auth/auth.php"); exit; } if (!isset($_GET['page'])) { $page = 'akcia'; } else { $page = addslashes(strip_tags(trim($_GET['page']))); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link href='https://fonts.googleapis.com/css?family=Cuprum|Russo+One|PT+Sans&subset=latin,cyrillic' rel='stylesheet' type='text/css'> <link rel="stylesheet" type="text/css" href="styles/main.css"> <meta name="keywords" content="Економія, СП, Вигідно, Якість" /> <meta name="author" content="hobbyart" /> <meta name="description" content="Сайт вигідних пропозицій" /> <title> Economia | Каталог </title> </head> <body> <!-- <header> <div class="wraper"> <div id="logo"> <h1><a href="index.php">ЕКОНОМ . І . Я </a></h1> </div> <menu> <li><a href="index.php"><i class="fa fa-home"></i>На головну</a></li> <li><a href="infa.php"><i class="fa fa-info-circle"></i>Інформація</a></li> <li><a href="katalog.php"><i class="fa fa-folder-open-o"></i>Каталог</a></li> <li><a class="main-item" href="javascript:void(0);"><i class="fa fa-envelope-o"></i>Зв'язок із нами</a> <ul class="soc-menu"> <li><a href="#">Ми Вконтакті</a></li> <li><a href="#">Ми у facebook</a></li> </ul> </li> </menu> </div> </header> --> <?php include 'parts/menu.php'; ?> <div class="katalog-menu"> <div class="wraper"> <li><a href="/katalog.php?page=akcia"><i class="fa fa-gift" aria-hidden="true"></i> Акції</a><div class="alt">Календар знижок, акції</div></li> <li><a href="/katalog.php?page=4ol_odag">Чоловічий розділ</a><div class="alt">Чоловічий одяг та взуття</div></li> <li><a href="/katalog.php?page=wom_odag">Жіночий розділ</a><div class="alt">Жіночий одяг та взуття</div></li> <li><a href="/katalog.php?page=child_odag">Дитячий розділ</a><div class="alt">Дитячий одяг та взуття</div></li> <li>|</li> <li><a href="/katalog.php?page=kanctovaru">Канцтовари</a><div class="alt">Канцтовари, шкільне приладдя</div></li> <li><a href="/katalog.php?page=bags_belts">Аксесуари</a><div class="alt">Сумки, годинники, пояси, біжутерія</div></li> <li><a href="/katalog.php?page=kosmetic">Косметика</a><div class="alt">Косметика, парфуми</div></li> <li><a href="/katalog.php?page=underwear">Білизна</a><div class="alt">Спідня білизна</div></li> </div> </div> <div id="otstyp-a"></div> <!-- height:100px --> <div class="wraper"> <?php include ('katalog/'.$page.'.php');?> <div class="clearfix"></div><!-- /clearfix --> </div> <?php include ('parts/footer.php');?> </body> </html>
Вы попутали успешный результат запроса с успешной выборкой строки. --- Добавлено --- Не надо так делать, чтобы «не делать мозги» себе и окружающим: PHP: $row = $row-> --- Добавлено --- ...хотя у fetch_assoc и присутствует or die.
Код (Text): $dbh = new PDO('mysql: host=127.0.0.1; dbname=root', 'root', ''); function userVerify($login, $dbh){ $sth = $dbh->prepare('SELECT `pass` FROM `users` WHERE `admin`= :login'); if($sth->execute([':login' => $login])){ return $sth->fetchAll()[0]['pass']; } else { return false; } } // Для DB password_hash(1234, PASSWORD_DEFAULT); // Проверка, легкая, но лучше чем была if(password_verify(1234, userVerify('ololo', $dbh))){ $_SESSION['status'] = 'admin'; } else { die('Пошел от сюда Либовский'); } // Для страниц if($_SESSION['status'] !== 'admin'){ die('Пошел от сюда Либовский'); } Это не грандиозная проверка, но с твоими задачами справится. Тебе даже база данных тут не нужна.
могу попробовать исправить скрипт, если он ещё не исправлен, подключившись к вашему пк через тимвьюер