За последние 24 часа нас посетили 110312 программистов и 7710 роботов. Сейчас ищут 1682 программиста ...

Ошибок нет, но имя пользователя не отображается

Тема в разделе "PHP для новичков", создана пользователем Галочка, 31 авг 2022.

  1. Галочка

    Галочка Новичок

    С нами с:
    31 авг 2022
    Сообщения:
    2
    Симпатии:
    0
    Это главная страница, где пользователь регистрируется:
    registration.php:
    PHP:
    1. <?php
    2.   require "db.php";
    3.   $data = $_POST;
    4.   if (isset($data['sign_up'])) {
    5.     $error = array();
    6.     if (trim($data['nik']) == "") {
    7.       $error[] = "Введите Ник";
    8.     }
    9.     if (trim($data['email']) == "") {
    10.       $error[] = "Введите электронную почту";
    11.     }
    12.     if (trim($data['password']) == "") {
    13.       $error[] = "Введите пароль";
    14.     }
    15.     if (trim($data['password_2']) == "") {
    16.       $error[] = "Повторите пароль";
    17.     }
    18.     if (R::count('users', 'nik = ?', array($data['nik'])) > 0) {
    19.       $error[] = "Данный пользователь уже зарегистрирован на сайте";
    20.     }
    21.     if (trim($data['password']) != trim($data['password_2'])) {
    22.       $error[] = "Пароли не совпадают";
    23.     }
    24.  
    25.     if (empty($error)) {
    26.       $user = R::dispense('users');
    27.       $user-> nik = $data['nik'];
    28.       $user-> email = $data['email'];
    29.       $user-> password = password_hash($data['password'], PASSWORD_DEFAULT);
    30.       $user-> ip = $_SERVER['REMOTE_ADDR'];
    31.       $user-> d_date_reg = date('d');
    32.       $user-> m_date_reg = date('m');
    33.       $user-> y_date_reg = date('Y');
    34.       $user-> h_date_reg = date('H');
    35.       $user-> m_time_reg = date('i');
    36.       R::store($user);
    37.     }else {
    38.       echo "<div>".array_shift($error)."</div>";
    39.     }
    40.   }
    41.  
    42.   if(isset($data['sign_in'])){
    43.     $user = R::findOne('users', 'nik = ?', array($data['nik']));
    44.     if ($user) {
    45.       if (password_verify($data['password'], $user->password)) {
    46.         $_SESSION['logged_user'] = $user;
    47.       }
    48.     }
    49.   }
    50. ?>
    51. <?php if(isset($_SESSION['logged_user'])) : ?>
    52.     <meta http-equiv="refresh" content="0; URL='user.php'">
    53. <?php else : ?>
    54.   <html>
    55.     <head>
    56.       <title>Регистрация пользователя</title>
    57.       <link rel="preconnect" href="[URL]https://fonts.googleapis.com[/URL] ">
    58.       <link rel="preconnect" href="[URL]https://fonts.gstatic.com[/URL] " crossorigin>
    59.       <link href="[URL]https://fonts.googleapis.com/css2[/URL] ?family=Cuprum&display=swap" rel="stylesheet">
    60.     </head>
    61.     <body>
    62.     <h2>Регистрация на МиЭндМи</h2>
    63.     <form action="registration.php" method="POST">
    64.       <input type="text" name="nik" placeholder="Ник">
    65.       <input type="text" name="email" placeholder="Электронная почта">
    66.       <input type="password" name="password" placeholder="Пароль">
    67.       <input type="password" name="password_2" placeholder="Повторите пароль">
    68.       <button type="submit" name="sign_up">Регистрация</button>
    69.     </form>
    70.     <h2>Вход</h2>
    71.     <form action="registration.php" method="POST">
    72.       <input type="text" name="nik" placeholder="Ник">
    73.       <input type="password" name="password" placeholder="Пароль">
    74.       <button type="submit" name="sign_in">Войти</button>
    75.     </form>
    76.     </body>
    77.   </html>
    78. <?php endif; ?>
    После регистрации данные сохраняются в базу данных на сайте phpMyAdmin, и пользователь может авторизоваться:
    user.php:
    PHP:
    1. <?php
    2.   require "db.php";
    3.   $user = R::findOne('users', 'id = ?', array($_SESSION['logged_user']->id));
    4.  ?>
    5. <html>
    6.   <head>
    7.     <title>Ваша страница</title>
    8.     <link rel="preconnect" href="[URL]https://fonts.googleapis.com[/URL] ">
    9.     <link rel="preconnect" href="[URL]https://fonts.gstatic.com[/URL] " crossorigin>
    10.     <link href="[URL]https://fonts.googleapis.com/css2[/URL] ?family=Cuprum&display=swap" rel="stylesheet">
    11.   </head>
    12.   <body>
    13.     <p><?php if ($user == NULL) {
    14.       echo "Yes"; //из-за ошибки я проверяла переменную, Yes выводится. здесь должно быть <?php  echo $user->nik?>
    15.     } ?></p>
    16.     <a href="/logout.php">Выйти</a>
    17.   </body>
    18. </html>
    19.  Также пользователь может выйти из своего аккаунта:
    20. logout.php:
    21. <?php
    22.   require "db.php";
    23.   //unset($_SESSION['logged_user']);
    24.   //Здесь пыталась сделать так, чтобы сессия не удалялась, но на решение это не повлияло
    25.   header('Location: /registration.php');
    26. ?>
    Здесь база данных:
    db.php:
    PHP:
    1. <?php
    2.   require "libs/rb.php";
    3.   R::setup( 'mysql:host=localhost;dbname=meandme', 'root', '' );
    4. ?>
    Много чего пыталась сделать, но не получается. Кто понимает в чём здесь проблема, очень жду вашего ответа.
    Версия PHP: 7.3
    Версия MySQL: 8.0

    От модератора: вставляй код кнопкой </>
     
    #1 Галочка, 31 авг 2022
    Последнее редактирование модератором: 1 сен 2022
  2. lastdays

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

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Такая проблема только с русскими именами?
    Подозрение на символы ( кодировка )
     
  3. Галочка

    Галочка Новичок

    С нами с:
    31 авг 2022
    Сообщения:
    2
    Симпатии:
    0
    Нет, там нет русских букв. Проверяла только на английских никах
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    OMG :eek:

    И вообще много фигни. Типа поиска по нику прямо при регистрации после попытки вставки. Вывод в ответ на POST.
    --- Добавлено ---
    Смотрю, store вполне вменяемо возвращает id при успешной вставке ;)
     
  5. sereginpro

    sereginpro Новичок

    С нами с:
    2 сен 2022
    Сообщения:
    5
    Симпатии:
    0
    Пробовали, посмотреть какой sql запрос у вас получается? Запрос полагаю в файле db.php
    Типа echo $sql;
    Также этот sql Запрос можно запустить в phpMyadmin и посмотреть там ник.