За последние 24 часа нас посетили 21634 программиста и 1017 роботов. Сейчас ищут 717 программистов ...

Авторизация и регистрация на php

Тема в разделе "Прочие вопросы по PHP", создана пользователем Daryaa049, 5 окт 2020.

  1. Daryaa049

    Daryaa049 Новичок

    С нами с:
    5 окт 2020
    Сообщения:
    28
    Симпатии:
    0
    Здравствуйте, я начинающий программист по php. У меня возникла проблема в коде.Ввожу данные в строки (Фамилия,Имя,емаил,Телефон и Пароль), но почему-то не добавляется в phpmyadmin в базу данных. Все строки на месте, а пароль сбрасывается. Помогите, пожалуйста!

    PHP:
    1. <?
    2. $dbc = mysqli_connect('localhost','root','','registra');
    3. require_once 'connection.php';
    4.  
    5. if(isset($_POST['submit']))
    6. {
    7. $err = array();
    8.  
    9. //===========Фамилия===========//
    10. # Фамилия
    11. $Фамилия = $_POST['Фамилия'];
    12. # Проверка ввода фамилии
    13. if (empty($Фамилия)) {
    14. $err[]='<font color="red">Не введена фамилия!</font>';
    15. }
    16. # Проверка длины фамилии
    17. if (!empty($Фамилия) && (strlen($Фамилия) < 3 || strlen($Фамилия) > 32)) {
    18. $err[]='<font color="red">Фамилия должна содержать от 3 до 32 символов!</font>';
    19. }
    20.  
    21. # Проверка символов в фамилии
    22. if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Фамилия'])){
    23. $err[]='<font color="red">Ваша фамилия сожержит недопустимые символы!</font>';
    24. }
    25.  
    26.  
    27.  
    28.  
    29.  
    30.  
    31.  
    32.  
    33. //===========Имя===========//
    34. # Имя
    35. $Имя = $_POST['Имя'];
    36. # Проверка ввода имени
    37. if (empty($Фамилия)) {
    38. $err[]='<font color="red">Не введено имя!</font>';
    39. }
    40. # Проверка длины имени
    41. if (!empty($Имя) && (strlen($Имя) < 3 || strlen($Имя) > 32)) {
    42. $err[]='<font color="red">Имя должно содержать от 3 до 32 символов!</font>';
    43. }
    44.  
    45. # Проверка символов в имени
    46. if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Имя'])){
    47. $err[]='<font color="red">Ваше имя сожержит недопустимые символы!</font>';
    48. }
    49.  
    50.  
    51.  
    52.  
    53.  
    54.  
    55.  
    56. //===========Email===========//
    57. # Email
    58. $Email = $_POST['Email'];
    59. # Проверка ввода Email
    60. if (empty($Email)) {
    61. $err[]='<font color="red">Не введен Email!</font>';
    62. }
    63. # Проверка длины Email
    64. if (!empty($Email) && (strlen($Email) < 3 || strlen($Email) > 32)) {
    65. $err[]='<font color="red">Email должен содержать от 3 до 32 символов!</font>';
    66. }
    67. # Проверка символов в Email
    68. if(preg_match("|/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,4}$/i|",$_POST['Email'])){
    69. $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>';
    70. }
    71.  
    72.  
    73.  
    74.  
    75.  
    76.  
    77.  
    78.  
    79. //===========Телефон===========//
    80. # Телефон
    81. $Телефон = $_POST['Телефон'];
    82. # Проверка ввода телефон
    83. if (empty($Телефон)) {
    84. $err[]='<font color="red">Не введен телефон!</font>';
    85. }
    86. # Проверка длины телефон
    87. if (!empty($Телефон) && (strlen($Телефон) < 16 || strlen($Телефон) > 32)) {
    88. $err[]='<font color="red">Телефон должен содержать от 16 до 32 символов!</font>';
    89. }
    90.  
    91. # Проверка символов в телефон
    92. if(preg_match("|([+][375][0-9]{9,14})/i|",$_POST['Email'])){
    93. $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>';
    94. }
    95.  
    96.  
    97.  
    98.  
    99.  
    100.  
    101.  
    102. //===========Пароль===========//
    103. # Пароль
    104. $Пароль = $_POST['Пароль'];
    105. # Проверка ввода пароля
    106. if (empty($Пароль)) {
    107. $err[]='<font color="red">Не введен пароль!</font>';
    108. }
    109. # Проверка символов в пароле
    110. if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Пароль'])){
    111. $err[]='<font color="red">Ваш пароль сожержит недопустимые символы!</font>';
    112. }
    113. # Проверка длины пароля
    114. if (!empty($Пароль) && (strlen($Пароль) < 6 || strlen($Пароль) > 32)) {
    115. $err[]='<font color="red">Неверная длина пароля. Допустимо от 6 до 32 символов!</font>';
    116. }
    117. # Повторный пароль
    118. $Пароль1 = $_POST['Пароль1'];
    119. # Проверка ввода повторного пароля
    120. if (empty($Пароль1)) {
    121. $err[]='<font color="red">Не введен повторный пароль!</font>';
    122. }
    123. # Проверка совпадения паролей
    124. if (!empty($Пароль1) && $Пароль != $Пароль1){
    125. $err[]='<font color="red">Пароли не совпадают!</font>';
    126. }
    127.  
    128.  
    129.  
    130.  
    131.  
    132.  
    133. //=========== Проводим регистрацию ===========//
    134. if (!count($err))
    135. {
    136.  
    137.  
    138. # Запрос на регистрацию
    139. $result = mysqli_query( $dbc," INSERTINTO `регистрация`(Фамилия,Имя,Email,Телефон,Пароль)
    140. VALUES(
    141. '".$_POST['Фамилия']."',
    142. '".$_POST['Имя']."',
    143. '".$_POST['Email']."',
    144. '".$_POST['Телефон']."',
    145. '".$_POST['Пароль']."',
    146. '".md5($Пароль)."',
    147. )");
    148. # Выводим уведомление
    149. if ($result=='TRUE')
    150. {
    151. header("Location:success.php");// регистрация успешно создано!!!
    152. }
    153.  
    154. }
    155. if(count($err))
    156. {
    157. $_SESSION['msg']['reg-err'] = implode('<br />',$err);
    158. }
    159. }
    160. ?>
    161.  
    162. .....
    163.  
    164. <?php
    165. if($_SESSION['msg']['reg-err'])
    166. {
    167. echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
    168. unset($_SESSION['msg']['reg-err']);
    169. }
    170. if($_SESSION['msg']['reg-success'])
    171. {
    172. echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
    173. unset($_SESSION['msg']['reg-success']);
    174. }
    175. echo'
    176. <form action="" method="post" >
    177. <input name="Фамилия" type="text" placeholder="Ваша фамилия..." required value="'.$_POST["Фамилия"].'"/>
    178. <br>
    179. <input name="Имя" type="text" placeholder="Ваше имя..." required value="'.$_POST["Имя"].'"/>
    180. <br>
    181. <input name="Email" type="email" placeholder="Ваш email..." required value="'.$_POST["Email"].'"/>
    182. <br>
    183. <input name="Телефон" type="tel" placeholder="Ваш телефон..." required value="'.$_POST["Телефон"].'"/>
    184. <br>
    185.  
    186. <input name="Пароль" type="password" placeholder="Ваш пароль..." />
    187. <br>
    188. <input name="Пароль1" type="password" placeholder="Введите пароль еще раз..." />
    189. <br>
    190. <input type="submit" name="submit" value="Отправить">
    191. </form>
    192. '
    193. ?>
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Никогда так не делайте. Единственное, где более/менее допустимы русские идентификаторы - разбор XML-ек типа от 1С через SimpleXML. Идентификаторы должны быть только латиницей, и только полноценными словами английского языка. Заодно будете много новых слов узнавать. У меня всегда рядом словарь открыт

    С таблицами тоже самое. Только полноценные английские слова. Если вы мне на собеседовании такой код покажите, я дальше даже слушать не стану. Читайте про подготовленные выражения, нельзя вот так подставлять данные в запрос.

    По проблеме - не очевидно. Выведете ваш запрос на экран, что получается. То есть вместо mysqli_query($dbc, напишите die(, гляньте, что вывелось на экран, и что не так с запросом, который составила ваша программа.
     
  3. Daryaa049

    Daryaa049 Новичок

    С нами с:
    5 окт 2020
    Сообщения:
    28
    Симпатии:
    0
    Хорошо, спасибо, я сейчас попробую так сделать))):)
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Кол-во полей не совпадает с количеством вставляемых значений, вы зачем то вставляете пароль а потом его хеш.. .
    Хеш только надо.
    Ну всё ужасно, начиная от кириллицы везде и заканчивая жуткими проверками которые реально не помогут, ну и sql интекции
     
  5. Daryaa049

    Daryaa049 Новичок

    С нами с:
    5 окт 2020
    Сообщения:
    28
    Симпатии:
    0
    Я тоже это начала замечать)))
    --- Добавлено ---
    Я решила убрать хеш и оставить обычный пароль. С помощью die выводит все строки как надо(т. е пишут всю информацию, которую я хочу).Дальше идет постоянно вот такое сообщение: upload_2020-10-5_21-33-2.png
    Код немножко так:
    PHP:
    1. <?
    2. mysqli_connect('localhost','root','','registra');
    3. require_once 'connection.php';
    4.         if(isset($_POST['submit']))
    5. {
    6.     $err = array();
    7.    
    8. //===========Фамилия===========//
    9. # Фамилия
    10.    $Fa = $_POST['Familia'];
    11. # Проверка ввода фамилии
    12.    if (empty($Fa)) {
    13.     $err[]='<font color="red">Не введена фамилия!</font>';
    14.     }
    15. # Проверка длины фамилии
    16.    if (!empty($Fa) && (strlen($Fa) < 3 || strlen($Fa) > 32)) {
    17.         $err[]='<font color="red">Фамилия должна содержать от 3 до 32 символов!</font>';
    18.     }
    19.  
    20. # Проверка символов в фамилии
    21.    if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Familia'])){
    22.         $err[]='<font color="red">Ваша фамилия сожержит недопустимые символы!</font>';
    23.     }
    24.  
    25.  
    26.  
    27.  
    28.  
    29.  
    30.  
    31.  
    32.     //===========Имя===========//
    33. # Имя
    34. $Im = $_POST['Ima'];
    35. # Проверка ввода имени
    36.    if (empty($Im)) {
    37.     $err[]='<font color="red">Не введено имя!</font>';
    38.     }
    39. # Проверка длины имени
    40.    if (!empty($Im) && (strlen($Im) < 3 || strlen($Im) > 32)) {
    41.         $err[]='<font color="red">Имя должно содержать от 3 до 32 символов!</font>';
    42.     }
    43.  
    44. # Проверка символов в имени
    45.    if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Ima'])){
    46.         $err[]='<font color="red">Ваше имя сожержит недопустимые символы!</font>';
    47.     }
    48.  
    49.  
    50.  
    51.  
    52.  
    53.  
    54.  
    55.     //===========Email===========//
    56. # Email
    57. $Email = $_POST['Email'];
    58. # Проверка ввода Email
    59.    if (empty($Email)) {
    60.     $err[]='<font color="red">Не введен Email!</font>';
    61.     }
    62. # Проверка длины Email
    63.    if (!empty($Email) && (strlen($Email) < 3 || strlen($Email) > 32)) {
    64.         $err[]='<font color="red">Email должен содержать от 3 до 32 символов!</font>';
    65.     }
    66. # Проверка символов в Email
    67.    if(preg_match("|/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,4}$/i|",$_POST['Email'])){
    68.         $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>';
    69.     }
    70.  
    71.  
    72.  
    73.  
    74.  
    75.  
    76.  
    77.     //===========Телефон===========//
    78. # Телефон
    79. $Tel = $_POST['Telefon'];
    80. # Проверка ввода телефон
    81.    if (empty($Tel)) {
    82.     $err[]='<font color="red">Не введен телефон!</font>';
    83.     }
    84. # Проверка длины телефон
    85.    if (!empty($Tel) && (strlen($Tel) < 16 || strlen($Tel) > 32)) {
    86.         $err[]='<font color="red">Телефон должен содержать от 16 до 32 символов!</font>';
    87.     }
    88.  
    89. # Проверка символов в телефон
    90.    if(preg_match("|([+][375][0-9]{9,14})/i|",$_POST['Telefon'])){
    91.         $err[]='<font color="red">Ваш Email сожержит недопустимые символы!</font>';
    92.     }
    93.  
    94.  
    95.  
    96.  
    97.  
    98.  
    99.  
    100. //===========Пароль===========//
    101. # Пароль
    102.    $Par= $_POST['Parol'];  
    103. # Проверка ввода пароля
    104.    if (empty($Par)) {
    105.     $err[]='<font color="red">Не введен пароль!</font>';
    106.     }
    107. # Проверка символов в пароле
    108.    if(preg_match('|/[^a-z0-9\-\_\.]+/i|',$_POST['Parol'])){
    109.         $err[]='<font color="red">Ваш пароль сожержит недопустимые символы!</font>';
    110.     }  
    111. # Проверка длины пароля
    112.    if (!empty($Par) && (strlen($Par) < 6 || strlen($Par) > 32)) {
    113.     $err[]='<font color="red">Неверная длина пароля. Допустимо от 6 до 32 символов!</font>';
    114.     }
    115. # Повторный пароль  
    116.     $Par1 = $_POST['Parol1'];
    117. # Проверка ввода повторного пароля
    118.     if (empty($Par1)) {
    119.      $err[]='<font color="red">Не введен повторный пароль!</font>';
    120.     }
    121. # Проверка совпадения паролей
    122.     if (!empty($Par1) && $Par != $Par1){
    123.      $err[]='<font color="red">Пароли не совпадают!</font>';
    124.      }
    125.  
    126.  
    127.  
    128.  
    129.  
    130. //=========== Проводим регистрацию ===========//
    131.     if (!count($err))
    132.     {
    133.  
    134.  
    135. # Запрос на регистрацию
    136.    $result = mysqli_query(" INSERT INTO `registratsia`(Familia,Ima,Email,Telefon,Parol)
    137.                        VALUES(
    138.                            '".$_POST['Familia']."',
    139.                            '".$_POST['Ima']."',
    140.                            '".$_POST['Email']."',
    141.                            '".$_POST['Telefon']."',
    142.                            '".$_POST['Parol']."',
    143.                        )");                  
    144. # Выводим уведомление
    145.        if ($result=='TRUE')
    146.         {  
    147.             header("Location:success.php");// регистрация успешно создано!!!
    148.         }
    149.    }
    150. if(count($err))
    151.     {
    152.         $_SESSION['msg']['reg-err'] = implode('<br />',$err);
    153.     }      
    154. }
    155. ?>
    156. .....
    157. <?php
    158.                          
    159.                         if($_SESSION['msg']['reg-err'])
    160.                     {
    161.                         echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
    162.                         unset($_SESSION['msg']['reg-err']);
    163.                     }
    164.                        
    165.                        
    166.                         if($_SESSION['msg']['reg-success'])
    167.                         {
    168.                             echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
    169.                             unset($_SESSION['msg']['reg-success']);
    170.                         }
    171.                             echo'  
    172.                    <form action="" method="post" >
    173.                  
    174.                <input name="Familia" type="text"  placeholder="Ваша фамилия..." required value="'.$_POST["Familia"].'"/>
    175.                <br>
    176.                <input name="Ima" type="text"  placeholder="Ваше имя..." required value="'.$_POST["Ima"].'"/>
    177.                <br>
    178.                <input name="Email" type="email"  placeholder="Ваш email..." required value="'.$_POST["Email"].'"/>
    179.                <br>
    180.                <input name="Telefon" type="tel"  placeholder="Ваш телефон..." required value="'.$_POST["Telefon"].'"/>
    181.                <br>
    182.  
    183.                <input name="Parol" type="password"  placeholder="Ваш пароль..."  />
    184.                <br>
    185.                <input name="Parol1" type="password"  placeholder="Введите пароль еще раз..."  />
    186.                <br>
    187.                <input type="submit" name="submit" value="Отправить">
    188.                </form>
    189.                '
    190.              ?>  
    191.  
    Если честно я уже весть интернет облазила, и толку почти не было(
    --- Добавлено ---
    Я попробую чуть по другому код написать, может как раз из за того, что здесь много не нужного
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Попробуйте просто спокойно прочесть сообщение, перевести, прочесть документацию по данной функции...
    Не все ответы есть в интернете, это как книгами пользоваться - информацию найти можно, но надо потом уметь применить

    Никогда не будет истиной...
    Читайте азы - типы данных, что такое строки, что такое логическое
     
  7. Daryaa049

    Daryaa049 Новичок

    С нами с:
    5 окт 2020
    Сообщения:
    28
    Симпатии:
    0
    Хорошо, спасибо)
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Это тоже плохо. Чуть лучше, чем кириллица, но плохо. Должно быть lastName, name, email, phone, password.

    Потом, потеряли первый аргумент, о чём вам и сообщил интерпретатор. Видимо, когда с die меняли обратно на mysqli_query/
    --- Добавлено ---
    Покажите запрос, который вывелся, когда die делали.

    https://www.php.net/manual/ru/mysqli.prepare.php - и почитайте вот это. Нельзя то, что пришло от пользователя, сразу в запрос вставлять. Хранить пароль в открытом виде - сойдёт разве что для учебного задания. Пароль надо хешировать, причём не md5, а https://www.php.net/manual/ru/function.password-hash