Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150

Авторизация

28.04.2013, 10:00. Показов 1298. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет народ.
Файлы с кодом прилагаю.
Сделал авторизацию, авторизуется, но всё же выдает ошибку: Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\book\index.php:15) in Z:\home\localhost\www\book\uni-auth.php on line 73 при этом ниже ошибки "Вы успешно авторизировались!"
Знаю, что проблема в header(), но не знаю как ее решить.
ниже код:
Скрипт авторизации:
uni-auth.php
PHP
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
    ##Определяем константы
    define('USERS_TABLE','users');
    define('SID',session_id());
 
    ##Определяем функции
    //Функция выхода.
    //Пользователь считается авторизированым, если в сессии присутствует id
    //см. "Действия - если пользователь авторизирован".
    function logout() {
        unset($_SESSION['id']); //Удаляем из сессии ID пользователя
        die(header('Location: '.$_SERVER['PHP_SELF']));
    }
 
    //Функция входа.
    //Все выбраные поля записываются в сессию.
    //Таким образом, при каждом просмотре страницы не надо выбирать их заново.
    //Для обновления информации из БД можно пользоваться этой же функцией - имя и пароль
    //хранятся в сессиях
    function login($username,$password)    {
        $result = mysql_query("SELECT * FROM `".USERS_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 `".USERS_TABLE."` SET `sid`='".SID."' WHERE `id`='".$USER['id']."';")
                or die(mysql_error());
            return true;
        }
        else {
            return false;
        }
    }
 
    //Функция проверки залогинности пользователя.
    //При входе, ID сессии записывается в БД.
    //Если ID текущей сессии и SID из БД не совпадают, производится logout.
    //Благородя этому нельзя одновременно работать под одним ником с разных браузеров.
    function check_user($id) {
        $result = mysql_query("SELECT `sid` FROM `".USERS_TABLE."` WHERE `id`='$id';") or die(mysql_error());
        $sid = mysql_result($result,0);
        return $sid==SID ? true : false;
    }
 
    ##Действия - если пользователь авторизирован
    if(isset($_SESSION['id'])) { //Если была произведена авторизация, то в сессии есть id
 
        //Константу удобно проверять в любом месте скрипта
        define('USER_LOGGED',true);
        //Создаём удобные переменные
        //Все поля таблицы пользователей записываются в сесси (см. стр. 35-37)
        //Таким образом, после добавления нового поля в таблицу надо дописть лишь одну строку
        $UserName = $_SESSION['username'];
        $UserPass = $_SESSION['password'];
        $UserID = $_SESSION['id'];
        $UserEmail = $_SESSION['email'];
    }
    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();
    }
?>
Файл с формой авторизации (сократил html код, чтобы код не был длинным)
index.php
PHP
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
session_start();
?>
<!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=utf-8">
<title>Electronix Store</title>
<link rel="stylesheet" type="text/css" href="style.css">
                    
 
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="iecss.css">
<![endif]-->
<script type="text/javascript" src="js/boxOver.js"></script>
</head>
<body>
 
<div id="main_container">
   
   <div class="left_content">
    <div class="title_box">Categories</div>
    
        <ul class="left_menu">
        <li class="odd"><a href="services.html">Processors</a></li>
        <li class="even"><a href="services.html">Motherboards</a></li>
        </ul> 
      
   </div><!-- end of left content -->
   
   
   <div class="center_content">
    <div class="center_title_bar">Latest Products</div>
    
        <div class="prod_box">
            <div class="top_prod_box"></div>
            <div class="center_prod_box">            
                 <div class="product_title"><a href="details.html">Motorola 156 MX-VL</a></div>
                 <div class="product_img"><a href="details.html"><img src="images/laptop.gif" alt="" title="" border="0"></a></div>
                 <div class="prod_price"><span class="reduce">350$</span> <span class="price">270$</span></div>                        
            </div>
            <div class="bottom_prod_box"></div>             
            <div class="prod_details_tab">
            <a href="#" title="header=[Add to cart] body=[&nbsp;] fade=[on]"><img src="images/cart.gif" alt="" title="" border="0" class="left_bt"></a>
            <a href="#" title="header=[Specials] body=[&nbsp;] fade=[on]"><img src="images/favs.gif" alt="" title="" border="0" class="left_bt"></a>
            <a href="#" title="header=[Gifts] body=[&nbsp;] fade=[on]"><img src="images/favorites.gif" alt="" title="" border="0" class="left_bt"></a>           
            <a href="details.html" class="prod_details">details</a>            
            </div>                     
        </div>
    
   </div><!-- end of center content -->
   
   <div class="right_content"> 
        <div class="shopping_cart">
            <div class="cart_title">Корзина</div>
            <div class="cart_details">
            3 items <br>
            <span class="border_cart"></span>
            Total: <span class="price">350$</span>
            </div>
            
            <div class="cart_icon"><a href="#" title="header=[Checkout] body=[&nbsp;] fade=[on]"><img src="images/shoppingcart.png" alt="" title="" width="48" height="48" border="0"></a></div>
        
        </div>
   
   
  
  <div class="title_box">Авторизация</div>  
     <div class="border_box">  
