Ответить
При таком варианте:
Все равно, если вбиваешь адрес, страница открывается
Выводит:
И отправляет на авторизацию
Значит тут:
не присваивает?
Добавлено 2010.10.11 14-53
Если в последнем прописать session_start();
То показывает страницу. Но опять же с ошибкой
спс, прошарил
Добавлено 2010.11.23 22-55
хмм. Нет не прошарил таки. А как тогда проверять id юзера, который уже "прошел авторизацию"?
Работа с сессиями
Отправлено: 11 Окт 2010#11
Code:
Array
(
[user] => 1
)
(
[user] => 1
)
1
2
<?php Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\91.210.178.27\www\krich\SMARTY\sk-admin\php\sess_test.php:1) in Z:\home\91.210.178.27\www\krich\SMARTY\sk-admin\php\sess_test.php on line 7?>
При таком варианте:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php function pr($data) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
session_start();
if ($_SESSION['user']=1) // проверяем сессию (вот думаю, стоит ли приписывать isset?)
{
pr($_SESSION);
} // просто показываем содержимое страницы, так как юзер получил правильный ключ
else
{
echo "Пройдите авторизацию: <a href=\"index.php\"> Авторизация </a>"; // Отправляем на авторизацию
exit();
}?>
Отправлено: 11 Окт 2010#12
))) сделай не
а
в первом случае ты не проверяещь значение а присваиваешь его
1
2
<?php if ($_SESSION['user']=1)?>
1
2
<?php if ($_SESSION['user'] == 1)?>
в первом случае ты не проверяещь значение а присваиваешь его
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 11 Окт 2010#13
Code:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\91.210.178.27\www\krich\SMARTY\sk-admin\php\sess_test.php:1) in Z:\home\91.210.178.27\www\krich\SMARTY\sk-admin\php\sess_test.php on line 7
Все равно, если вбиваешь адрес, страница открывается
Отправлено: 11 Окт 2010#14
так ты почисть сессию. у тебя там могло остаться значение 1. почисти ее и потом уже присваивай только при удачной авторизации. а если ее не произошло то чисть эту переменную. если все равно будет отдавать запрещенные данные сново продампь.
такая проверка пропустить только если $_SESSION['user'] будет равно 1 и никак иначе оно не пропустит
можно сделать еще так
но тогда и присваивать значение надо только так
три равно означает что сверка будет идти еще и по типу.
например
'1' == 1 TRUE(ДА)
'1' === 1 FALSE(нет)
1
2
3
<?php if ($_SESSION['user'] == 1){
}?>
такая проверка пропустить только если $_SESSION['user'] будет равно 1 и никак иначе оно не пропустит
можно сделать еще так
1
2
3
<?php if ($_SESSION['user'] === 1){
}?>
1
2
<?php $_SESSION['user'] = 1;?>
например
'1' == 1 TRUE(ДА)
'1' === 1 FALSE(нет)
Отредактировано автором 11 Окт 2010
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 11 Окт 2010#15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php function pr($data) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
session_start();
if ($_SESSION['user'] == 1) // проверяем сессию (вот думаю, стоит ли приписывать isset?)
{
pr($_SESSION);
} // просто показываем содержимое страницы, так как юзер получил правильный ключ
else
{
echo "Пройдите авторизацию: <a href=\"index.php\"> Авторизация </a>"; // Отправляем на авторизацию
exit();
}?>
Выводит:
Code:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\91.210.178.27\www\krich\SMARTY\sk-admin\php\sess_test.php:1) in Z:\home\91.210.178.27\www\krich\SMARTY\sk-admin\php\sess_test.php on line 7
И отправляет на авторизацию
Значит тут:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php <?php
function pr($data) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
error_reporting(E_ALL);
include ('mysql_conf.php');
if( preg_match('#^[a-z, A-Z, 0-9, _, -]+$#', $_POST['login'])) {
if( preg_match('#^[a-z, A-Z, 0-9, _, -]+$#', $_POST['password'])) {
//var_dump($users_tb);
$q = mysql_query("SELECT * FROM `". $users_tb ."` WHERE `password`='".$_POST['password'] ."' AND `login`='".$_POST['login'] ."' LIMIT 1 ");
if (mysql_num_rows($q) > 0) {
$result = mysql_fetch_array($q);
$_SESSION['user'] = 1;
header("Location: ../main.php");
die();
}
else {
//unset($_SESSION['user']);
echo "Такие пара логина и пароля найдены не были <br/> <a href=\"../index.php\"> На авторизацию </a>";
// отправляем обратно на авторизацию
die();
}
}
else {
die("Вы ввели недопустимые символы. <br/> <a href=\"../index.php\"> На авторизацию </a>");
}
}
else {
die("Вы ввели недопустимые символы. <br/> <a href=\"../index.php\"> На авторизацию </a>");
}?>
не присваивает?
Добавлено 2010.10.11 14-53
Если в последнем прописать session_start();
То показывает страницу. Но опять же с ошибкой
Отправлено: 11 Окт 2010#16
надо избавитсья от ошибки. там написано что в первой строке выводятся данные и из-за этого в седьмой строке не может стартануть сессия. нет сесии - нет твоей переменной и соответственно нет авторизации.
поести функцию после старта сессии. сесиия должна стартовать раньше всего. в самом начале.
Добавлено 2010.10.11 15-18
Сесия по времени это когда ты пишешь в сессию не единицу а например
а потом проверяешь
функция тайм просто записывает количество секунд с 1970 года)))
поести функцию после старта сессии. сесиия должна стартовать раньше всего. в самом начале.
Добавлено 2010.10.11 15-18
Сесия по времени это когда ты пишешь в сессию не единицу а например
1
2
<?php $_SESSION['user'] = time();?>
а потом проверяешь
1
2
3
<?php if (!empty($_SESSION['user']) && $_SESSION['user'] > (time() - 300)) {
}?>
функция тайм просто записывает количество секунд с 1970 года)))
Отредактировано автором 11 Окт 2010
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 22 Ноя 2010#17
Дрюнь. А как запилить авторизацию на сайте разными пользователями? типо пилить $_SESSION[''. $_POST['login'] .'']? я вот просто логически не прошарю никак
Отправлено: 22 Ноя 2010#18
ну так любая авторизация работает на разных пользователей. в сесию пишешь ид юзера который залогинился и дальше ко всем действиям привязываешь этот ид таким образом понимаю кто это совершгил и имеет ли он на это право)
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 23 Ноя 2010#19
Цитата
ну так любая авторизация работает на разных пользователей. в сесию пишешь ид юзера который залогинился и дальше ко всем действиям привязываешь этот ид таким образом понимаю кто это совершгил и имеет ли он на это право)
Добавлено 2010.11.23 22-55
хмм. Нет не прошарил таки. А как тогда проверять id юзера, который уже "прошел авторизацию"?
Отредактировано автором 23 Ноя 2010
Отправлено: 24 Ноя 2010#20
ну так ты же в сессию его данные засунешь, там и ИД будет. Например
1
2
3
4
<?php $_SESSION['user']['id']
$_SESSION['user']['name']
$_SESSION['user']['pass']
//и тд?>
Я горжусь тем, что создал . И люблю нашу команду)
Зарегистрируйтесь или авторизуйтесь что бы писать
Сейчас online: 3. Зарегистрированных: 0. Гостей: 3.

