|
|
|
| Подскажите, пожалуйста, как лучше проверить авторизирован пользователь (т.е. если авторизирован выводить имя, а если нет, форму вводу логина и пароля) или нет, если используется сессия? | |
|
|
|
|
|
|
|
для: xpom
(23.09.2011 в 22:27)
| | Если при авторизации заполняется какой-то элемент массива $_SESSION, то проще всего проверить инициализирован ли он при помощи конструкции isset()
<?php
if(isset($_SESSION['id'])) echo "Авторизован";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.09.2011 в 22:38)
| | a id сессии он при каждой аторизации разный? Ввел пользователь имя и пароль..и стали другие? Или первый аз создается и хранится в базе?
А то я не знаком сильно с ним! | |
|
|
|
|
|
|
|
для: xpom
(26.09.2011 в 17:42)
| | SID сессии каждый раз разный, а вот значение $_SESSION['id'] может быть каким пожелаете, в том числе с id, который хранится в базе данных или просто 1. При успешной авторизации, вы присваиваете значение этой переменной самостоятельно
<?php
session_start();
...
// Тут авторизация
...
$_SESSION['id'] = $user['id_user'];
...
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.09.2011 в 21:33)
| | SID разный даже когда пользователь перейдет на другую страницу авторизированным? | |
|
|
|
|
|
|
|
для: xpom
(26.09.2011 в 22:00)
| | Нет, в рамках сессии SID - один и тот же, именно по нему сервер определяет, что эта сессия принадлежит текущему пользователю. Время действия SID на каждом сервере различное - где-то до тех пор пока не будет выключен браузер, где-то 14 минут, где-то 30. Но на время сессии этот номер принадлежит только одному пользователю. | |
|
|
|
|
|
|
|
для: cheops
(26.09.2011 в 22:02)
| | а можно SID менять при каждом действии в рамках сессии? Назначать новый | |
|
|
|
|
|
|
|
для: xpom
(26.09.2011 в 22:20)
| | Да, это тоже возможно (при помощи функции session_id()). | |
|
|
|
|
|
|
|
для: xpom
(23.09.2011 в 22:27)
| | Не взыщи за неказистость, но вот мой код:
<?php
$name = $_POST['name'];
$pass = $_POST['pass'];
if
(
$name == '' or $pass == ''
)
{
unset($name, $pass);
}
if
(
!isset ($name) or !isset($pass)
)
{
echo 'Заполните все поля авторизации';
exit();
}
else
{
include '../database/db_connect.php';
$result = mysql_query ("SELECT * FROM user WHERE name='$name' AND pass=md5('$pass')", $db);
if ($result)
{
session_start();
$myrow = mysql_fetch_array ($result);
if ($myrow)
{
echo $myrow['name'].'<br>';
echo '<a href="/index.php" target="_self">На главную</a>';
}
else
{
echo "Братюнь ты ошибся при вводе пароля или чудишь тута?<br>Ненадо тут мутить шаравары, самовары!!!";
}
}
else
{
echo "не работает!!!";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: torxxx
(26.09.2011 в 08:24)
| | У вас в скрипте пример классической sql иньекции.
http://ru.wikipedia.org/wiki/Внедрение_SQL-кода | |
|
|
|
|
|
|
|
для: Гость
(26.09.2011 в 08:53)
| | я знаю, что код уязвим - так как нет проверок на введенные данные. Вопрос не про безопасность, а проверка на авторизацию (решил не усложнять пример) | |
|
|
|
|
|
|
|
для: torxxx
(27.09.2011 в 17:41)
| | не не..и безопасность на высшем уровне оставить...че я и спрашивал, из-за безопасности! | |
|
|
|