<?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();
}?>
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. почисти ее и потом уже присваивай только при удачной авторизации. а если ее не произошло то чисть эту переменную. если все равно будет отдавать запрещенные данные сново продампь.
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(нет)
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
надо избавитсья от ошибки. там написано что в первой строке выводятся данные и из-за этого в седьмой строке не может стартануть сессия. нет сесии - нет твоей переменной и соответственно нет авторизации.
поести функцию после старта сессии. сесиия должна стартовать раньше всего. в самом начале.
Добавлено 2010.10.11 15-18
Сесия по времени это когда ты пишешь в сессию не единицу а например
1 2
<?php $_SESSION['user'] = time();?>
а потом проверяешь
1 2 3
<?php if (!empty($_SESSION['user']) && $_SESSION['user'] > (time() - 300)) {
}?>
функция тайм просто записывает количество секунд с 1970 года)))
Дрюнь. А как запилить авторизацию на сайте разными пользователями? типо пилить $_SESSION[''. $_POST['login'] .'']? я вот просто логически не прошарю никак
ну так любая авторизация работает на разных пользователей. в сесию пишешь ид юзера который залогинился и дальше ко всем действиям привязываешь этот ид таким образом понимаю кто это совершгил и имеет ли он на это право)
ну так любая авторизация работает на разных пользователей. в сесию пишешь ид юзера который залогинился и дальше ко всем действиям привязываешь этот ид таким образом понимаю кто это совершгил и имеет ли он на это право)
спс, прошарил
Добавлено 2010.11.23 22-55
хмм. Нет не прошарил таки. А как тогда проверять id юзера, который уже "прошел авторизацию"?