Спустя 17 минут, 44 секунды (7.02.2009 - 17:44) twin написал(а):
Кука это маленький файлик, который делает браузер на машине клиента. Туда записывается инфа, которую в эту куку прописывают. По этой информации при следующем заходе сервер понимает, что от него хотят.
Сессия это тоже самое, если грубо. Только файл создается не на машине пользователя, а на сервере. По этому ни кто кроме серверв не знает что в нем написано. А браузер делает такой же файлик, как в первом случае, только туда записывает ключ к файлу на сервере. По этому ключу сервер читает инфу из нужного места.
Вот так может понятнее будет:
Сессия это тоже самое, если грубо. Только файл создается не на машине пользователя, а на сервере. По этому ни кто кроме серверв не знает что в нем написано. А браузер делает такой же файлик, как в первом случае, только туда записывает ключ к файлу на сервере. По этому ключу сервер читает инфу из нужного места.
Вот так может понятнее будет:
PHP |
<?php |
Запустите и попробуйте.
Спустя 7 минут, 19 секунд (7.02.2009 - 17:51) ESSE написал(а):
twin Спасибочки огромное. но в моем случае они нужны да?
Спустя 24 секунды (7.02.2009 - 17:51) LoneCat написал(а):
Фуф, пространный вопрос но всеже:
Cookies - этохреньсущность, благодаря которой можно сохранить информацию на компьютере пользователя, иже:
Cookies - это
PHP |
setcookie('test', 'tram-pam-pam'); |
сохранит у пользователя некую информацию, которую можно будет получить позже, через суперглобальный массив $_COOKIE, на той-же или другой странице того-же домена, например так:
PHP |
echo $_COOKIE['test']; |
Тоесть засчет кукисов можно передавать некую небольшую промежуточную информацию между страницами. Тут есть несколько моментов:
- Кукисы передаются в http-заголовках, то есть их установку нужно производить до того как что-либо было выведено на экран
- Кукисы не безопасны для хранения важных данных, злоумышленник легко может посмотреть какие кукисы ему прислал сервер, и заменить их значения, так что делать а-ля setcookie('admin', '1'); и if($_COOKIE['admin']) { - нельзя ни в коем случае.
Сессии - это тоже
PHP |
session_start(); |
Эта команда инициализации сессии, она генерирует идентификатор сессии для конкретного пользователя, некий уникальный номер, и сообщает его пользователю, например через cookies. Итак пользователь заходит на сайт - сервер говорит ему - ты будешь пятым. При открытии следующей странице - пользователь отправляет этот идентификатор на сервер, говоря: "Я пятый!", сервер проверяет есть-ли у него такой идентификатор - и если есть - записывает в суперглобальный массив $_SESSION всю информацию, записанную в этот массив для этого пользователя. Пример:
PHP |
// Файл 1.php |
PHP |
// Файл 2.php |
Зайдя на первую страницу - в массив сессии будет записана некоторая переменная, доступная потом на второй странице (как впрочем и на первой тоже). А если зайти другим браузером сразу на вторую страницу - выведется пустой массив, потому как кукиса с идентификатором в другом браузере нет, и сервер незнает что новозашедший пользователь - например пятый.
Особенности сессий:
- Сессии безопасны для хранения приватных данных, так как хранятся на сервере, так как на сторону клиента передается только номер сессии.
- Если используется механизм передачи идентификатора через кукисы - session_start() нужно выполнять опять-же до любого вывода на экран.
Спустя 12 минут, 16 секунд (7.02.2009 - 18:04) LoneCat написал(а):
Эх блин, пока писал мну опередили
Спустя 2 минуты, 33 секунды (7.02.2009 - 18:06) ESSE написал(а):
LoneCat Неее, спасибо за такое четкое объяснение. спасибочки огромное!
Спустя 1 час, 23 минуты, 24 секунды (7.02.2009 - 19:30) twin написал(а):
Цитата |
Эх блин, пока писал мну опередили |
Оно как раз кстати, а то я предвидел, что после простого объяснения придется так же подробно расписчвать
Спустя 29 минут, 5 секунд (7.02.2009 - 19:59) ESSE написал(а):
Вот код первойстраници index.php:
<html>
<head>
<title>Главная страница личного кабинета</title>
</head>
<body>
<form method="get" action="login.php" onsubmit="return checkform(this)" align=center>
<b>Логин:</b><br><br>
<input name="login" type="text">
<br><br>
<b>Пароль:</b><br><br>
<input name="pass" type="password">
<br><br>
<input type="submit" name="Submit" value="Вход">
</form>
</body>
</html>
А вот код страници login.php:
<html>
<head>
<title></title>
</head>
<body>
<?
$dbuser = "root";
$dbpass = "bcnbyfultnjnfv";
$dbhost = "192.168.1.3";
$dbname = "lineage2";
$fsname = $_SERVER['SCRIPT_NAME'];
$msconn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Ошибка соединения");
MYSQL_SELECT_DB($dbname) or die ("БД не найдена");
?>
<?
$login = $_POST[login];
$pass = $_POST[pass];
if ($login == "") {
echo ("<center>Вы не ввели логин</center>");
}else{
if ($pass == "") {
echo ("<center>Вы не ввели пароль</center>");
}else{
$q = mysql_query("SELECT * FROM accounts WHERE login='{$login}'");
$z = mysql_query("SELECT * FROM accounts WHERE password='{$pass}'");
if(!mysql_numrows($q) > "0" && base64_encode(pack("H*", sha1(utf8_encode($z)))) > "0")
{
echo ("<center>Вы не вошли</center>");
}
else
{
echo ("<center>Вы вошли в Кабинет</center>");
}
}
}
?>
</body></html>
Впринципи работает он на проверку из базы логина и пароля. Мне надосделать так чтобы когда я вошел, то высветилось имя аккаунта под которым я вошел и кнопочка выйти. И самое главное чтобы открылась страница которая бы была доступна если ты только авторизирован. Воть! Помогите пожайлуста. За это отвечает Сессии и Кукесы, да?
<html>
<head>
<title>Главная страница личного кабинета</title>
</head>
<body>
<form method="get" action="login.php" onsubmit="return checkform(this)" align=center>
<b>Логин:</b><br><br>
<input name="login" type="text">
<br><br>
<b>Пароль:</b><br><br>
<input name="pass" type="password">
<br><br>
<input type="submit" name="Submit" value="Вход">
</form>
</body>
</html>
А вот код страници login.php:
<html>
<head>
<title></title>
</head>
<body>
<?
$dbuser = "root";
$dbpass = "bcnbyfultnjnfv";
$dbhost = "192.168.1.3";
$dbname = "lineage2";
$fsname = $_SERVER['SCRIPT_NAME'];
$msconn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Ошибка соединения");
MYSQL_SELECT_DB($dbname) or die ("БД не найдена");
?>
<?
$login = $_POST[login];
$pass = $_POST[pass];
if ($login == "") {
echo ("<center>Вы не ввели логин</center>");
}else{
if ($pass == "") {
echo ("<center>Вы не ввели пароль</center>");
}else{
$q = mysql_query("SELECT * FROM accounts WHERE login='{$login}'");
$z = mysql_query("SELECT * FROM accounts WHERE password='{$pass}'");
if(!mysql_numrows($q) > "0" && base64_encode(pack("H*", sha1(utf8_encode($z)))) > "0")
{
echo ("<center>Вы не вошли</center>");
}
else
{
echo ("<center>Вы вошли в Кабинет</center>");
}
}
}
?>
</body></html>
Впринципи работает он на проверку из базы логина и пароля. Мне надосделать так чтобы когда я вошел, то высветилось имя аккаунта под которым я вошел и кнопочка выйти. И самое главное чтобы открылась страница которая бы была доступна если ты только авторизирован. Воть! Помогите пожайлуста. За это отвечает Сессии и Кукесы, да?
Спустя 26 минут, 19 секунд (7.02.2009 - 20:25) LoneCat написал(а):
Страница входа:
PHP |
// Запускать сессию следует до любого вывода на страницу |
HTML |
<html> <head> <title></title> </head> <body> |
PHP |
$dbuser = "root"; |
Страница, доступная только авторизованным пользователям:
PHP |
session_start(); |
HTML |
<html> <head> <title></title> </head> <body> |
PHP |
if(isset($_SESSION['user'])) { |
Страница выхода:
PHP |
session_start(); |
HTML |
<html> <head> <title></title> </head> <body> |
PHP |
// Уничтожает все данные, сохраненные в сессии |
Спустя 19 минут, 22 секунды (7.02.2009 - 20:44) ESSE написал(а):
LoneCat - Спасибо вам огромнейшее за помощь и поклон вам. Вы очень сильно помогли. очень очень.
Спустя 20 минут, 28 секунд (7.02.2009 - 21:05) Sylex написал(а):
ESSE
смени аватар, а? Жуть
смени аватар, а? Жуть