Да, есть простой способ проверить, зарегистрирован ли пользователь, и наилучшим способом является использование суперклапана $_SESSION
. Когда вы используете сеанс superglobal, вы в основном сохраняете информацию на сервере о конкретном пользователе и в то же время сохраняете файл cookie на компьютере пользователя, который однозначно идентифицирует его, пока сессия действительна (обычно 30 минут) , На простом английском языке разработчики php создали суперглобальный компонент, который в основном упростил бы разработчикам «поддерживать состояние» без необходимости делать экстремальные количества кода.
Вот как вы бы использовали сеанс суперглобала. В верхней части каждой страницы вашего сайта, вы бы эту часть кода (даже выше <!DOCTYPE html>
):
<?php session_start(); ?>
Что это делает (среди многих других вещей) является сохранение куки на компьютере пользователя, идентифицирующую он однозначно, пока сессия действительна. СЕЙЧАС ... на странице, что пользователь вводит после входа в систему, вы бы код, подобный следующему:
<?php
$username = $_POST['username'];//obtaining username from form
$password = $_POST['password'];//obtaining password from form
// i did not include any encryption code in this example
// so that the example is easier to understand, but keep in mind
// that encrypting your users passwords is super important
//for security reasons, I used prepared statements and binding parameters
//to compare the password and username obtained from the form with
//those in the database (in order to prevent sql injection):
$sql = "SELECT 1 FROM users WHERE username = :username AND password = :password LIMIT 1";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
if ($stmt->rowCount()>0)//if a row was found, then you know this user exists
{
//here I am saving information in the session super global that
//can be used to not only identify if a user is logged in on each
//page, but also to see which user is logged in, since often
//you want to give a user his own control panel or other features.
$_SESSION['authenticated'] = TRUE;
$_SESSION['username'] = htmlspecialchars($username);
}
?>
Теперь на каждой странице, что у вас есть, вы бы включать следующий код:
<?php
if (isset($_SESSION['authenticated']))
{
echo "Hello there ".$_SESSION['username']."!<br>";
}
?>
Предыдущий код затем повторяет что-то вроде «Привет, Джон!». если имя пользователя было John. Отсюда вы можете включить любой код, который вы хотите, в те скобки, которые вы только хотите, чтобы пользователи вошли в систему, чтобы видеть ТАК ПОЛЬЗОВАТЕЛЕЙ, которые не вошли в систему, поэтому не смогут просматривать эту часть веб-сайта, даже если они будут видеть сайты логотип и все остальное, что не находится внутри условия if. Кроме того, предыдущий код не должен быть на самом верху, должен быть только <?php session_start(); ?>
, и это связано с тем, как работает протокол HTTP.
Сообщите мне, если это поможет или у вас возникнут другие вопросы.
Опубликовано это ее: http://stackoverflow.com/questions/37234576/php-setting-the-session-information-in-a-cookie-wont-be-keep-after-page-reload – Munsterlander
@Paul помог мне? – Webeng