Как я могу использовать всю информацию пользователя в сессиях - PullRequest
0 голосов
/ 18 ноября 2018

Как использовать такие вещи, как $ email и $ image в сессиях, когда я использую только имя пользователя и пароль для входа в систему ind.Кажется, я могу использовать только $ username ()

Я не знаю, как собирать информацию о последнем пользователе в сеансах?

server.php

<?php 
session_start();

// variable declaration
$username = "";
$email    = "";
$errors = array(); 
$_SESSION['success'] = "";


// connect to database
$db = mysqli_connect('Localhost', 'user', 'pass', 'db');

// REGISTER USER
if (isset($_POST['reg_user'])) {
    // receive all input values from the form
    $username = mysqli_real_escape_string($db, $_POST['username']);
    $email = mysqli_real_escape_string($db, $_POST['email']);
    $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
    $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);

    $uploaddir = 'assets/images/users/';
    $image = $uploaddir . basename($_FILES['userfile']['name']);

    move_uploaded_file($_FILES['userfile']['tmp_name'], $image);

index.php

<?php 
session_start();

if (!isset($_SESSION['username'])) {
    $_SESSION['msg'] = "You must log in first";
    header('location: pages-login.php');
}

if (isset($_GET['logout'])) {
    session_destroy();
    unset($_SESSION['username']);
    header("location: pages-login.php");
}

?>

...

<?php if (isset($_SESSION['success'])) : ?>
                                        <div class="success" >
                                            <h3>
                                                <?php 
                                                    echo $_SESSION['success']; 
                                                    unset($_SESSION['success']);
                                                ?>
                                            </h3>
                                        </div>
                                    <?php endif ?>

                                    <ol class="breadcrumb">
                                        <li class="breadcrumb-item active">

                                            <!-- logged in user information -->
                                            <?php  if (isset($_SESSION['username'])) : ?>
                                                <p>Hej <strong><?php echo $_SESSION['username']; ?>! </strong>Velkommen til Kommandocentralen</p>
                                            <?php endif ?>

                                            <?php echo $_SESSION['email']; ?>!

                                        </li>
                                    </ol>

Я не могу заставить его дать $ email так же, как он дает мне $ username.

Я вырезал много кода между php-битами

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

да, это сработало - оно сохранило изображение в папке, которую я запрашивал. но теперь я не уверен, как это показать?

    // REGISTER USER
...
$uploaddir = 'assets/images/users/';
$image = $uploaddir . basename($_FILES['userfile']['name']);

move_uploaded_file($_FILES['userfile']['tmp_name'], $image);
...
$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
$_SESSION['userfile'] = $image;
...

    // LOGIN USER
...
$row = $results->fetch_array();
...
$_SESSION['username'] = $username;
$_SESSION['email'] = $row['email'];
$_SESSION['userfile'] = $row['userfile'];
...

А потом в index.php

...    
<img src="<?php echo $_SESSION['userfile']; ?>" />
...

Но ничего не показывает - вы можете понять, в чем моя ошибка?

0 голосов
/ 19 ноября 2018

Следуя тем же руководящим принципам учебника, на странице server.php, когда пользователь регистрируется или входит в систему, после строки, которая говорит $_SESSION['username'] = $username;, вы можете добавить другие данные сеанса после этого следующим образом:

При регистрации пользователя:

// REGISTER USER
if (isset($_POST['reg_user'])) {
    ...
    $_SESSION['username'] = $username;
    $_SESSION['email'] = $email;
    ...
}

Когда пользователь входит в систему:

// LOGIN USER
if (isset($_POST['login_user'])) {
    ...
    $row = $results->fetch_array();

    $_SESSION['username'] = $username;
    $_SESSION['email'] = $row['email'];
    ...
}

Для входа пользователя в систему, $results[0]['email'], ссылается на столбец email таблицы базы данных, поэтому любые данные, которые вы хотите сделать доступными, должны использовать те же данные, что и в таблице. Например, вы должны ссылаться на столбец image как $results[0]['image'].

Все остальные переменные сеанса могут быть установлены в соответствии с приведенным выше шаблоном.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...