За последние 24 часа нас посетил 17661 программист и 1613 роботов. Сейчас ищут 1210 программистов ...

Скрипт регистрации не работает в 7 версии php. Помогите подправить.

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

  1. sokol8692

    sokol8692 Активный пользователь

    С нами с:
    24 дек 2010
    Сообщения:
    28
    Симпатии:
    0
    Помогите плиз подправить код
    Скрипт регистрации пользователей
    На 5,6 работал отлично. Сейчас перешли на php7 не хочет работать
    Напр где было mysql_query я поменял на mysqli_query

    вот тут не хочет добавлять
    Мне кажется что проблема в mysql_result . Скорее всего в 7 версии нужно по другому переписать
    PHP:
    1. if (!empty($_POST['login']) AND !empty($_POST['password']))
    2. {
    3. // фильтрируем логин и пароль
    4. $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    5. $password = mysql_real_escape_string(htmlspecialchars($_POST['password']));
    6.  
    7. // проверяем есть ли логин в нашей базе данных
    8.     if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' LIMIT 1;"), 0) != 0)
    9.     {
    10.         echo 'Выбранный логин уже зарегистрирован!';
    11.         exit();
    12.     }
    13. // заносим данные в таблицу, обратите внимание - пароль кодируем в md5
    14.     mysql_query("INSERT INTO `users_profiles` (`username`, `password`) VALUES ('".$login."', '".md5($password)."')");
    15.     echo 'Вы успешно зарегистрированы!';
    16.     exit();
    17. }

    так же само тут не запускается
    когда водятся данные для входа . Вроде проблема в строчке где mysql_result .....
    Код (Text):
    1. if(!empty($_POST['login']) AND !empty($_POST['password']))
    2. {
    3. // фильтрируем логин и пароль
    4. $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    5. $password = mysql_real_escape_string(htmlspecialchars($_POST['password']));
    6.  
    7.     $search_user = mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' AND `password` = '".md5($password)."'"), 0);
    8.     if($search_user == 0)
    9.     {
    10.         echo '<form  id="myform"  class="all" action="login.php" method="POST"><div align="center">Введенные данные неправильные или пользователь не найден. <br /><br /><a href="login.php"  class="button" >Авторизация</a> </div></form>';
    11.          
    12.         exit();
    13.     }
     
  2. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    документацию по mysqli нужно почитать. там небольшие изменения по сравнению с mysql не только в добавлении буквы i
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Но в вашем коде везде mysql, а не mysqli.
    Ну и да, хотите работать с mysqli - работайте с ним как с mysqli, а не как с mysql. Это другой интерфейс, а не переименованный старый.
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    внезапно™
    --- Добавлено ---
    кроме шуток, лично я недоумеваю зачем разрабы пхп устроили эту канитель. запросто могли обновить драйвер сохряняя API, как в случае с mysqlnd. но нет, решили что уход с расширения mysql должен сопровождаться тотальным вмешательством в исходники.
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Там такое "обновить", что проще переписать было. API поменялся тоже не просто так. И тут либо двоить API-инструкции и логику, поддерживая и старый набор, которому плевать на кодировку, которому плевать на линк коннекта, который имплементирует совсем другой набор методов, который наглухо завязан на логику совершенно другой библиотеки. Который написан хз когда и хз сколько там говнокода под капотом нерефакторенного, либо сделать отдельную либу. Без этих проблем. С большим временем на переход старой в deprecated и с еще бОльшим временем на переход из deprecated в removed. Они выбрали второй путь.

    А потом еще фиг заставишь людей использовать новые возможности, которые закрывают дыры. Людям же и так норм. Люди готовы втыкать в код собак, думая, что ошибки исправляют. Иногда людям нужно прививать хорошие манеры в принудительном порядке. Увы. Хочешь, чтобы твой код работал на новой платформе - бедь добр, следуй гайдлайнам, которым уже скоро 5 лет будет.

    Как говорят индейцы - если лошадь сдохла, слезь.
     
    #5 Fell-x27, 8 июн 2017
    Последнее редактирование: 8 июн 2017
    san4ez нравится это.
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    не усложняй. я говорю про интерфейс, а не про то что под капотом. интерфейс процедурного варианта mysqli очень похож на mysql. можно было подменить запросто.
    --- Добавлено ---
    пыху ругают за то, что она слишком добра к нубам, что тащит горы легаси. это их принципиальный подход. почему же они так непоследовательны в этом конкретном случае — я не понимаю.
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Потому что пора пыхе взрослеть. И она начала. Не только mysql отвалился же. m_crypt тоже умер, точнее депрекейтнулся. Официальная причина: "эта либа имела слишком упоротый API и уже 10 лет не обновлялась, у нас нет времени. По этому мы ее выбросили. Теперь вместо нее будет обертка над OpenSSL". Это я прочувствовал на себе, покуда использую шифрование в текущем проекте. Но ничего, переход был довольно простой. OpenSSL нравится больше.

    И это тоже правильно.
    До 7 версии пыха была в кризисе. Шестая версия умерла не родившись. Седьмая - это новое ядро, новый подход к работе, новые структуры данных, все с чистого листа. Без оглядки на легаси. Тот факт, что при этом прямая совместимость сломалась всего лишь в паре-тройке конкретных узких мест - уже чудо.
     
  8. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    хахаха. без оглядки. да практически весь хлам на месте: засранное глобальное пространство имён, непоследовательность в именовании функций, непоследовательность в порядке аргументов, $_REQUEST, $GLOBALS, ошибки не только как исключения, но и как… мнэ… ошибки, ну и т.д.
    --- Добавлено ---
    это не будет разобрано никогда. если разобрать, это уже не PHP, а новый язык будет. так какого буя они убили интерфейс mysql ?! чтобы хоть как-то ущипнуть своих позователей?
     
    denis01 нравится это.
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Думаю, имели место достаточные причины. Просто так от нехрен делать писать новый адаптер едва ли кто-то будет.
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    ясно, начальству виднее!