Как проверить, вошел ли пользователь в php?

Я довольно новичок в php, и я пытаюсь выяснить, как использовать сеансы для проверки и проверить, зарегистрирован ли пользователь на веб-сайте, чтобы у них было разрешение на доступ к определенным страницам.

Является ли это чем-то сложным или это потому, что я ноб, что я не могу понять это?

Спасибо за помощь!

Логины не слишком сложны, но есть некоторые конкретные части, которые необходимы практически для всех процессов входа в систему.

Во-первых, убедитесь, что вы включили переменную сеанса на всех страницах, для которых требуется знание состояния входа в систему, поставив это в начале этих страниц:

session_start(); 

Затем, когда пользователь отправляет свое имя пользователя и пароль с помощью формы входа, вы обычно проверяете свое имя пользователя и пароль, запрашивая базу данных, содержащую информацию о имени пользователя и пароле, такую ​​как MySQL. Если база данных возвращает совпадение, вы можете установить переменную сеанса, чтобы она содержала этот факт. Вы также можете указать другую информацию:

 if (match_found_in_database()) { $_SESSION['loggedin'] = true; $_SESSION['username'] = $username; // $username coming from the form, such as $_POST['username'] // something like this is optional, of course } 

Затем на странице, которая зависит от состояния входа в систему, поставьте следующее (не забудьте session_start() ):

 if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) { echo "Welcome to the member's area, " . $_SESSION['username'] . "!"; } else { echo "Please log in first to see this page."; } 

Это основные компоненты. Если вам нужна помощь в аспекте SQL, в сети есть учебные пособия.

В Login.html:

 <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Login Form</title> </head> <body> <section class="container"> <div class="login"> <h1>Login</h1> <form method="post" action="login.php"> <p><input type="text" name="username" value="" placeholder="Username"></p> <p><input type="password" name="password" value="" placeholder="Password"></p> <p class="submit"><input type="submit" name="commit" value="Login"></p> </form> </div> </body> </html> 

В Login.php:

 <?php $host="localhost"; // Host name $username=""; // Mysql username $password=""; // Mysql password $db_name=""; // Database name $tbl_name="members"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // username and password sent from form $username=$_POST['username']; $password=$_POST['password']; // To protect MySQL injection (more detail about MySQL injection) $username = stripslashes($username); $password = stripslashes($password); $username = mysql_real_escape_string($username); $password = mysql_real_escape_string($password); $sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $username and $password, table row must be 1 row if($count==1){ session_start(); $_SESSION['loggedin'] = true; $_SESSION['username'] = $username; } 

В Member.php:

 session_start(); if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) { echo "Welcome to the member's area, " . $_SESSION['username'] . "!"; } else { echo "Please log in first to see this page."; } 

В MYSQL:

 CREATE TABLE `members` ( `id` int(4) NOT NULL auto_increment, `username` varchar(65) NOT NULL default '', `password` varchar(65) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=2 ; 

В Register.html:

 <html> <head> <title>Sign-Up</title> </head> <body id="body-color"> <div id="Sign-Up"> <fieldset style="width:30%"><legend>Registration Form</legend> <table border="0"> <form method="POST" action="register.php"> <tr> <td>UserName</td><td> <input type="text" name="username"></td> </tr> <tr> <td>Password</td><td> <input type="password" name="password"></td> </tr> <tr> <td><input id="button" type="submit" name="submit" value="Sign-Up"></td> </tr> </form> </table> </fieldset> </div> </body> </html> 

В Register.php:

 <?php define('DB_HOST', ''); define('DB_NAME', ''); define('DB_USER',''); define('DB_PASSWORD',''); $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); $userName = $_POST['username']; $password = $_POST['password']; $query = "INSERT INTO members (username,password) VALUES ('$userName','$password')"; $data = mysql_query ($query)or die(mysql_error()); if($data) { echo "YOUR REGISTRATION IS COMPLETED..."; } else { echo "Unknown Error!" } 

Любая страница, на которой вы хотите выполнить сеансовые проверки, должна начинаться с:

 session_start(); 

Оттуда вы проверяете свой массив сеансов для переменной, указывающей, что они вошли в систему:

 if (!$_SESSION["loggedIn"]) redirect_to_login(); 

Вход в них – это не что иное, как установка этого значения:

 $_SESSION["loggedIn"] = true; 
 else if (isset($_GET['actie']) && $_GET['actie']== "aanmelden"){ $username= $_POST['username']; $password= md5($_POST['password']); $query = "SELECT password FROM tbl WHERE username = '$username'"; $result= mysql_query($query); $row= mysql_fetch_array($result); if($password == $row['password']){ session_start(); $_SESSION['logged in'] = true; echo "Logged in"; } } 

См. Этот скрипт для регистрации. Просто и очень легко понять.

 <?php define('DB_HOST', 'Your Host[Could be localhost or also a website]'); define('DB_NAME', 'databasename'); define('DB_USERNAME', 'Username[In many cases root but some sites offer MySql Page where the username might be different]'); define('DB_PASSWORD', 'whatever you keep[if username is root then 99% password is blank]'); $link = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD); if (!$link) { die('Could not connect line 9'); } $DB_SELECT = mysql_select_db(DB_NAME, $link); if (!$DB_SELECT) { die('Could not connect line 15'); } $valueone = $_POST['name']; $valuetwo = $_POST['last_name']; $valuethree = $_POST['email']; $valuefour = $_POST['password']; $valuefive = $_POST['age']; $sqlone = "INSERT INTO user (name, last_name, email, password, age) VALUES ('$valueone','$valuetwo','$valuethree','$valuefour','$valuefive')"; if (!mysql_query($sqlone)) { die('Could not connect name line 33'); } mysql_close(); ?> 

Убедитесь, что вы делаете всю базу данных с помощью phpMyAdmin. Это очень простой инструмент для работы. Вы можете найти его здесь: http://www.phpmyadmin.net/home_page/index.php

 <?php session_start(); if(!isset($_SESSION["login"]) && $SESSION["login"] =="OK")){ header("Location: index.php"); exit; ?> 

Необходимость на всех страницах перед проверкой текущих сеансов

 session_start(); 

Проверьте, если $ _SESSION ["loggedIn"] ( is not ) true – если нет, перенаправляйте их на страницу входа.

 if($_SESSION["loggedIn"] != true){ //echo 'not logged in'; header("Location: login.php"); exit; 

}