<?php
include('connectdb.php');// подключение к серверу MySql и выбор БД
include('uni-auth.php');
        
    if(USER_LOGGED) { 
    if(!check_user($UserID)) logout(); 
?>
    <h1>Здравствуйте, <?php echo $UserName; ?>!</h1>
    <h2>Ваш ID: <?php echo $UserID; ?>.</h2>
    <h4><a href="?logout">Выход</a></h4>
<?php
}
else { 
?>   
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Логин: <input type="text" size="30" name="user">
Пароль: <input type="password" name="pass" size="30">
<input type="submit" name="login" value="Войти">
</form>
<a href="/book/register.php">Регистрация</a>
<?php
}
?>
     </div>    
    
     <div class="title_box">What’s new</div>  
     <div class="border_box">
         <div class="product_title"><a href="details.html">Motorola 156 MX-VL</a></div>
         <div class="product_img"><a href="details.html"><img src="images/p2.gif" alt="" title="" border="0"></a></div>
         <div class="prod_price"><span class="reduce">350$</span> <span class="price">270$</span></div>
     </div>  
            
   </div><!-- end of main content -->
 
</div>
<!-- end of main_container -->
</body>
</html>
Вложения
Тип файла: rar файлы с кодом.rar (3.2 Кб, 4 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.04.2013, 10:00
Ответы с готовыми решениями:

Авторизация
Привет! Надо сделать авторизацию за логином и паролем, после входа отправить куки и зарегистрировать сессию (чтоб если пришел ...

Авторизация
Пожалуйста найдите ошибку. Я уже 2 день сижу и не могу понять что тут не так,вроде вход происходит но не вылезает &quot;Здравствуйте,...

авторизация
Доброго времени суток. Беспокоит авторизация. Хочется правильности решения. Покопавшись на сайтах, нашёл, наверное, правильное...

2
2 / 2 / 3
Регистрация: 02.08.2012
Сообщений: 36
28.04.2013, 14:34
Из-за
PHP
1
 header('Refresh: 3;');
удаляй
Какой-то странный код...
0
0 / 0 / 1
Регистрация: 14.03.2013
Сообщений: 150
28.04.2013, 18:07  [ТС]
Цитата Сообщение от GOoDoker Посмотреть сообщение
Из-за
PHP
1
 header('Refresh: 3;');
удаляй
Какой-то странный код...
Да я знаю, но не пойму как исправить.
Ладно тема закрывается, нашел более лучший способ авторизации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2013, 18:07
Помогаю со студенческими работами здесь

Авторизация
Есть два кода login.php &lt;?php if (isset($_POST)) { $login = $_POST; if ($login == '') { unset($login); exit...

Авторизация
Всем привет! // вот-вот начал только изучать сессии.. Дошло дело до авторизации, имеется код: // Вверху, разумеется, куча...

Авторизация
Здравствуйте. Делаю сайт с авторизацией, так чтобы был номер сесси. В интернете нашел различные коды. Посоветуйте, пожалуйста, с чем...

Авторизация v2
Переписал авторизацию и опять где-то ошибся и не вижу if(isset($_POST)){ if(!empty($_POST) &amp;&amp; !empty($_POST)) { ...

Авторизация
создал форму и првоерку через БД авторизацию пользывателя точней в дальнейшем это будет авторизация для админа будущей ЦМС)) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru