Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемма з скриптом (
 
 автор: Triaklodis   (29.08.2008 в 19:19)   письмо автору
 
 

Уже нет сил... знаю что гдето простая ошибка но... уже сутку найти немогу.. код переписывал, модифицировал много раз а толку.. ПОМОГИТЕ ПОЖАЛУЙСТА

З.ы Сессия работает, не работает нормально присвоение значений с результата запроса.
З.з.ы Структура таблицы `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>
<?
}
}
?>


И если кто сможет, немного оптимизировать буду искренни благодарен.

  Ответить  
 
 автор: Root   (29.08.2008 в 19:34)   письмо автору
 
   для: Triaklodis   (29.08.2008 в 19:19)
 

1) session_unset() ?? тут смотрим Example #1
2) почитайте про sql-инъекции.

3) >не работает нормально присвоение значений..
Что значит ненормально?

  Ответить  
 
 автор: Triaklodis   (29.08.2008 в 19:42)   письмо автору
 
   для: Root   (29.08.2008 в 19:34)
 

Есть в таблице юзер "admin" есть его пароль "parol" ввожу логин, пароль... но место того чтоб записать в сессию логин, пароль, и его уровень доступа(лвл) форма входа становиться пустой.. тобто просто белый экран...

Если же закоментить проверку на пустой пароль то оно записывает в сессию имя введенное...

Но если сделать место:

$_SESSION['login'] = $name;


$_SESSION['login'] = $res['name'];
то уже имя тоже не присваиваеться... Значить что-то я нетак делаю имено с присвоением значение из результата выборки с таблици.. а что немогу понять :(

  Ответить  
 
 автор: DDK   (29.08.2008 в 19:34)   письмо автору
 
   для: Triaklodis   (29.08.2008 в 19:19)
 

echo mysql_error() после выполнения запроса и смотрите, что оно расскажет... а уже исходя из ошибки спрашивайте более конкретно.

  Ответить  
 
 автор: Triaklodis   (29.08.2008 в 19:44)   письмо автору
 
   для: DDK   (29.08.2008 в 19:34)
 

Вот это выдало... Я так понимаю оно ищет колонку в таблице место того чтоб выбрать даные где имя равно админ ... Что нетак написал то?
Unknown column 'admin' in 'where clause'

  Ответить  
 
 автор: Triaklodis   (29.08.2008 в 19:51)   письмо автору
 
   для: 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 .... подскажите как правильно

  Ответить  
 
 автор: sim5   (29.08.2008 в 19:54)   письмо автору
 
   для: Triaklodis   (29.08.2008 в 19:51)
 

автор: Root (29.08.2008 в 19:34) письмо автору
для: Triaklodis (29.08.2008 в 19:19)

2) почитайте про sql-инъекции.

  Ответить  
 
 автор: Triaklodis   (29.08.2008 в 19:56)   письмо автору
 
   для: sim5   (29.08.2008 в 19:54)
 

Ок. правда не совсем понял (

  Ответить  
 
 автор: sim5   (29.08.2008 в 20:00)   письмо автору
 
   для: Triaklodis   (29.08.2008 в 19:56)
 

Так надо ознакомиться сэтим, поймете.

  Ответить  
 
 автор: Triaklodis   (29.08.2008 в 20:05)   письмо автору
 
   для: sim5   (29.08.2008 в 20:00)
 

спасибо

  Ответить  
 
 автор: Triaklodis   (29.08.2008 в 19:54)   письмо автору
 
   для: Triaklodis   (29.08.2008 в 19:51)
 

Все от так заработало...
    $query = "
      SELECT pass, name, lvl
      FROM `user`
      WHERE `name` = '$name'  ";


Только увидел другой глюк: Если ввожу неверные данные оно место того чтоб написать неверный логин или пароль просто падает (

  Ответить  
 
 автор: Triaklodis   (29.08.2008 в 21:25)   письмо автору
 
   для: 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/>'; 
чтоб два раза не писать.. подскажите пожалуйста как сделать?

  Ответить  
 
 автор: AcidTrash   (29.08.2008 в 22:57)   письмо автору
 
   для: Triaklodis   (29.08.2008 в 21:25)
 

>чтоб два раза не писать
Чего два раза не писать?

  Ответить  
 
 автор: Triaklodis   (30.08.2008 в 00:10)   письмо автору
 
   для: AcidTrash   (29.08.2008 в 22:57)
 

В первом сообщение, где код есть можно заметить что форма, и еще вот эти три строки два раза повторяються... посмотрел немного о функциях, загнал форму в нее... а с этим не получитсья надо что-то думать (...

  Ответить  
 
 автор: Trianon   (30.08.2008 в 12:14)   письмо автору
 
   для: Triaklodis   (30.08.2008 в 00:10)
 

1. почему не получится? Получится.
2. вместо второго упоминания фрагмента логичнее поставить что-то вроде header("Location: ?"); exit();

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования