@nikidreiks

Как правильно привязать сессию пользователя к загрузке/обновлению аватарки?

Всем привет! Есть такой код. При авторизации пользователя используется $_SESSION["logged_user"], авторизация сама через Red Bean. Никак не могу привязать конкретного пользователя $_SESSION["logged_user"] к загрузке/обновлению аватарки.

В таблице пользователь с id=1, но есть еще и пользователи с id=2, id=3 и т.д. в Mysql обновляет профиль только у 1 пользователя, а у не у 2 или 3 авторизованного. Вот как мне от этого избавиться $_SESSION["id"] = 1, используя конкретного пользователя, который авторизовался?

<?php
    $_SESSION["id"] = 1; // Сессия юзера
    $sessionId = $_SESSION["id"];
    $user = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM tb_user WHERE id = $sessionId"));
    ?>
    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>Обновление</title>
        <link rel="stylesheet" href="styles.css">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
      </head>
      <body>
        <form class="form" id = "form" action="" enctype="multipart/form-data" method="post">
          <div class="upload">
            <?php
            $id = $user["id"];
            $image = $user["image"];
            ?>
            <img src="img/<?php echo $image; ?>" width = 125 height = 125 title="<?php echo $image; ?>">
            <div class="round">
              <input type="hidden" name="id" value="<?php echo $id; ?>">
              <input type="hidden" name="name" value="<?php echo $name; ?>">
              <input type="file" name="image" id = "image" accept=".jpg, .jpeg, .png">
              <i class = "fa fa-camera" style = "color: #fff;"></i>
            </div>
          </div>
        </form>
        <script type="text/javascript">
          document.getElementById("image").onchange = function(){
              document.getElementById("form").submit();
          };
        </script>
        <?php
        if(isset($_FILES["image"]["name"])){
          $id = $_POST["id"];
          $name = $_POST["name"];
          $imageName = $_FILES["image"]["name"];
          $imageSize = $_FILES["image"]["size"];
          $tmpName = $_FILES["image"]["tmp_name"];
          // Image validation
          $validImageExtension = ['jpg', 'jpeg', 'png'];
          $imageExtension = explode('.', $imageName);
          $imageExtension = strtolower(end($imageExtension));
          if (!in_array($imageExtension, $validImageExtension)){
            echo
            "
            <script>
              alert('Invalid Image Extension');
            document.location.href = 'index.php';
            </script>
            ";
          }
          elseif ($imageSize > 1200000){
            echo
            "
            <script>
              alert('Image Size Is Too Large');
            document.location.href = 'index.php';
            </script>
            ";
          }
          else{
            $newImageName = $name . " - " . date("Y.m.d") . " - " . date("h.i.sa"); // Generate new image name
            $newImageName .= '.' . $imageExtension;
            $query = "UPDATE tb_user SET image = '$newImageName' WHERE id = $id";
            mysqli_query($conn, $query);
            move_uploaded_file($tmpName, 'img/' . $newImageName);
            echo
            "
            <script>
            document.location.href = 'index.php';
            </script>
            ";
          }
        }
        ?>
      </body>
    </html>

Код авторизации пользователя:

<?php 


$data = $_POST;
if ( isset($data['do_login']) ) 
{
$errors = array();
$user = R::findOne('users', 'login = ?', array($data['login']));
if ($user) 
{
    // логин существует
    if( password_verify($data['password'], $user->password)) {
        // всё хорошо, логиним пользователя
        $_SESSION['logged_user'] = $user;
        header('Location: /'); 
    } else
    {
        $errors[] = 'Неверно введён пароль!';
    }
} else 
{
    $errors[] = 'Пользователь с таким логином не найден!';
}


}

?>
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@runapa
При авторизации вам надо класть в сессию пользователя его id.
Должно получиться что-то вроде $_SESSION[‘logged_user’][‘user_id’], и при загрузке аватарки использовать эту переменную.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы