Гриша К.
Новичок
session_start() в заголовке всех страниц + 2 раз еще на одной странице. Моё решение.?
Здравствуйте.
Вот такой пример, авторизации пользователя, и запуска сессий.
Есть файл к примеру 'header.php', в котором есть строка:
if (isset($_REQUEST[session_name()])) session_start();
Этот файл я затем вставляю в начало всех остальных файлов использую include(header.php);
-----------------
Авторизация
-----------------
Когда пользователь вводит имя пользователя и логин, и нажимает кнопку "Войти", он попадает на страницу к примеру 'member.php'
Вот примерный ее код ('member.php'):
Из приведенного кода получается, что когда пользователь попадает на эту страницу, для него стартует сессия, если введенные им данные верны, то переменной сеанса $_SESSION['valid_user'] я присваиваю его имя.
Когда например пользователь заходит, на другую страницу,
так как в заголовке страницы стоит такое условие
if (isset($_REQUEST[session_name()])) session_start();, то стартует сессия.
А теперь, если пользователь после авторизации заходит опять на страницу 'member.php', получается session_start() у меня выполняется два раза, я конечно вижу что все работает, но как -то это не корректно.
Я решил на странице 'member.php', стартовать сессию только в том случае, если $_REQUEST[session_name()]) пустая, добавив на страницу условие
if (!isset($_REQUEST[session_name()])) session_start();
В итоге страница 'member.php' у меня получается такая
Я посмотрел, что все работает, у условие действительно выполняется, когда нужно, но незнаю нормально ли это.
Допустим ли такой вариант.
-------------------------------------
Я еще также попробовал делать так, на одной странице:
session_start();
echo $_REQUEST[session_name()].' ';
session_start();
echo $_REQUEST[session_name()].' ';
session_start();
echo $_REQUEST[session_name()];
Результат один и тотже:
9a4ecd4244b5e46fc0fdb13792f926c8 9a4ecd4244b5e46fc0fdb13792f926c8 9a4ecd4244b5e46fc0fdb13792f926c8
Вот подумал, что если на одной странице session_start() вызывается 2 раза, то это допустимо что ли?
Здравствуйте.
Вот такой пример, авторизации пользователя, и запуска сессий.
Есть файл к примеру 'header.php', в котором есть строка:
if (isset($_REQUEST[session_name()])) session_start();
Этот файл я затем вставляю в начало всех остальных файлов использую include(header.php);
-----------------
Авторизация
-----------------
Когда пользователь вводит имя пользователя и логин, и нажимает кнопку "Войти", он попадает на страницу к примеру 'member.php'
Вот примерный ее код ('member.php'):
PHP:
<?php
include(header.php);
session_start();
if ($username && $passwd) {
if (login($username, $passwd)) {
$_SESSION['valid_user'] = $username;
}
}
?>
Когда например пользователь заходит, на другую страницу,
так как в заголовке страницы стоит такое условие
if (isset($_REQUEST[session_name()])) session_start();, то стартует сессия.
А теперь, если пользователь после авторизации заходит опять на страницу 'member.php', получается session_start() у меня выполняется два раза, я конечно вижу что все работает, но как -то это не корректно.
Я решил на странице 'member.php', стартовать сессию только в том случае, если $_REQUEST[session_name()]) пустая, добавив на страницу условие
if (!isset($_REQUEST[session_name()])) session_start();
В итоге страница 'member.php' у меня получается такая
PHP:
<?php
include(header.php);
if ($username && $passwd) {
if (login($username, $passwd)) {
//Вот сюда я решил поставить это условие
if (!isset($_REQUEST[session_name()])) session_start();
$_SESSION['valid_user'] = $username;
}
}
?>
Допустим ли такой вариант.
-------------------------------------
Я еще также попробовал делать так, на одной странице:
session_start();
echo $_REQUEST[session_name()].' ';
session_start();
echo $_REQUEST[session_name()].' ';
session_start();
echo $_REQUEST[session_name()];
Результат один и тотже:
9a4ecd4244b5e46fc0fdb13792f926c8 9a4ecd4244b5e46fc0fdb13792f926c8 9a4ecd4244b5e46fc0fdb13792f926c8
Вот подумал, что если на одной странице session_start() вызывается 2 раза, то это допустимо что ли?