Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438

$_SESSION и $_COOKIE

08.08.2011, 15:47. Показов 3495. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые программисты я недавно начал изучать язык 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
if($_COOKIE['login'] && $_COOKIE[pass]) {
    if(!$_POST['exit']) {
    echo "
    <form action='index.php?id=exit' method='post'>
    <input name='exit' type='submit' value='Выйти' />
    </form>
    ";
        if($_POST['exit']) {
        setcookie('login', $login);
        setcookie('pass', $pass);
    }
} else {
   echo "
   <form action='index.php?id=enter' method='post'>
   <input name='login' type='text' />
   <input name='pass' type='text' />
   <input name='enter' type='submit' value='Войти' />
   </form>
   ";
   }
if(isset($_POST['login']) && isset($_POST['pass'])) {
$login = $_POST['login'];
$pass = $_POST['pass'];
}
if($_POST['enter']) {
   if(empty($login)) {echo "<br><b>Вы не ввели логин</b>";}
   if(empty($pass)) {echo "<br><b>Вы не ввели пароль</b>";}
   $query = "SELECT user_pass FROM login WHERE userid = '$login'";
   $res = mysql_query($query);
   if(mysql_num_rows($res)>0) {
   $row = mysql_fetch_array($res)
   $time = time();
   }
 
   if($pass == $row['user_pass']) {
   $login = $_COOKIE['login'];
   $pass = $_COOKIE['pass'];
   setcookie('login', $login, $time+1800);
   setcookie('pass', $pass, $time+1800);
   echo "<br><b>Добро пожаловать $login</b>";
   } else {
   echo "<br><b>Пароль не верный</b>";
   }
}
Значит у меня выпадают такие ошибки проверка пароля не работает всегда пишет не верный пароль
ну и если неправильно написал скрипт вообще то подскажите где как что надо поменять
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2011, 15:47
Ответы с готовыми решениями:

не работают $_session и $_cookie и $http_cookie_vars и тд
пытаюсь передать куки/сессию на другую страничку но ничего не выходит: страница 1.php &lt;?session_start(); $_SESSION;...

Можно ли использовать $_COOKIE как $_SESSION?
Здравствуйте. Вопрос в названии темы, можно ли использовать $_COOKIE как $_SESSION? Например так: $_COOKIE = $data; И дальше работать...

$_post и $_session в форме index.php. передача переменных из $_post в $_session
пока начал это делать... это в качестве примера. есть: &lt;? session_save_path($_SERVER.'/session'); session_start(); if...

16
 Аватар для TOI_I_IA
110 / 110 / 4
Регистрация: 25.05.2009
Сообщений: 415
08.08.2011, 16:02
прежде чем создавать новую тему пользуйся поиском
https://www.cyberforum.ru/php-... 33321.html

https://www.cyberforum.ru/php/... 96665.html

https://www.cyberforum.ru/php-... 74869.html
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
09.08.2011, 01:33  [ТС]
Я понимаю что там типо есть готовые обьясните оссобености $_COOKIE и $_SESSION что лучше использовать и как правильно из моего сделать хороший рабочий скрипт

Добавлено через 1 минуту
Ну вот теперь я столкнулся с таким вопросом на который ответ так и ненашел
Я написал вот скрипт авторизации и выхода

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
$db = mysql_connect('localhost','root','vertrigo') or die("Не могу подключиться к бд");
mysql_select_db('ragsite', $db) or die("БД не найдена");
 
session_start();
if(isset($_POST['log']) && isset($_POST['pass'])) {
$log = $_POST['log'];
$pass = $_POST['pass'];
}
 
 
if($_POST['sub']) {
$log = trim($log);
$log = htmlspecialchars($log);
$log = stripslashes($log);
$pass = trim($pass);
$pass = htmlspecialchars($pass);
$pass = stripslashes($pass);
$pass = md5($pass);
if(empty($log)) {echo "<p>Вы не ввели логин</p>";}
if(empty($pass)) {echo "<p>Вы не ввели пароль</p>";}
 
$query = "select user_pass from login where userid = '$log' and user_pass = '$pass'";
$sql = mysql_query($query) or die("Fatal Error");
if(mysql_num_rows($sql)==1) {
$row = mysql_fetch_assoc($sql);
$_SESSION['log'] = $row['userid'];
$_SESSION['pass'] = $row['user_pass'];
echo "Вы вошли как $log";
 
        }
}
?>
<?PHP
if(!$_SESSION['log'] && !$_SESSION['pass']) {
echo "<form action='?id=enter' method='post'>
Введите логин: <input name='log' type='text' size='' maxlength='10' /><br>
Введите пароль: <input name='pass' type='password' maxlength='15' />
<input name='sub' type='submit' value='Войти' />
</form>";
} else {
echo "
<form action='?id=exit' method='post'>
<input name='exit' type='submit' value='Выйти' />
</form>
";
        if($_POST['exit']) {
        unset($_SESSION['log']);
        unset($_SESSION['pass']);
 
        }
}
и вот сталкнулся с такими проблемами
Во первых Скрипт работает пользователь авторизируется НО когда я нажимаю обновить страничку или перехожу на другую ссылку к примеру index.php?id=asdf то Сессии как и не было
Короче говоря не запоминает вообще сессию чо за байда помогите устранить ну и вот еще 1 ошибка
Вызываю я команду
PHP
1
session_start();
И встречается мне такая ошибка
PHP
1
2
3
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\site\java\index.php:1) in C:\site\java\index.php on line 8
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\site\java\index.php:1) in C:\site\java\index.php on line 8
Как ее устранить тож хз все чтото советуют но не помогает подскажите чо ето и как его лечить?
0
 Аватар для Mgauk
