Я пытаюсь создать сеанс регистрации из html-формы, которая отправляет данные в db mysql, проверяет учетные данные и запускает сеанс для каждой страницы, которую посетит пользователь.
Проблема в том, что я видел только
<?php
session_start();
if (!isset($_SESSION["login"]) || $_SESSION["login"] == "")
header("");
else
header("Location:login.php");
?>
<html>
<body>
...
<\body>
<\html>
но мне не нравится иметь php-код вместе с html. На самом деле у меня есть папка со всеми файлами php, есть ли способ зарегистрироваться таким образом?
Если вы хотите защитить свои файлы, вам необходимо сохранить эти файлы как php. Однако вы можете разделить php-код в другом файле и включить этот файл в начало ваших основных php файлов, таких как require_once ("system_work.php"); в system_work.php вы можете обрабатывать переменные входа и проверки сессий, если они существуют, или нет, а затем решить, хотите ли вы выйти из этой страницы или позволить пользователю оставаться там.
У меня есть сценарий входа в систему на Codecanyon https://codecanyon.net/item/php-login-user-management-with-message-center/5862673. Я собираюсь поделиться кодом, как работает его логин.
Обратите внимание, что сеансы не могут работать в html файле, поэтому, если вы хотите защитить файл, этот файл должен быть HTML. Отсутствие безопасности на стороне сервера невозможно. Однако вы можете сохранить cookie через php и получить доступ к cookie с помощью JavaScript и сделать проверку с помощью JavaScript, но этот relaly небезопасный способ сделать это.
В dashboard.php у меня есть следующий код
<?php
include('system_load.php');
//Including this file we load system.
/*
Logout function if called.
*/
if(isset($_GET['logout']) && $_GET['logout'] == 1) {
session_destroy();
HEADER('LOCATION: '.get_option('redirect_on_logout'));
exit();
} //Logout done.
//user Authentication.
authenticate_user('admin');
$page_title = $label_obj->label('dashboard_title'); //You can edit this to change your page title.
require_once("includes/header.php"); //including header file.
?>
После того, как этот код является телом, который также находится после заголовка, нижний колонтитул включен таким же образом. Теперь см. Файл system_load.php, который включает все остальные классы, файлы функций и информацию о сеансах. Я также поделюсь с вами кодом этого файла.
system_load.php
<?php
session_start();
/*This file loads system to do basic functions on the site, Please do not change anything here if you dont know what you are doing.*/
include('includes/db_connect.php');
include('includes/functions.php');
//Redirecting to installation wizard if not installed already.
global $db;
//Checks if options exist and installation is complete.
$val = $db->query('SELECT 1 from notes');
if($val == FALSE) {
HEADER("LOCATION: install.php");
}
include('includes/update.php');
//Session signout after session timeout.
if(isset($_SESSION['timeout'])) {
if ($_SESSION['timeout'] + get_option('session_timeout') * 60 < time()) {
session_destroy();
HEADER('LOCATION: '.get_option('redirect_on_logout'));
exit();
}
}
//Adding Language.
include('classes/labels.php');
include('classes/users.php');
include('classes/userlevel.php');
include('classes/notes.php');
include('classes/messages.php');
include('classes/announcements.php');
$label_obj = new WebsiteLabels;
$new_user = new Users;
if(isset($_SESSION['user_id'])):
$new_user = new Users;
$user_status = $new_user->get_user_info($_SESSION['user_id'], 'status');
if($user_status == 'ban' || $user_status == 'deactivate' || $user_status == 'suspend') {
session_destroy();
HEADER('LOCATION: index.php');
}
$message_obj = new Messages;
$new_level = new Userlevel;
$notes_obj = new Notes;
$announcement_obj = new Announcements;
if($new_user->get_user_info($_SESSION['user_id'], 'profile_image') == '') {
$profile_img = 'images/thumb.png';
} else {
$profile_img = $new_user->get_user_info($_SESSION['user_id'], 'profile_image');
}
endif;
Дайте мне знать, если это даст вам представление о том, как вы можете продолжить, вы также можете задать мне дополнительный код файла, если вам нужно, я могу поделиться им.
require_once