ФорумПрограммированиеPHP для идиотов → Вопросы от не наркоманов для программистов

Вопросы от не наркоманов для программистов

  • jijidesign

    Сообщения: 27 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2010 г. 12:27

    Привет чууваки, здесь пускай как я "тупые ослы" постят свои глупые вопросы по тем или иным фичам "пыха".
    Первый вопрос от меня, есть такой код, знаю все как работает ну нужен еще небольшой пинок к истине ;)
     
    $login = "admin";
    $query_login = ("SELECT name FROM user WHERE (name = '$login')");
    $auth_login = mysql_query($query_login);
    $aAth_login = mysql_fetch_array($auth_login);

    Так, вопрос такой что делает
    mysql_fetch_array
    ? :)
    Священный манул пишет что "Обрабатывает ряд результата запроса, и возвращает ассоциативный массив либо численный.
    Это как?
    То есть
    mysql_fetch_array($auth_login)
    возвратит ассоциативный массив ключ = > значение? [name] => [admin]? "name" это поле в таблице, а "admin" это значение этого поля :)
    Просто я хочу найти ответы на свои вопросы, чтоб стать такими же как вы "сенсеями" ;)
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2010 г. 12:31, спустя 4 минуты 13 секунд

    >Это как?
    Учи что такое ассоциативный массив
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 6 декабря 2010 г. 12:36, спустя 4 минуты 36 секунд

    var_dump($aAth_login);
    Work, buy, consume, die
  • jijidesign

    Сообщения: 27 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2010 г. 12:51, спустя 15 минут 12 секунд

    А

    >Это как?
    Учи что такое ассоциативный массив

    Блять, я не говорил что не знаю что такое ассоциативный массив, это массив в котором ключ может не только быть числом но и строкой :)
    Я хочу понять как происходит это?
      $login = "admin";
    $query_login = ("SELECT name FROM user WHERE (name = '$login')");
    $auth_login = mysql_query($query_login);
    $aAth_login = mysql_fetch_array($auth_login);

    В auth_login получаем ссылку на результат при успешном выполнение запроса, то есть потом при помощи
    mysql_fetch_array
    мы через ссылку получаем такое "ключ" => "значение"?
    Спустя 23 сек.

    var_dump($aAth_login);


    Спасибо, за команду, что то я такой нуб не знал про нее)
    Спустя 19 сек.
    использовал все print_r :D
  • AlexB

    Сообщения: 4297 Репутация: N Группа: в ухо

    Spritz 6 декабря 2010 г. 13:28, спустя 36 минут 56 секунд


    использовал все print_r :D
    print_r тоже бывает не плох, вот еще совет:
    echo '<pre>';
    перед print_r и
    echo '</pre>';
    после
  • jijidesign

    Сообщения: 27 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2010 г. 13:40, спустя 12 минут 28 секунд



    использовал все print_r :D
    print_r тоже бывает не плох, вот еще совет:
    echo '<pre>';
    перед print_r и
    echo '</pre>';
    после

    Благодарю, а вот есть такой вопрос, но есть подозрения что я "тупой" что ли, но суть вопроса такова.
    При помощи команды я сравниваю
    if($aAth_login['name'] != $login and $aAth_password['password'] != $password)

    $aAth_login['name'] != $login 
    - часть A
    $aAth_password['password'] != $password
    - часть Б
    Ну вот выражение "Если $aAth_login != $login то true, и если $aAth_password != $password то true, то выполняем следующие инструкции"
    Но например в части "А" у меня равно то false, то уже все без разницы что во втором условие true или false, то все условие ложное и следующие инструкции будут пропущены.

    Спустя 46 сек.
    блин, я пока писал то суть понял всю))) условие все равно не выполнится, хоть даже первое тру )
  • AlexB

    Сообщения: 4297 Репутация: N Группа: в ухо

    Spritz 6 декабря 2010 г. 16:18, спустя 2 часа 38 минут


    условие все равно не выполнится, хоть даже первое тру )
    Разумеется, этим и отличается логическое умножение (и) от логического сложения (или).
    Кстати,
    !$a && !$b == !($a || $b)
    !$a || !$b == !($a && $b)




  • master

    Сообщения: 3242 Репутация: N Группа: Джедаи

    Spritz 6 декабря 2010 г. 16:23, спустя 4 минуты 59 секунд

    правильно так

    $db->query("SELECT * FROM `user` WHERE `login`=? AND `passmd5`=MD5(CONCAT(?, `salt`)) LIMIT 1", $login, $pass);

    если будет найдена одна строка - значит авторизация успешна
    не всё полезно, что в swap полезло
  • Kumar

    Сообщения: 5 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2010 г. 16:24, спустя 53 секунды

    $query_login = ("SELECT name FROM user WHERE (name = '$login')");

    Честно говоря, какая-то нерациональная строчка))
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 декабря 2010 г. 16:25, спустя 47 секунд

    Kumar, что поделать, жизнь вообще нерациональна
    Сапожник без сапог
  • master

    Сообщения: 3242 Репутация: N Группа: Джедаи

    Spritz 6 декабря 2010 г. 16:27, спустя 1 минуту 33 секунды

    $db - это некий класс для работы с бд, а значки ? - это плейсхолдеры. если без них, то

    $login = mysql_real_escape_string($login);
    $pass = mysql_real_escape_string($pass);
    mysql_query("SELECT * FROM `user` WHERE `login`='$login' AND `passmd5`=MD5(CONCAT('$pass', `salt`)) LIMIT 1");
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 декабря 2010 г. 16:27, спустя 46 секунд


    правильно так

    $db->query("SELECT * FROM `user` WHERE `login`=? AND `passmd5`=MD5(CONCAT(?, `salt`)) LIMIT 1", $login, $pass);

    если будет найдена одна строка - значит авторизация успешна

    я тоже сначала подумал что он про твой код, а он про код ТС :0
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 декабря 2010 г. 6:06, спустя 13 часов 39 минут 2 секунды

    echo '<pre>';
    перед print_r и
    echo '</pre>';
    после

    мне xdebug нравится
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 декабря 2010 г. 6:11, спустя 4 минуты 20 секунд


    echo '<pre>';
    перед print_r и
    echo '</pre>';
    после

    мне xdebug нравится
    не всегда хорошо, например при ajax'е дебаге по быстрому, столько мата появляется у меня, я ебал, когда он свою елочку раскрашенную выкладывает в код … ух блея
    Сапожник без сапог
  • jijidesign

    Сообщения: 27 Репутация: N Группа: Кто попало

    Spritz 7 декабря 2010 г. 6:23, спустя 12 минут 36 секунд

    Спасибо всем за советы, но :)
    $login = mysql_real_escape_string($login);
    $pass = mysql_real_escape_string($pass);
    mysql_query("SELECT * FROM `user` WHERE `login`='$login' AND `passmd5`=MD5(CONCAT('$pass', `salt`)) LIMIT 1");

    Но я не просил код для авторизации)) Просто я хочу разобраться, а что у меня написано это так чисто для примера )
    Но все равно спасибо, будем дальше учится :)
    Спустя 239 сек.
    Но вот капец, пропускать пары по теории алгоритмов и дискретной математике, сейчас сижу читаю про логические операции, и таблицу истинности :)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!