27 / 27 / 5
Регистрация: 03.01.2011
Сообщений: 85
09.08.2011, 01:35
Не запоминает при авторизации

такое ощущение, что и в этой теме и в той один и тот же топик стартер О_о В любом случае мой ответ подойдёт и здесь
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
09.08.2011, 09:14  [ТС]
PHP
1
2
3
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\site\java\index.php:1) in C:\site\java\index.php on line 2
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\site\java\index.php:1) in C:\site\java\index.php on line 2
Таж самая ерунда ток линия 2 пишет
0
 Аватар для Mgauk
27 / 27 / 5
Регистрация: 03.01.2011
Сообщений: 85
09.08.2011, 13:28
покажите как выглядит ваш файл от 0 знака до последнего
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
09.08.2011, 14:31  [ТС]
Я решил проблему с командой session_start(); все дело было в кодировке utf-8 поменял на windows-1251 и никаких ошибок а вот насчет запоминания сессии то или скрипт неверный или незнаю ну буду тестить как найду ответ напишу
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
14.08.2011, 01:47  [ТС]
Скрипт крывой мой надо как то его переделывать!
Значит смотрите ввожу данные для сессии нажимаю Вход оно пишет Добро пожаловать Vixa, форма логина пропадает и пояявлчется кнопка Выход
я жму обновить страничку пропадает надпись Добро пожаловать Vixa и остаётся одна кнопка Выход жму кнопку Выход и пока не чего не происходит жму F5 или еще раз на кнопку выхода и тогда аш появляется форма логина

Значит подсчитуем ошибки Надпись "Добро пожаловать ник перса" не держится когда обновляеш страничку кнопка Выход работает но выходит после обновления странички

незнаю может после if($_GET['exit']) {
прописывать команду ?? header("Location: index.php");
}
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
14.08.2011, 12:37
Лутше конечно использовать $_SESSION поскольку его не могут изменить клиенты но минус в том что если клиент закроет браузер то сессия закроеться. Я сейчас разрабатываю скрипт который при входе на сайт будет разбирать кук(cookie) и проверять на валидность. Если всё правильно то авторизация автоматически проходит и не надо постоянно авторизоваться.

Думаю вы поняли что из написанного мной текст cookies можно изменять.
К примеру можно при авторизации отправить cookie содержащий логин и пароль, но пароль сразуже в md5() или просто(но тогда пользователь увидет пароль в адресной строке браузера). Вообщем я ломаю над этим голову и думаю что лутше будет сразу посылать пароль в md5().

Пользователь заходя на сайт можеш использовать ссылку типо такой: http://mygoodsite.com/?login=M... AS(Вообщем md5 пароль).

И если всё правильно то входит.

А вот с куками чуть подругому.
Если интересно отпишись в личку. Помогу чем смогу! =)
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
14.08.2011, 20:59  [ТС]
напиши хотябы аську или скайп и говорю сразу если ты хочешь помоч помогай но платить я не буду не за что!
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
15.08.2011, 11:14
Я деньги не буду брать, я не профессионал но большенство, вернее даже всё что мне надо я делаю.
ICQ: [Номер удален модератором!]

