|
|
|
| Уже нет сил... знаю что гдето простая ошибка но... уже сутку найти немогу.. код переписывал, модифицировал много раз а толку.. ПОМОГИТЕ ПОЖАЛУЙСТА
З.ы Сессия работает, не работает нормально присвоение значений с результата запроса.
З.з.ы Структура таблицы `user` : "uid | name | pass | lvl | activ "
<?
require_once $_SERVER['DOCUMENT_ROOT'].'/inc/msql_con.php';
//начало сесии
session_start();
//выход
if (isset($_GET['act'])){
if ($_GET['act'] == "logout") {
session_unset();
}
}
if (isset($_SESSION['login'])) {
echo "Привет ".$_SESSION['login']."<br/>";
if ($_SESSION['lvl'] == 1) echo '<a href="admin/post.php">Добавить новость</a>';
echo '<a href="?act=logout">Выйти</a><br/>';
}
else {
//проверка заданости переменных
if(isset($_POST['auth']))
{
if($_POST['login'] != '' && $_POST['pass'] != '')
{
$name = trim($_POST['login']);
$query = "
SELECT pass, name, lvl
FROM `user`
WHERE `name` = $name ";
$res = mysql_query($query);
$res = mysql_fetch_array($res);
$pass = $res['pass'];
$pass1 = trim($_POST['pass']);
if ($pass1 == $pass)
{
//если верный пароль записываем сессионные данные
$_SESSION['login'] = $name;
$lvl = $res['lvl'];
$_SESSION['lvl'] = $lvl;
echo "Привет ".$_SESSION['login']."<br/>";
if ($_SESSION['lvl'] == 1) echo '<a href="admin/post.php">Добавить новость</a>';
echo '<a href="?act=logout">Выйти</a><br/>';
}
}
else {
echo "Введите логин, и пароль!"; ?>
<FORM METHOD=POST>
<div>Логин<br/><INPUT TYPE="text" NAME="login"></div><br/>
<div>Пароль<br/><INPUT TYPE="text" NAME="pass"></div><br/>
<INPUT TYPE="submit" VALUE="Отправить" Name="auth">
</FORM>
<?
}
}
else
{
?>
<FORM METHOD=POST>
<div>Логин<br/><INPUT TYPE="text" NAME="login"></div><br/>
<div>Пароль<br/><INPUT TYPE="text" NAME="pass"></div><br/>
<INPUT TYPE="submit" VALUE="Отправить" Name="auth">
</FORM>
<?
}
}
?>
|
И если кто сможет, немного оптимизировать буду искренни благодарен. | |
|
|
|
|
|
|
|
для: Triaklodis
(29.08.2008 в 19:19)
| | 1) session_unset() ?? тут смотрим Example #1
2) почитайте про sql-инъекции.
3) >не работает нормально присвоение значений..
Что значит ненормально? | |
|
|
|
|
|
|
|
для: Root
(29.08.2008 в 19:34)
| | Есть в таблице юзер "admin" есть его пароль "parol" ввожу логин, пароль... но место того чтоб записать в сессию логин, пароль, и его уровень доступа(лвл) форма входа становиться пустой.. тобто просто белый экран...
Если же закоментить проверку на пустой пароль то оно записывает в сессию имя введенное...
Но если сделать место:
$_SESSION['login'] = $name;
|
$_SESSION['login'] = $res['name'];
| то уже имя тоже не присваиваеться... Значить что-то я нетак делаю имено с присвоением значение из результата выборки с таблици.. а что немогу понять :( | |
|
|
|
|
|
|
|
для: Triaklodis
(29.08.2008 в 19:19)
| | echo mysql_error() после выполнения запроса и смотрите, что оно расскажет... а уже исходя из ошибки спрашивайте более конкретно. | |
|
|
|
|
|
|
|
для: DDK
(29.08.2008 в 19:34)
| | Вот это выдало... Я так понимаю оно ищет колонку в таблице место того чтоб выбрать даные где имя равно админ ... Что нетак написал то?
Unknown column 'admin' in 'where clause'
|
| |
|
|
|
|
|
|
|
для: Triaklodis
(29.08.2008 в 19:44)
| | Зделал замену небольшую
$query = "
SELECT pass, name, lvl
FROM `user`
WHERE `name` = $name ";
|
на
$query = "
SELECT pass, name, lvl
FROM `user`
WHERE `name` = 'admin' ";
|
при вводе логина пароля теперь нормально отображает... ЗНачить проблема в WHERE `name` = $name .... подскажите как правильно | |
|
|
|
|
|
|
|
для: Triaklodis
(29.08.2008 в 19:51)
| | автор: Root (29.08.2008 в 19:34) письмо автору
для: Triaklodis (29.08.2008 в 19:19)
2) почитайте про sql-инъекции. | |
|
|
|
|
|
|
|
для: sim5
(29.08.2008 в 19:54)
| | Ок. правда не совсем понял ( | |
|
|
|
|
|
|
|
|
для: sim5
(29.08.2008 в 20:00)
| | спасибо | |
|
|
|
|
|
|
|
для: Triaklodis
(29.08.2008 в 19:51)
| | Все от так заработало...
$query = "
SELECT pass, name, lvl
FROM `user`
WHERE `name` = '$name' ";
|
Только увидел другой глюк: Если ввожу неверные данные оно место того чтоб написать неверный логин или пароль просто падает ( | |
|
|
|
|
|
|
|
для: Triaklodis
(29.08.2008 в 19:54)
| | Актуальный вопрос оптимизации:
echo "Привет ".$_SESSION['login']."<br/>";
if ($_SESSION['lvl'] == 1) echo '<a href="admin/post.php">Добавить новость</a>';
echo '<a href="?act=logout">Выйти</a><br/>';
| чтоб два раза не писать.. подскажите пожалуйста как сделать? | |
|
|
|
|
|
|
|
для: Triaklodis
(29.08.2008 в 21:25)
| | >чтоб два раза не писать
Чего два раза не писать? | |
|
|
|
|
|
|
|
для: AcidTrash
(29.08.2008 в 22:57)
| | В первом сообщение, где код есть можно заметить что форма, и еще вот эти три строки два раза повторяються... посмотрел немного о функциях, загнал форму в нее... а с этим не получитсья надо что-то думать (... | |
|
|
|
|
|
|
|
для: Triaklodis
(30.08.2008 в 00:10)
| | 1. почему не получится? Получится.
2. вместо второго упоминания фрагмента логичнее поставить что-то вроде header("Location: ?"); exit(); | |
|
|
|