Задать вопрос
@king_kong

Как правильно вывести session, чтобы все работало как надо?

У меня есть страница пользователя

<?php
session_start();

?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Главная</title>
    <link rel="stylesheet" href="style.css">
    <link href="https://fonts.googleapis.com/css2?family=Dancing+Script:wght@400..700&display=swap" rel="stylesheet">
    <link rel="icon" type="image/x-icon" href="../img/logo/лого1_negate.png">
    
</head>

<body>
    <div class="header">
        <a href="#"><img class="main_logo" src="../img/logo/лого1.png" alt="logo"></a>
        <form class="header_form">
            <input type="text" name="text" class="search" placeholder="Найти...">
            <input type="submit" name="submit" class="submit" value="Поиск">
        </form>
        <img class="noti_logo" src="../img/уведомления.png" alt="notifications">

        <div class="header_user">
            <a href="#" >
                <p class='user_nick' ><?= $_SESSION['user']['nick']?></p>
                <p class='user_id' >id = <?= $_SESSION['user']['id']?></p>
            </a>
            <a href="#">
            <img class="user_logo" src="<?php 
                     session_reset();
                     echo '../' . $_SESSION['user']['main_foto'] . '.jpeg' ?>" alt="фото пользователя">
            </a>
        </div>
    </div>
    <div class="content">
        <div class="sidebar_left">
            <ul class="sidebar_left_list">
                <li class="sidebar_num1">Моя страница</li>
                <li class="sidebar_num1">Новости</li>
                <li class="sidebar_num1">Сообщения</li>
                <li class="sidebar_num1">Друзья</li>
                <li class="sidebar_num1">Группы</li>
                <li id="fotografii" class="sidebar_num1">Фотографии</li>
                <a href="../settings/settings.php">
                <div class="sidebar_num_settings">
                    
                    <li>Настройки</li>
                    <img class="settings_logo" src="../img/настройки.png" alt="настройки">
            
                </div>
                </a>

            </ul>
        </div>
        <div class="sidebar">
            <div class="sidebar_right1">
                <div class= 'function_picturs'>

                <div class='main_foto_border'><img class='main_foto' src="<?php 
                     session_reset();
                     echo '../' . $_SESSION['user']['main_foto'] . '.jpeg' ?>" alt=""></div>
                     
                    <form action="../include/main_foto.php" method= "POST" enctype="multipart/form-data" > 

                    <div class='button_download_picturs'>
                    <input type="file"  name="main_foto"  id="fileToUpload">
                    <label for="fileToUpload" class="input_file">
                        
                     <img class="img_downloads" src="../img/download.jpg" alt="">
                    </label>

                    <input type="submit" value="save" name="submit" class="save_img_download">
                    </div>

                    
                   <!-- <div class='button_download_picturs'><a href="#"><img src="../img/download.jpg" alt=""></a></div> -->
                    </form>

                     


                
                </div>
                


                <ul class="ul_sidebar_num2">
                    <li class="sidebar_num2">nickname: <?= $_SESSION['user']['nick']?></li>
                    <li class="sidebar_num2">Дата рождения: 25.12.2004</li>
                    <li class="sidebar_num2">
                    <?php
                  
                    if(!empty($_SESSION["user"]["city"])){
                        session_reset();
                        echo '<p class="cityfg">' . 'Город: '. $_SESSION['user']['city'] . '</p>';
                    } else{
                        echo <<<END

                    <form action="../include/include_city.php" method= "POST">
                    <label for="city">Город:</label>
                    <select id="city" name="city">
                    <option selected="selected"> по умолчанию </option>
                    <option > Санкт-Петербург</option>
                    <option >Москва</option>
                    <option >Сочи</option>
                    </select>


                    <input type="submit" value="save" name="submit" class="save_img_download">
                    </form>
                    END;
                    }
                    ?>
                   


                    </li>
                    <li class="sidebar_num2">email: <?= $_SESSION['user']['email']?></li>
                    <li class="sidebar_num2">


                        <p>
                            Статус: 
                        </p>
                        <form action="../include/status.php" method= "POST">
                        <input type="text" name="status">
                        </form>


                    </li>
                    <li class="sidebar_num2">Темная: темная</li>
                </ul>
            </div>
            <div class="sidebar_right2">
                <div class="sidebar_right2_num">
                    <ul class="list">
                        <li class="sidebar_num3">
                            <div>Фото</div>
                        </li>
                        <li class="sidebar_num4">
                            <div>Музыка</div>
                        </li>
                        <li class="sidebar_num5">
                            <div>Музыка</div>
                        </li>
                        <li class="sidebar_num6">
                            <div>Группы</div>
                        </li>
                        <li class="sidebar_num7">
                            <div>Друзья</div>
                        </li>
                    </ul>
                </div>
            </div>
            <div class="picturs">
                <img class="pic1" src="" alt="">
                <img class="pic2" src="" alt="">
                <img class="pic3" src="" alt="">
                <img class="pic4" src="" alt="">
                <img class="pic5" src="" alt="">
                <img class="pic5" src="" alt="">
            </div>
        </div>
    </div>
</body>

</html>


И файл обработки для занесения в бд и вывод значения session['user']['city']

<?php

session_start();
require_once 'connect.php';

$city = $_POST['city'];
$user_id = $_SESSION['user']['id'];

if(empty($_POST['city'])){

    $sql_city = "UPDATE `user` SET `city` = '$city' where `id` = '$user_id'"; 
    $select_city = $pdo->exec($sql_city);
    
    $_SESSION["user"]["city"] = $_POST["city"];


    header('Location: ../index/index.php');
} else{
    $_SESSION["user"]["city"] = $_POST["city"];
    header('Location: ../index/index.php');
};


Вопрос вот в чем: как мне вывести значение из бд поля city как только пользователь заходит на страницу, вместо того чтобы предлагать мне раскрывающийся список. Либо у меня уже глаза замылены и я не вижу очевидого, либо не могу понять логику
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
Daemon23RUS
@Daemon23RUS
Общая логика (если Вы профиль храните в сессионной переменной): Вижу, что Вы используете USER_ID, отсюда предполагаем, что пользователь у Вас логинится, так Вот в момент успешного залогинивания, Вы из БД заполняете сессионную переменную, в том числе и городом.
Ну и в момент изменения(записи) города, обновляете в 2х местах сразу и в сессионной переменной и в БД.
Плюс очень странная конструкция if(empty($_POST['city'])) и запись в БД, пустого значения ?
Полагаю, что структура сессионной переменной по факту отличается от того, что Вы в ней ожидаете, попробуйте var_dump($_SESSION); Как раз и Выясните что происходит
P.S. еще момент: $_SESSION['user']['city'] т.к в разрезе сессии ['user'] излишен
Ответ написан
Комментировать
@artem-dainov
Php, java, js. Boot spring, jquery, git
Если вы указали session_start() далее заполняйте сессию информацией на основе того, что у вас есть.
к примеру, подтягивайте данные из базы или ещё какого-то источника.

Однако, это просто рекомендация.
1. Не смешивайте php с html. Разделите фронт и бэкэнд.
2. Откажитесь от сессий, куки будут лучше. Особенно это станет заметно, если вы какой-то конвертор файлов сделаете.
Ответ написан
Ваш ответ на вопрос

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

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