Если логин admin и пароль 12345, то выводится надпись "Вы имеете права админа".
Но при запуске почему-то постоянно вылезает ошибка, которая указывает на функцию session_start а при нажатии на ссылку "Выход" ошибка указывает на session_destroy()!
Вот текст ошибки:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/htdocs/site.ru/php/session3.php:5) in /home/www/htdocs/site.ru/php/session3.php on line 19
Вдобавок после ввода логина и пароля надпись "Привет, имя!" есть но стоит только нажать на ссылку "Обновить страницу", как имя пропадает((( Как я полагаю происходит удаление переменной $_SESSION['name'].
Не подскажите почему? Что в скрипте не так?
<html>
<head><title>работа с ссессиями</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Name: <input name="name" type="text" value="<?php echo $_POST['name']; ?>">
<br>Password: <input name="password" type="password" value="<?php echo $_POST['password']; ?>">
<br><input type="submit" name="submit">
</form>
</body>
</html>
<?php
if($_GET['logout']==1){
session_destroy();
echo "Вы вышли";
}
else{
session_start();
if(!isset($_SESSION['counter'])){$_SESSION['counter']=0; }
if(!isset($_SESSION['name'])){$_SESSION['name']=$_POST['name'];}
if(!isset($_SESSION['password'])){$_SESSION['password']=$_POST['password'];}
if($_POST['name']=="admin" AND $_POST['password']=="12345")
{
$_SESSION['right']="admin"; // задаем права админа, если были введены логин и пароль админа
}
else{$_SESSION['right']="user";}
echo "<br>Hello,".$_SESSION['name']."!";
echo "Ты обновил эту страницу ".$_SESSION['counter']++." раз"; // считаем сколько раз была обновлена страница пользователем
if($_SESSION['right']=="admin"){echo "<br><b>Вы имеете права админа!</b>";}
echo "<br><br><a href=".$_SERVER['PHP_SELF'].">обновить</a>";
echo"<br><br><a href=".$_SERVER['PHP_SELF']."?logout=1>Выйти</a>";
}
?>
Спустя 1 час, 44 минуты, 23 секунды (30.01.2010 - 17:36) Stuff_f написал(а):
ошибку спрячь знаком -> @ в конце кода сделай flash(); поидеи должно работать!!!!!! ,
т.е сделай так @session_start();
т.е сделай так @session_start();
Спустя 35 минут, 53 секунды (30.01.2010 - 18:12) ak167 написал(а):
Stuff_f, ошибку то я конечно спрячу, но мне интересно из-за чего она вылезает?
Что делает функция flash()? Че-то я не нашел про это в интернете.
Что делает функция flash()? Че-то я не нашел про это в интернете.
Спустя 20 минут, 3 секунды (30.01.2010 - 18:32) Stuff_f написал(а):
ты попробуй а потом по иши, flush () как бы обновление, а почему ошибка вылетает при использовании хз пишет в твоей ошибке то что
Cannot send session cache limiter - headers already sent
типо привышен лимит, и уже отправлены headerы так что ошибка уберется и все будет тип топ
Cannot send session cache limiter - headers already sent
типо привышен лимит, и уже отправлены headerы так что ошибка уберется и все будет тип топ
Спустя 1 час, 59 минут, 51 секунда (30.01.2010 - 20:32) ak167 написал(а):
Все! Я уже сам разобрался))) Просто session_start() нужно было ставить в самый верх скрипта, тогда сообщения об ошибке не будут вылетать.
А имя не сохранялось из-за ошибке в алгоритме скрипта. Теперь я его переделал и все работает!
Если кому интересно, вот рабочий вариант:
А имя не сохранялось из-за ошибке в алгоритме скрипта. Теперь я его переделал и все работает!
Если кому интересно, вот рабочий вариант:
<?php
session_start();
if(!$_POST['sent'] AND !$_GET['go'])
{
?>
<html>
<head><title>работа с ссессиями</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="sent" value="1">
Имя: <input name="name" type="text" value="<?php echo $_POST['name']; ?>">
<br>Пароль: <input name="pass" type="password" value="<?php echo $_POST['pass']; ?>">
<br><input type="submit" name="submit">
</form>
</body>
</html>
<?php
}
If($_POST['sent']==1 OR $_GET['go']==2)
{
$name=$_POST['name'];
if(!isset($_SESSION['counter'])){$_SESSION['counter']=0; }
if(!isset($_SESSION['new'])){$_SESSION['new']=$name;}
if($_POST['name']=="admin" AND $_POST['pass']=="12345")
{
$_SESSION['right']="admin"; // задаем права админа, если были введены логин и пароль админа
}
$right=$_SESSION['right'];
echo "<br>Hello,".$_SESSION['new']."!";
echo "Ты обновил эту страницу ".$_SESSION['counter']++." раз"; // считаем сколько раз была обновлена страница пользователем
if($right=="admin"){echo "<br><b>Вы имеете права админа!</b>";}
echo "<br><br><a href=".$_SERVER['PHP_SELF']."?go=2>обновить</a>";
echo"<br><br><a href=".$_SERVER['PHP_SELF']."?logout=1>Выйти</a>";
}
if($_GET['logout']==1)
{
unset($_SESSION['new']);
unset($_SESSION['right']);
unset($_SESSION['count']);
session_destroy();
echo "Вы вышли";
}
?>