Использование сеансов и переменных сеанса в скрипте входа PHP
Я только что закончил создание полной системы входа и регистрации в PHP, но моя проблема в том, что я еще не использовал никаких сеансов. Я в некотором роде новичок в PHP и никогда раньше не использовал сеансы. Что я хочу сделать, так это после того, как пользователь зарегистрируется и заполнит форму входа, он все равно останется на той же странице. Таким образом, будет одна часть, которая будет, если сеанс зарегистрирован_в, а другая часть будет другой (пользователь не вошел в систему, поэтому отобразите форму входа). Может ли кто-нибудь скажите мне, с чего начать?
8 answers
Надеюсь, это поможет:)
Начинается сеанс, вам нужно сказать это в верхней части страницы или перед вызовом кода сеанса
session_start();
Введите идентификатор пользователя в сеанс, чтобы отслеживать, кто вошел в систему
$_SESSION['user'] = $user_id;
Проверьте, вошел ли кто-нибудь в систему
if (isset($_SESSION['user'])) {
// logged in
} else {
// not logged in
}
Найдите идентификатор вошедшего в систему пользователя
$_SESSION['user']
Итак, на вашей странице
<?php
session_start();
if (isset($_SESSION['user'])) {
?>
logged in HTML and code here
<?php
} else {
?>
Not logged in HTML and code here
<?php
}
Вот самый простой код сеанса с использованием php. Мы используем 3 файла.
Login.php
<?php session_start(); ?> // session starts with the help of this function
<?php
if(isset($_SESSION['use'])) // Checking whether the session is already there or not if
// true then header redirect it to the home page directly
{
header("Location:home.php");
}
if(isset($_POST['login'])) // it checks whether the user clicked login button or not
{
$user = $_POST['user'];
$pass = $_POST['pass'];
if($user == "Ank" && $pass == "1234") // username is set to "Ank" and Password
{ // is 1234 by default
$_SESSION['use']=$user;
echo '<script type="text/javascript"> window.open("home.php","_self");</script>'; // On Successful Login redirects to home.php
}
else
{
echo "invalid UserName or Password";
}
}
?>
<html>
<head>
<title> Login Page </title>
</head>
<body>
<form action="" method="post">
<table width="200" border="0">
<tr>
<td> UserName</td>
<td> <input type="text" name="user" > </td>
</tr>
<tr>
<td> PassWord </td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<td> <input type="submit" name="login" value="LOGIN"></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
Home.php
<?php session_start(); ?>
<html>
<head>
<title> Home </title>
</head>
<body>
<?php
if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page
{
header("Location:Login.php");
}
echo $_SESSION['use'];
echo "Login Success";
echo "<a href='logout.php'> Logout</a> ";
?>
</body>
</html>
Logout.php
<?php
session_start();
echo "Logout Successfully ";
session_destroy(); // function that Destroys Session
header("Location: Login.php");
?>
Во-первых, документация PHP содержит некоторые отличная информация на сеансах .
Во-вторых, вам понадобится какой-то способ хранения учетных данных для каждого пользователя вашего веб-сайта (например, база данных). Рекомендуется не хранить пароли в виде читаемого человеком незашифрованного простого текста. При хранении паролей вы должны использовать PHP crypt()
функция хэширования. Это означает, что если какие-либо учетные данные будут скомпрометированы, пароли не будут легко доступно.
Большинство систем входа в систему хэшируют/зашифровывают пароль, который вводит пользователь, а затем сравнивают результат с хэшем в системе хранения (например, в базе данных) для соответствующего имени пользователя. Если хэш введенного пароля совпадает с сохраненным хэшем, пользователь ввел правильный пароль.
Вы можете использовать переменные сеанса для хранения информации о текущем состоянии пользователя, т.Е. Вошли ли они в систему или нет, и если да, то вы также можете сохранить их уникальный идентификатор пользователя или любой другой необходимая вам информация легко доступна.
Чтобы начать сеанс PHP, вам нужно позвонить session_start()
. Аналогично, чтобы уничтожить сеанс и его данные, вам нужно позвонить session_destroy()
( например, когда пользователь выходит из системы):
// Begin the session
session_start();
// Use session variables
$_SESSION['userid'] = $userid;
// E.g. find if the user is logged in
if($_SESSION['userid']) {
// Logged in
}
else {
// Not logged in
}
// Destroy the session
if($log_out)
session_destroy();
Я бы также рекомендовал вам взглянуть на это. Там есть хорошая, простая в использовании информация о создании простой системы входа в систему.
Я всегда делаю ООП и использую этот класс для поддержания сеанса, чтобы вы могли использовать функцию is_logged_in, чтобы проверить, вошел ли пользователь в систему или нет, и если нет, вы делаете то, что хотите.
<?php
class Session
{
private $logged_in=false;
public $user_id;
function __construct() {
session_start();
$this->check_login();
if($this->logged_in) {
// actions to take right away if user is logged in
} else {
// actions to take right away if user is not logged in
}
}
public function is_logged_in() {
return $this->logged_in;
}
public function login($user) {
// database should find user based on username/password
if($user){
$this->user_id = $_SESSION['user_id'] = $user->id;
$this->logged_in = true;
}
}
public function logout() {
unset($_SESSION['user_id']);
unset($this->user_id);
$this->logged_in = false;
}
private function check_login() {
if(isset($_SESSION['user_id'])) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}
}
$session = new Session();
?>
//start use session
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
Вам необходимо начать сеанс в верхней части страницы или перед вызовом кода сеанса
session_start();
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
} else {
echo "Invalid user and password";
header("Locatin:form.php")
}
if(isset($_SESSION['user']))
{
}