Добавлено через 10 часов 54 минуты
Цитата Сообщение от vixa Посмотреть сообщение
Здравствуйте уважаемые программисты я недавно начал изучать язык 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
if($_COOKIE['login'] && $_COOKIE[pass]) {
    if(!$_POST['exit']) {
    echo "
    <form action='index.php?id=exit' method='post'>
    <input name='exit' type='submit' value='Выйти' />
    </form>
    ";
        if($_POST['exit']) {
        setcookie('login', $login);
        setcookie('pass', $pass);
    }
} else {
   echo "
   <form action='index.php?id=enter' method='post'>
   <input name='login' type='text' />
   <input name='pass' type='text' />
   <input name='enter' type='submit' value='Войти' />
   </form>
   ";
   }
if(isset($_POST['login']) && isset($_POST['pass'])) {
$login = $_POST['login'];
$pass = $_POST['pass'];
}
if($_POST['enter']) {
   if(empty($login)) {echo "<br><b>Вы не ввели логин</b>";}
   if(empty($pass)) {echo "<br><b>Вы не ввели пароль</b>";}
   $query = "SELECT user_pass FROM login WHERE userid = '$login'";
   $res = mysql_query($query);
   if(mysql_num_rows($res)>0) {
   $row = mysql_fetch_array($res)
   $time = time();
   }
 
   if($pass == $row['user_pass']) {
   $login = $_COOKIE['login'];
   $pass = $_COOKIE['pass'];
   setcookie('login', $login, $time+1800);
   setcookie('pass', $pass, $time+1800);
   echo "<br><b>Добро пожаловать $login</b>";
   } else {
   echo "<br><b>Пароль не верный</b>";
   }
}
Значит у меня выпадают такие ошибки проверка пароля не работает всегда пишет не верный пароль
ну и если неправильно написал скрипт вообще то подскажите где как что надо поменять
Какойто это не такой код. Я сам лично себе разрабатывал регистрацию и авторизацию. Сначало назначайте cookie а а потом только значения приклеивайте.

Ладно! Попробую сделать код, жди...

Добавлено через 20 минут
Вообщем сделал простенький код, ещо не проверял но работать должен.

Содержание config.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
<?php
session_start();
$host = "localhost"; // Хост
$name = ""; // Имя привелегии
$pass = ""; // Пароль привелегии
$mydb = ""; // Имя БД
$link = mysql_connect($host,$name,$pass);
mysql_select_db($mydb,$link);
mysql_query("SET NAMES `cp1251`");
unset($host,$name,$pass,$mydb,$link);
$sitename = "Warriors";
$style = "style.css";
$favicon = "favicon.png";
 
if(isset($_COOKIE['Authorization']) and $_COOKIE['Authorization'] != "")
{
    $auth = explode(",", $_COOKIE['Authorization']);
    $result = mysql_query("SELECT `id`,`password` FROM `players` WHERE `login` = '$auth[0]'");
    $row = mysql_fetch_array($result);
    if(isset($row['id']) and $auth[1] == $row['password'])
    {
        setcookie("Authorization","$login,$auth[1]", time() + 1800);
        $_SESSION['ID'] = $row['id'];
        header("Location: index.php");
    }
    else
    {
        setcookie("Authorization","");
        unset($_COOKIE['Authorization']);
    }
}
?>
Содержание login.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
108
109
110
111
<?php include("config.php"); $pagename = "Авторизоваться"; if($_SESSION['ID'] != ""){header("Location: index.php");} ?>
<!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><?php echo "$sitename - $pagename"; ?></title>
<link href="<?php echo $style; ?>" rel="stylesheet" type="text/css">
<link href="<?php echo $favicon; ?>" rel="shortcut icon" type="image/x-icon">
</head>
 
<body>
<table width="600" border="1" align="center" cellpadding="0" cellspacing="1">
<tr>
<td valign="top">
<?php
echo "<h4 align='center'>$pagename</h4>";
if(isset($_POST['submit']))
{
    if(isset($_POST['login']))
    {
        $login = $_POST['login'];
    }
    
    if(isset($_POST['password']))
    {
        $password = $_POST['password'];
    }
    
    if($login == "")
    {
        unset($login);
        echo "<p>Введите <b>логин</b>!</p>";
    }
    
    if($password == "")
    {
        unset($password);
        echo "<p>Введите <b>пароль</b>!</p>";
    }
    else
    {
        $password = md5($password);
    }
    
    $login = mysql_real_escape_string($login);
    
    if(isset($login) and isset($password))
    {
        $result = mysql_query("SELECT `id`,`password` FROM `players` WHERE `login` = '$login'");
        $row = mysql_fetch_array($result);
        if(isset($row['id']) and $password == $row['password'])
        {
            setcookie("Authorization","$login,$row[password]", time() + 1800);
            $_SESSION['ID'] = $row['id'];
            header("Location: index.php");
        }
        else
        {
            echo "<p>Неверный логин/пароль.</p><p><a href='login.php'>Заново</a></p>";
        }
    }
    else
    {
        echo "<p><a href='login.php'>Заново</a></p>";
    }
}
else
{
    if(isset($_COOKIE['Authorization']) and $_COOKIE['Authorization'] != "")
    {
        $auth = explode(",", $_COOKIE['Authorization']);
        $result = mysql_query("SELECT `id`,`password` FROM `players` WHERE `login` = '$auth[0]'");
        $row = mysql_fetch_array($result);
        if(isset($row['id']) and $auth[1] == $row['password'])
        {
            setcookie("Authorization","$login,$auth[1]", time() + 1800);
            $_SESSION['ID'] = $row['id'];
            header("Location: index.php");
        }
        else
        {
            setcookie("Authorization","");
            unset($_COOKIE['Authorization']);
        }
    }
    
    echo "<form name='form1' method='post' action='login2.php'>
<p align='center'>
<label>Логин:<br>
<input name='login' type='text' id='login' size='25' maxlength='30'>
</label>
</p>
<p align='center'>
<label>Пароль:<br>
<input name='password' type='password' id='password' size='25' maxlength='100'>
</label>
</p>
<p align='center'>
<label>
<input type='submit' name='submit' id='submit' value='Авторизоваться'>
</label>
</p>
</form>
";
}
?>
</td>
</tr>
</table>
</body>
</html>
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
15.08.2011, 19:43  [ТС]
Поставил этот скрипт а у меня Vertrigo чот жалуется на функцию
PHP
1
header("Location: index.php");
и на строку
PHP
1
setcookie('Authorization', '$login,$row[user_pass]', time() + 1800);
короче попробую сам написать по своему если что не будет получаться обратюсь к вам
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
15.08.2011, 20:10
vixa, жалуется потому как заголовок header уже отправлен браузеру.
нужно перед самым началом кода где начинаете отдавать браузеру html перенести эти строки
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
21.08.2011, 11:36  [ТС]
Мда помощи мне так не кто и не предоставил по авторизации на этом форуме
Может все таки есть такие люди которые помогут совместно но правильно написать рабочую авторизацию:?

Только попрошу ссылки не кидать не какие только реальную помощь
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
21.08.2011, 23:37
Цитата Сообщение от vixa Посмотреть сообщение
Поставил этот скрипт а у меня Vertrigo чот жалуется на функцию
PHP
1
header("Location: index.php");
и на строку
PHP
1
setcookie('Authorization', '$login,$row[user_pass]', time() + 1800);
короче попробую сам написать по своему если что не будет получаться обратюсь к вам

Бывает разница в самых простых вещах. Попробуй так:
PHP
1
setcookie("Auth","$login,$row[user_pass]", time() + 1800);
Мнебы увидеть полностью твой сайт, ябы помог. Но поскольку я вижу открывки кода я не могу понять где включаються сессии и др.
0
22.08.2011, 00:34
 Комментарий модератора 
Maksimchikfull, vixa,для связи используйте личные сообщения на форуме, либо указывайте контактные данные в у себя в профиле.
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
22.08.2011, 03:10  [ТС]
Мои данные я указал в личных настройках если желаете помочь разобраться с этим пишите в аську 443191742 или скайп vixa111
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2011, 03:10
Помогаю со студенческими работами здесь

Работа с массивами $_SESSION и $_COOKIE
Такой вот эстетический, если можно так выразиться, вопрос..) Сколько примерно переменных можно хранить в сессионном массиве, чтобы это...

Авторизация c $_SESSION и $_COOKIE на PHP сайте
Привет всем! У меня есть проблема с сессиями. Объясню подробнее: У меня стоит Apache2.2 и PHP 5.4 шаренная папка localhost для...

_COOKIE
if ($_REQUEST) {setcookie('user', $_POST, strtotime('+30 days'), '/'); echo $_COOKIE; die(); } подскажите почему не записывает в...

$_COOKIE['name', '/local/']
Есть дириктория www/local/php.php, и www/script/php.php. cookie записывается в local: setcookie('name', $cook, time() '/local/') ...

Массив $_COOKIE
Использую куки для авторизации все отрабатывает массив $_COOKIE содержит верные данные. Структура сайта такая localhost//index.php ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru