Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2010, 19:07   #1
GoldmasteR
Заблокирован
 
Регистрация: 05.09.2010
Сообщений: 23
По умолчанию Ошибка - Warning: Cannot modify header information - headers already sent by (output started at

Скрипт http://olgamlm.rxfly.net/1

Логин admin пароль p@$$w0rd

Скрипт

uni-auth.php
<?php
/*
Универсальный скрипт авторизации.
Используется сессии для хранения данных.
Скрипт типа "всё-в-одном" - его необходимо
включать в каждый файл для использования.
Распространяется по лицензии BSD.

+Требования:
+-Mysql & PHP5
+-Созданое подключение к MySQL и запущеная сессия =)

(c)2008 Vasilii B. Shpilchin
*/

##Определяем константы
define('USERS2_TABLE','users2');
define('SID',session_id());

##Определяем функции
//Функция выхода.
//Пользователь считается авторизированым, если в сессии присутствует uid
//см. "Действия - если пользователь авторизирован".
function logout() {
session_unregister('uid'); //Удаляем из сессии ID пользователя
die(header('Location: '.$_SERVER['PHP_SELF']));
}

//Функция входа.
//Все выбраные поля записываются в сессию.
//Таким образом, при каждом просмотре страницы не надо выбирать их заново.
//Для обновления информации из БД можно пользоваться этой же функцией - имя и пароль
//хранятся в сессиях
function login($username,$password) {
$result = mysql_query("SELECT * FROM `".USERS2_TABLE."` WHERE `username`='$username' AND `password`='$password';")
or die(mysql_error());
$USER = mysql_fetch_array($result,1); //Генерирует удобный массив из результата запроса
if(!empty($USER)) { //Если массив не пустой (это значит, что пара имя/пароль верная)
$_SESSION = array_merge($_SESSION,$USER); //Добавляем массив с пользователем к массиву сессии

mysql_query("UPDATE `".USERS2_TABLE."` SET `sid`='".SID."' WHERE `uid`='".$USER['uid']."';")
or die(mysql_error());
return true;
}
else {
return false;
}
}

//Функция проверки залогинности пользователя.
//При входе, ID сессии записывается в БД.
//Если ID текущей сессии и SID из БД не совпадают, производится logout.
//Благородя этому нельзя одновременно работать под одним ником с разных браузеров.
function check_user($uid) {
$result = mysql_query("SELECT `sid` FROM `".USERS2_TABLE."` WHERE `uid`='$uid';") or die(mysql_error());
$sid = mysql_result($result,0);
return $sid==SID ? true : false;
}

##Действия - если пользователь авторизирован
if(isset($_SESSION['uid'])) { //Если была произведена авторизация, то в сессии есть uid

//Константу удобно проверять в любом месте скрипта
define('USER_LOGGED',true);
//Создаём удобные переменные
//Все поля таблицы пользователей записываются в сесси (см. стр. 35-37)
//Таким образом, после добавления нового поля в таблицу надо дописть лишь одну строку
$UserName = $_SESSION['username'];
$UserPass = $_SESSION['password'];
$UserID = $_SESSION['uid'];
}
else {
define('USER_LOGGED',false);
}

##Действия при попытке входа
if (isset($_POST['login'])) {

if(get_magic_quotes_gpc()) { //Если слеши автоматически добавляются
$_POST['user']=stripslashes($_POST['user']);
$_POST['pass']=stripslashes($_POST['pass']);
}
$user = mysql_real_escape_string($_POST['user']);
$pass = mysql_real_escape_string($_POST['pass']);
if(login($user,$pass)) {
header('Refresh: 3');
die('Вы успешно авторизировались!');
}
else {
header('Refresh: 3;');
die('Пароль неправильный!');
}

}

##Действия при попытке выхода
if(isset($_GET['logout'])) {
logout();
}
?>




Скрипт бесплатный и походу не рабочий!!! Как исправить ошибку

Warning: Cannot modify header information - headers already sent by (output started at /www/rxfly.net/o/l/olgamlm/home/site/1/uni-auth.php:1) in /www/rxfly.net/o/l/olgamlm/home/site/1/uni-auth.php on line 86

Тут я понял что в фаиле uni-auth.php, на 86 строке!!!


Но я посчитал и строка 86 пустая(((((


Помогите найти эту строку и исправить проблему
GoldmasteR вне форума Ответить с цитированием
Старый 09.11.2010, 21:01   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Проверьте везде, где можно, на наличие лишних пробелов и вывода в браузер до начала установки кук и сессий
motorway вне форума Ответить с цитированием
Старый 10.11.2010, 00:19   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Файл сохраните в формате "UTF-8 без BOM".

Вам важна строчка "output started at /www/rxfly.net/o/l/olgamlm/home/site/1/uni-auth.php:1" которая говорит, что вывод начался в строке 1. Это значит, что либо перед <?php есть пробел или перевод строки (пустая строка), либо вы сохранили файл в формате UTF-8, но с BOM'ом.

Каким редактором сохраняли файл?
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 10.11.2010, 06:49   #4
GoldmasteR
Заблокирован
 
Регистрация: 05.09.2010
Сообщений: 23
По умолчанию

Простым, стандартным блонкнотом
GoldmasteR вне форума Ответить с цитированием
Старый 10.11.2010, 19:21   #5
GoldmasteR
Заблокирован
 
Регистрация: 05.09.2010
Сообщений: 23
По умолчанию

Я посмотрел ошибка гдето тут

header('Refresh: 3;');
GoldmasteR вне форума Ответить с цитированием
Старый 10.11.2010, 19:23   #6
GoldmasteR
Заблокирован
 
Регистрация: 05.09.2010
Сообщений: 23
По умолчанию

Но в чем? ?
GoldmasteR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы "Cannot add header information..." dr.Chas PHP 11 30.07.2010 18:45
Ошибка warning C4715 MAKEDON Общие вопросы C/C++ 2 21.03.2009 13:13
Ошибка в [headers] Рустам PHP 3 14.03.2009 13:25
ошибка Query1: Cannot modify a read-only dataset demo_nik БД в Delphi 5 07.11.2008 19:16
Warning: Narrowing given wide string constant lost information. Как исправить? SkAndrew Общие вопросы Delphi 4 18.08.2008 12:11