• Реклама: 💰 Пополни свой портфель с минимальной комиссией на Transfer24.pro
  • Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"

Нужна помощь по сессиям - от А до Я

An27

МАСТЕР
Регистрация
03.07.2010
Сообщения
1,735
Реакции
614
Поинты
43.450
Пишу небольшой проект, нужна помощь по сессиям.
Часть первая:
Главная имеет обычный код, просто форма для авторизации:
PHP:
<html>
<head>
<title>Админка</title>
</head>

<body>

<?
echo '<form action="logh.php" method="post">
Введите логин: <input type="text" name="login"><br>
Ваш пароль: <input type="password" name="pass"><br>
<input type="submit" value="Вход в админку"></form>';

?>

</body>
</html>
Дальше страница logh.php, которая проверяет пароль. Например, логин и пароль admin:
PHP:
<?
session_start();
?>
<html>
<head><meta charset="utf-8"><title>Админка </title>

</head>

<body>
<?
$loger=$_POST['login'];
$para=$_POST['para'];

if ($loger=='admin' && $pass=="admin"){
$_SESSION['Login'] = 'YES';
echo 'что попало';
} else {
$_SESSION['Login']="NO";
echo 'не вошел. закрытая зона. ЧТобы войти <a href="index.php">вернитесь на главную</a>';
}
?>
</body>
</html>
И вот вопросы:
1) правильно ли я делаю session_start(); ?
2) правильный ли алгоритм проверки логина/пароля?

Все работает, но может подскажите на начальном этапе что не так? Спасибо.

p.s. Часть первая, потому что по мере написания проекта вопросы будут возникать и дальше :)
 

An27

МАСТЕР
Регистрация
03.07.2010
Сообщения
1,735
Реакции
614
Поинты
43.450

teslatoy

Новичок
Регистрация
16.10.2015
Сообщения
43
Реакции
5
Поинты
0.000
народ, если кто шарит, помогите пожалуйта советом, застрял:
Проблема: авторизация на сайте срабатывает, перекидывает на поддомен, на нем сессия сохраняется, а на сайте исчезает

.htaccess сайта содержит строки:
RewriteCond %{HTTP_HOST} ^www.site.com
RewriteRule (.*) http://site.com/$1 [R=301,L]
<IfModule mod_rewrite.c>
php_value session.cookie_domain ".site.com"
</IfModule>

.htaccess поддомена содержит строки:
<IfModule mod_php5.c>
RewriteCond %{HTTP_HOST} ^my.site.com
RewriteRule (.*) http://my.site.com/$1 [R=301,L]
</IfModule>
php_value session.cookie_domain ".site.com"

сайт на битриксе, кабинет на поддомене - самописный

в битриксе стоят галки в настройках модулей:
Распространять куки на все домены:
Использовать защищенное хранение авторизации в cookies:
Распространять авторизацию на все домены:

в настройах сайта указаны доменные имена:
site.com
my.site.com
 

dkameleon

МАСТЕР
Регистрация
14.12.2006
Сообщения
4,237
Реакции
3,167
Поинты
0.000
:
1) правильно ли я делаю session_start(); ?
2) правильный ли алгоритм проверки логина/пароля?
1. правильно.
2. неправильно.


Проблема: авторизация на сайте срабатывает, перекидывает на поддомен, на нем сессия сохраняется, а на сайте исчезает
изучите детали самой куки, которая создается.
странно, что битрикс её создает и сам не видит.

попробуйте убрать ваши настройки из хтацесса - пускай битрикс сам делает обработку. должен бы уметь.
 

teslatoy

Новичок
Регистрация
16.10.2015
Сообщения
43
Реакции
5
Поинты
0.000
изучите детали самой куки, которая создается.
странно, что битрикс её создает и сам не видит.

попробуйте убрать ваши настройки из хтацесса - пускай битрикс сам делает обработку. должен бы уметь.

Спасибо большое, буду пробовать.:i-yes:
 

An27

МАСТЕР
Регистрация
03.07.2010
Сообщения
1,735
Реакции
614
Поинты
43.450
2. неправильно.
Пускай даже если с базы тяну. Дело не в этом.
А сам алгоритм. Сверяю логин и пароль - и если они совпадают: пускаю, если нет - не пускаю.
Проблема в условии (if ($loger=='admin' && $pass=="admin")) или в $_SESSION['Login']?

Спасибо.
 

dkameleon

МАСТЕР
Регистрация
14.12.2006
Сообщения
4,237
Реакции
3,167
Поинты
0.000

An27

МАСТЕР
Регистрация
03.07.2010
Сообщения
1,735
Реакции
614
Поинты
43.450

dkameleon

МАСТЕР
Регистрация
14.12.2006
Сообщения
4,237
Реакции
3,167
Поинты
0.000
Да, замечал такую проблему. Нужно алгоритм (если авторизированный) в начале страницы помещать, после session_start?
нужно проверять, что происходит ПОСТ запрос
 

An27

МАСТЕР
Регистрация
03.07.2010
Сообщения
1,735
Реакции
614
Поинты
43.450

ARRAY97

Новичок
Регистрация
10.12.2012
Сообщения
286
Реакции
124
Поинты
0.000
Не мешало бы проверять POST переменные на isset, на поздних версиях php это уже вроде как обязалово.

- а ещё значение переменной $pass не присвоено, нужно поменять $para=$_POST['para']; на $pass=md5($_POST['para']);

- и конечно пароли лучше хранить в хеше

<?

if (isset($_POST['login']) && isset($_POST['para'])){

$loger=$_POST['login'];
$para=md5($_POST['para']);

if ($loger=='admin' && $pass=="admin"){
$_SESSION['Login'] = 'YES';
echo 'что попало';
} else {
$_SESSION['Login']="NO";
echo 'не вошел. закрытая зона. ЧТобы войти <a href="index.php">вернитесь на главную</a>';
}
}
?>
 
Последнее редактирование:

dkameleon

МАСТЕР
Регистрация
14.12.2006
Сообщения
4,237
Реакции
3,167
Поинты
0.000

An27

МАСТЕР
Регистрация
03.07.2010
Сообщения
1,735
Реакции
614
Поинты
43.450
Извините за вопрос, но где должен быть этот код? То есть строка проверки алгоритма? На странице проверки данных логина/пароля, на всех страницах, где есть сессии? И еще, до начала сессий, или после:
Код:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo 'скрытый текст кабинета';
}
 

dkameleon

МАСТЕР
Регистрация
14.12.2006
Сообщения
4,237
Реакции
3,167
Поинты
0.000
PHP:
 <?
session_start();
?>
<html>
<head><meta charset="utf-8"><title>Админка </title>

</head>

<body>
<?
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$loger=$_POST['login'];
$para=$_POST['para'];

if ($loger=='admin' && $pass=="admin"){
$_SESSION['Login'] = 'YES';
echo 'что попало';
} else {
$_SESSION['Login']="NO";
echo 'не вошел. закрытая зона. ЧТобы войти <a href="index.php">вернитесь на главную</a>';
}
}

if ($_SESSION['Login'] == 'YES') {
echo 'здесь выводим админку';
}
?>
</body>
</html>

приблизительно так.
 
  • Like
Реакции: An27

An27

МАСТЕР
Регистрация
03.07.2010
Сообщения
1,735
Реакции
614
Поинты
43.450
Сверху Снизу