PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
livote
Отправлено: 31 Октября, 2012 - 17:38:29
Частый гость
Покинул форум
Сообщений всего: 243
Дата рег-ции: Авг. 2012
Помог: 0 раз(а)
[+][+]
есть код:
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
if ( ! isset ( $_SESSION [ 'user_id' ] ) ) { $title = "Авторизация!" ; } else { $title = "Вы уже авторизованы!" ; } include 'dop/mysql.php' ; ?>
</head>
<body>
<?
if ( isset ( $_GET [ 'logout' ] ) ) {
if ( isset ( $_SESSION [ 'user_id' ] ) ) unset ( $_SESSION [ 'user_id' ] ) ;
echo "Вы вышли :(" ;
}
if ( isset ( $_SESSION [ 'user_id' ] ) ) {
// юзер уже залогинен, перекидываем его отсюда на закрытую страницу
echo "Вы уже авторизованы! <a href='/'>На главную</a><br><a href='/newop.php'>Добавить битву</a>" ;
}
{
$query = "SELECT `salt`
FROM `user`
WHERE `login`='{$login} '
LIMIT 1" ;
{
// итак, вот она соль, соответствующая этому логину:
$salt = $row [ 'salt' ] ;
// теперь хешируем введенный пароль как надо и повторям шаги, которые были описаны выше:
$password = md5 ( md5 ( $_POST [ 'password' ] ) . $salt ) ;
// и пошло поехало...
// делаем запрос к БД
// и ищем юзера с таким логином и паролем
$query = "SELECT `id`
FROM `user`
WHERE `login`='{$login} ' AND `password`='{$password} '
LIMIT 1" ;
// если такой пользователь нашелся
{
// то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)
$_SESSION [ 'user_id' ] = $row [ 'id' ] ;
// если пользователь решил "запомнить себя"
// то ставим ему в куку логин с хешем пароля
$time = 86400 ; // ставим куку на 24 часа
if ( isset ( $_POST [ 'remember' ] ) ) {
}
// и перекидываем его на закрытую страницу
echo "Вы успешно авторизованы! <a href='/'>На главную</a><br><a href='/newop.php'>Добавить битву</a>" ;
// не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
}
else
{
die ( 'Такой логин с паролем не найдены в базе данных. И даём ссылку на повторную авторизацию. — <a href="login.php">Авторизоваться</a>' ) ; }
}
else
{
die ( 'пользователь с таким логином не найден, даём ссылку на повторную авторизацию. — <a href="login.php">Авторизоваться</a>' ) ; }
}
if ( ! isset ( $_SESSION [ 'user_id' ] ) ) { print ' <form action="login.php" method="post">
<table>
<tr>
<td>Логин:</td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td>Пароль:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td>Запомнить:</td>
<td><input type="checkbox" name="remember" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Авторизоваться" /></td>
</tr>
</table>
</form>
' ; } else { }
?>
так вот:когда выхожу, или захожу, запомнив пользователя, выводится следующая ошибка:
Warning: Cannot modify header information - headers already sent by (output started at W:\domains\but\dop\verh.php:11) in W:\domains\but\login.php on line 15
Warning: Cannot modify header information - headers already sent by (output started at W:\domains\but\dop\verh.php:11) in W:\domains\but\login.php on line 16
и дальше текст, который нужен, например: Вы вышли
-----Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
AlexAnder
Отправлено: 31 Октября, 2012 - 17:55:53
Частый посетитель
Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012
Откуда: Россия
Помог: 34 раз(а)
livote пишет: AlexAnder пишет:
ах да.я код кинул не тот немного.там ещё другая еважная часть должна подключаться.но с ней или без неё выходит эта ошибка
Не в том дело. Просто перед использованием функций нужно читать описание...
http://www.php.su/functions/?setcookie
Описание пишет: int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
setcookie() определяет куку для отправки вместе с остальной header-информацией.Куки обязаны быть отправлены до любых других шапок/headers (это ограничение кук, а не РНР). Это требует, чтобы вы помещали вызовы этой функции перед тэгами <html> или <head>.
(Отредактировано автором: 31 Октября, 2012 - 17:58:57)
-----Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©
Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
livote
Отправлено: 31 Октября, 2012 - 17:59:23
Частый гость
Покинул форум
Сообщений всего: 243
Дата рег-ции: Авг. 2012
Помог: 0 раз(а)
[+][+]
это один полный файл (код которого вверху, только немного изменён)
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
if ( isset ( $_SESSION [ 'user_id' ] ) ) { $title = "Зарегайтесь!" ; } else { $title = "Добавить опрос" ; } include 'dop/verh.php' ; ?>
</head>
<body>
<?
// если пользователь не авторизован
if ( ! isset ( $_SESSION [ 'id' ] ) ) {
// то проверяем его куки
// вдруг там есть логин и пароль к нашему скрипту
if ( isset ( $_COOKIE [ 'login' ] ) && isset ( $_COOKIE [ 'password' ] ) ) {
// если же такие имеются
// то пробуем авторизовать пользователя по этим логину и паролю
// и по аналогии с авторизацией через форму:
// делаем запрос к БД
// и ищем юзера с таким логином и паролем
$query = "SELECT `id`
FROM `user`
WHERE `login`='{$login} ' AND `password`='{$password} '
LIMIT 1" ;
// если такой пользователь нашелся
{
// то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)
$_SESSION [ 'user_id' ] = $row [ 'id' ] ;
// не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
}
}
}
if ( isset ( $_SESSION [ 'user_id' ] ) ) {
$query = "SELECT `login`
FROM `user`
WHERE `id`='{$_SESSION['user_id']} '
LIMIT 1" ;
// если нету такой записи с пользователем
// ну вдруг удалили его пока он лазил по сайту.. =)
// то надо ему убить ID, установленный в сессии, чтобы он был гостем
{
}
$welcome = $row [ 'login' ] ;
}
else
{
$welcome = 'гость' ;
}
print '<h3>Здрасте, ' . $welcome . '.</h3>
<a href="newop.php">Закрытая страница</a><br />' ;
if ( ! isset ( $_SESSION [ 'user_id' ] ) ) {
print '<a href="login.php">Авторизация</a><br />' ;
print '<a href="register.php">Регистрация</a><br />' ;
}
else
{
print '<a href="login.php?logout">Выход</a><br />' ;
}
print '<p><small>* Для авторизации использовать логин: <b>md5</b> и пароль: <b>password</b></small></p>' ;
?>
а это verh.php
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?
include ( 'mysql.php' ) ;
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>' . $title . '</title>
<!-- css and js -->
<link href="css/mystyle.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>
<!-- css and js -->' ;
?>
-----Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB