За последние 24 часа нас посетили 17405 программистов и 1725 роботов. Сейчас ищут 1632 программиста ...

Порядок выполнения скрипта в бд

Тема в разделе "PHP для новичков", создана пользователем energy455, 4 фев 2015.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    http://php.ru/manual/function.var-dump.html

    ну серьёзно. что ты ему передал, чтобы получить
    ну я понимаю что, я хочу чтобы для себя ответил
     
  2. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    вот ответ от mysqli_query
    Код (Text):
    1. object(mysqli_result)#8 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) } object(mysqli_result)#7 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }
    так?))
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  4. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    от - mysqli_fetch_array($user01);
    Код (Text):
    1. NULL NULL
    $text_keys['login']
    Код (Text):
    1. NULL
    ну вот, а дальше что делать?
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Что говорит документация по поводу mysqli_fetch_array когда она возвращает NULL?
     
  6. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    значит нету такого кода в таблице , верно?
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а ты проверь sql запрос в phpmyadmin и посмотри на результат
     
  8. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    http://prntscr.com/6256k2 ??
    если что я выше при проверке запрашивал число которого нет в бд

    Добавлено спустя 30 минут 48 секунд:
    Короче, вот часть кода с движка DLE , там есть и мой код , как теперь правильно сделать что бы после проверки ключ удалялся?
    Код (PHP):
    1. function check_reg($name, $email, $password1, $password2, $sec_code = 1, $sec_code_session = 1) {
    2.     global $lang, $db, $banned_info, $relates_word, $config;
    3.     $stop = "";
    4.     $elita_keys = isset($_POST['elita_keys']) ? htmlspecialchars($_POST['elita_keys']) : '';
    5.     $mysqli = new mysqli("localhost", '', '', '');
    6.     if (mysqli_connect_errno()) {
    7.         printf($stop .= "Ошибка соединения: %s\n", mysqli_connect_error());
    8.         exit();
    9.     } else {
    10.     $user01 = mysqli_query($mysqli, "SELECT login FROM kod WHERE login = '$elita_keys'");
    11.         $text_keys = mysqli_fetch_array($user01);
    12.         
    13.          if (empty($text_keys['login'])) 
    14.         {
    15.             $stop .= 'Вы ввели не правильный ключ :(';
    16.         }else {
    17.  
    18.     if( $sec_code != $sec_code_session OR !$sec_code_session ) $stop .= $lang['reg_err_19'];
    19.     if( $password1 != $password2 ) $stop .= $lang['reg_err_1'];
    20.     if( strlen( $password1 ) < 6 ) $stop .= $lang['reg_err_2'];
    21.     if( dle_strlen( $name, $config['charset'] ) > 30 OR dle_strlen(trim($name), $config['charset']) < 3) $stop .= $lang['reg_err_3'];
    22.     if( preg_match( "/[\||\'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\{\+]/", $name ) ) $stop .= $lang['reg_err_4'];
    23.     if( empty( $email ) OR strlen( $email ) > 50 OR @count(explode("@", $email)) != 2) $stop .= $lang['reg_err_6'];
    24.     if (strpos( strtolower ($name) , '.php' ) !== false) $stop .= $lang['reg_err_4'];
    25.  
    26.     if( stripos(urlencode ($name), "%AD") !== false ) {
    27.  
    28.         $stop .= $lang['reg_err_4'];
    29.  
    30.     }
    31.     }
    32.     }
    33.  
     
  9. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    подскажите пожалуйста как правильно выполнить запрос на удаление.
    Код (PHP):
    1. $mysqli->query("DELETE login FROM kod") 
    так?
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    (((
    Тьфу... ну загугли блин((( тебе в кайф задавать вопросы на которые в интернете есть ответы? Это элементарно.
     
  11. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    я уже поискал и сделал так,
    Код (PHP):
    1. $mysqli->query("DELETE FROM kod WHERE login = '$elita_keys'"); 
    но он рано удаляет, скрипт не успевает сравнить ключи
     
  12. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    ???
    Почитай книгу что бы имелись хотя бы базовые знания.
    Удачи.
     
  13. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    ага спасибо

    Добавлено спустя 56 минут 53 секунды:
    так что делать то?
    они же должны выполняться по порядку, почему он тогда не успевает проверить?
     
  14. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    пожалуйста помогите)
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да не нужно фетчить аррей

    если там что-то есть, то код верный.
    если там нету, то код не верный.

    Добавлено спустя 1 минуту 5 секунд:
    ебать ты не врубаешься пиздец. Это уже десятый раз. Ты до сих пор не понимаешь сути своего запроса в бд?
     
  16. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    понимаю, но вот с удалением чет ступр
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да не важно когда удалять. важно что если нашел - значит код верный. Хоть сразу удаляй. Если хоть что-то удалилось - значит был верный код.

    Не важно когда удалять. Важно знать только одно - верный ли был код.
     
  18. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    отлично, разобрался, спасибо огромное. На сайте сделаю ссылку на форум в честь благодарности))
    сделал так
    Код (PHP):
    1.         $text_keys = mysqli_query($mysqli, "SELECT login FROM kod WHERE login = '$elita_keys'");
    2.         
    3.          if ($text_keys < 0) 
    4.         {
    5.             $stop .= 'Вы ввели не правильный ключ :(';
    6.         }else {
    7.         $del_key = $mysqli->query("DELETE FROM kod WHERE login = '$elita_keys'");
    8.         mysqli_close();
    Добавлено спустя 1 минуту 2 секунды:
    а тут не будет sql иньекций ? тоесть не смогут ли люди слить ключи?
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    if (text_keys->num_rows == 0)

    попробуй так
     
  20. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    так защищенней ?
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    окей, давай ещё раз. Ты должен смотреть в документации то, что возвращает функция.

    что по-твоему ты тут сравниваешь с чем?
    Код (Text):
    1. if ($text_keys < 0)
     
  22. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    Код (Text):
    1.  
    2.  $text_keys = mysqli_query($mysqli, "SELECT login FROM kod WHERE login = '$elita_keys'");  записываем в переменую что получили из бд
    3.        
    4.          if ($text_keys < 0) - если число в переменой меньше нуля ошибка, иначе ...
    все работет, я уже проверял.. Только вот насчет защиты хотел спросить
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    с чего ты взял что там число? ты читал доку? Что возвращает функция mysqli_query? =)

    Почему тебя интересует случай, когда некое число меньше нуля?
     
  24. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.

    Почему тебя интересует случай, когда некое число меньше нуля?[/quote]
    что бы в код движка было легче втулить
     
  25. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    как это связано и почему?