За последние 24 часа нас посетил 22651 программист и 1278 роботов. Сейчас ищет 791 программист ...

Система регистрации, помогите решить проблему.

Тема в разделе "PHP для новичков", создана пользователем Фарход, 20 янв 2017.

Метки:
  1. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    У меня такая проблема, есть сайт и там я пытаюсь сделать систему регистрации, сначала проверяется email потом пароль
    PHP:
    1. else if ($_POST['register_f']) {
    2.     email_valid();
    3.     password_valid();
    4.     if ( mysqli_num_rows(mysqli_query($CONNECT, "SELECT `id` FROM `users` WHERE `email` = '$_POST[email]'")) )
    5.          message('Этот E-mail занят');
    6.      $code = random_str(5);
    7.      $_SESSION['confirm'] = array(
    8.          'type' => 'register',
    9.          'email' => $_POST['email'],
    10.          'password' => $_POST['password'],
    11.          'code' => $code,
    12.          );
    13. mail($_POST['email'], 'Регистрация', "Код подтверждения регистрации: <b>$code</b>");
    14. go('confirm');
    потом он переносит на страничку confim,
    PHP:
    1. else if ($_POST['confirm_f']) {
    2.     if ( $_SESSION['confirm']['type'] == 'register') {
    3.         if ( $_SESSION['confirm']['code'] != $_POST['code'] )
    4.                 message('Registratsiyani tasdiqlovchi kod xato kiritildi!');
    5.             $email = $_POST['email'];
    6.             $password = $_POST['password'];
    7.             $reg_date = getdate();
    8.             mysqli_query("INSERT INTO `user_db`(`id`, `email`, `password`, `reg_date`) VALUES ('','$email', '$password', '$reg_date')", $CONNECT);
    9.             unset($_SESSION['confirm']);
    10.             go('kirish');
    11.         }
    12.  
    13.     else not_found();
    14.  
    15. }
    после проверки код регистрации он должен занести данные в базу, но почему то не заносит, в файле log.php пишет
    PHP:
    1. mysqli_query() expects parameter 1 to be mysqli, null given
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    PHP:
    1.  mysqli_query("INSERT INTO `user_db`(`email`, `password`, `reg_date`) VALUES ('$email', '$password', '$reg_date')", $CONNECT);
     
  3. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    а как мне данные из сессии достать?
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    какие данные?
     
  5. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    изначально код был таким
    PHP:
    1. mysqli_query($CONNECT, 'INSERT INTO `users` VALUES ("", "'.$_SESSION['confirm']['email'].'", "'.$_SESSION['confirm']['password'].'")');
    он вообще правильный?
     
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Данные сессии хранятся в супер-глобальном массиве $_SESSION. Сделайте var_dump ($_SESSION), и все данные, которые там есть появятся на экране... Если они там есть, конечно.
     
  7. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    Попробовал код
    PHP:
    1. else if ($_POST['confirm_f']) {
    2.     if ( $_SESSION['confirm']['type'] == 'register') {
    3.         if ( $_SESSION['confirm']['code'] != $_POST['code'] )
    4.                 message('Код активации указан неверно!');
    5.             $email = $_POST['email'];
    6.             $password = $_POST['password'];
    7.             mysqli_query("INSERT INTO `user_db`(`email`, `password`) VALUES ('$email', '$password')", $CONNECT);
    8.             unset($_SESSION['confirm']);
    9.             go('login');
    10.         }
    11.  
    12.     else not_found();
    13.  
    14. }
    потом посмотрел лог сервера там ошибка
    Код (Text):
    1. PHP Warning:  mysqli_query() expects parameter 1 to be mysqli, string given in /guest/gform.php on line 35
    и данные в базу не записываются
     
  8. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    $CONNECT и запрос поменяй местами, ЧИТАЙ ДОКУМЕНТАЦИЮ!!!
     
  9. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    опять та же самая ошибка
    Код (Text):
    1. PHP Warning:  mysqli_query() expects parameter 1 to be mysqli, null given
     
  10. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    у самого то есть какие мысли почему?
     
  11. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    думаю что ошибка в этом коде
    PHP:
    1. mysqli_query( $CONNECT, "INSERT INTO `user_db`(`email`, `password`) VALUES ('$email', '$password')");
    также у меня при нажатии кнопки регистрации этот код должен проверить email адрес
    PHP:
    1. if ( mysqli_num_rows(mysqli_query($CONNECT, "SELECT `id` FROM `user_db` WHERE `email` = '$_POST[email]'")) )
    2.          message('Этот email уже занят!');
    но он тоже не работает та же самая проблема
    Код (Text):
    1. PHP Warning:  mysqli_query() expects parameter 1 to be mysqli, null given
     
  12. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Как ты думаешь, зачем переменная $CONNECT?
     
  13. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    для подключения к базе банных
     
  14. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Оно есть у тебя, это подключение? Если mysqli_query говорит что ему не дали параметр, значит что-то с подключением, видимо.
     
  15. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    да, а то страничка вообще не загрузилась бы, потому что в начале страницы стоит проверка подключения
    PHP:
    1. $CONNTECT = mysqli_connect('localhost', '*******', '********', '********');
    2. if(!$CONNTECT) exit('MYSQLI error');
     
  16. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Выведи на экран содержимое переменной $CONNECT и посмотри что в ней.

    Если ты код копировал из документа, то $CONNTECT и $CONNECT - разные переменные.
     
  17. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А подключение в том же файле что и всё остальное? с require ничего не напутал? Обычно такая ошибка возникает как раз когда что-то с подключением.
    --- Добавлено ---
    Оу, не заметил)
     
    Фарход нравится это.
  18. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан
    оооой, все нашлась ошибка, спасибо большое TeslaFeo
     
  19. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
  20. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я такие часто используемые переменные стараюсь называть двумя-тремя буквами) $db и т.д.
     
  21. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    @SamyRed Наверное, так и надо)
     
  22. Фарход

    Фарход Новичок

    С нами с:
    20 янв 2017
    Сообщения:
    18
    Симпатии:
    1
    Адрес:
    Узбекистан