$ _SESSION отображает только половину переменных сеанса и не обновляет их - PullRequest
0 голосов
/ 30 апреля 2020

пытаясь создать страницу профиля пользователя, я создал 3 страницы входа в систему. php, где пользователь входит в систему, используя адрес электронной почты и пароль, которые они использовали в реестре. php, после входа в систему пользователь может получить доступ к странице своего профиля. на котором я хочу отобразить его имя, фамилию, адрес электронной почты. Я также пытаюсь разрешить пользователю редактировать свое имя, фамилию и адрес электронной почты, поля на сайте обновляются, но база данных не обновляется.

Информация, собранная в реестре. php вставляется в базу данных пользователей.

Я использую следующий код:

<?php # DISPLAY COMPLETE PRODUCTS PAGE.
# Access session.
session_start() ;
# Open database connection.
require ( 'includes/connect_db.php' ) ;

# Redirect if not logged in.
if ( !isset( $_SESSION[ 'user_id' ] ) ) { require ( 'login_tools.php' ) ; load() ; }

# Set page title and display header section.
$page_title = 'My Profile' ;
include ( 'includes/nav_logout.php' ) ;


if(isset($_POST['update']))
{
$UpdateQuery = "UPDATE users SET first_name='$_POST[first_name]',
 last_name='$_POST[last_name]',
 email='$_POST[email]'  
WHERE user_id ='$_POST[user_id]'";

mysqli_query($link, $UpdateQuery);
}
?><html>
<head>

</head>
<body><center>
<br><br>
<div id="profile">
<h1>Your Profile</h1>
<a>First Name: <?php echo $_SESSION['first_name'];?></a>
<br>
<a>Last Name: <?php echo $_SESSION['last_name'];?></a>
<br>
<a>Email: <?php echo $_SESSION['email'];?></a>
</div>
<br>
<form class="form1" method="post" action="" id="form1">
<fieldset>
    <ul>
            <br>
            <h3>Change Profile details</h3>
            <br>
            <label for="name">Email:</label><span><input type="text" name="email" placeholder="Email" class="required" role="input" aria-required="true"/></span>
            <br><br>
            <label for="name">First Name:</label><span><input type="text" name="first_name" placeholder="First Name" class="required" role="input" aria-required="true"/></span>
            <br><br>
            <label for="name">Last Name:</label><span><input type="text" name="last_name" placeholder="Last Name" class="required" role="input" aria-required="true"/></span>
    </ul>
    <input  class="submit .transparentButton" value="Save Changes" type="submit" name="Submit"/>
    </fieldset>
</form>
<?php
if (isset($_POST['Submit']))
{
    $_SESSION['email'] = $_POST['email'];
    $_SESSION['first_name'] = $_POST['first_name'];
    $_SESSION['last_name'] = $_POST['last_name'];
    echo "<meta http-equiv='refresh' content='0'>";
}

?>

Отображаются только first_name и last_name. Я также использовал print_r ($ _ SESSION), который отображал только имя, фамилию. Поле электронной почты было пустым.

Переменные сеанса

here # Check login. list ( $check, $data ) = validate ( $link, $_POST[ 'email' ], $_POST[ 'pass' ] ) ; # On success set session data and display logged in page. if ( $check ) { # Access session. session_start(); $_SESSION[ 'user_id' ] = $data[ 'user_id' ] ; $_SESSION[ 'first_name' ] = $data[ 'first_name' ] ; $_SESSION[ 'last_name' ] = $data[ 'last_name' ] ; $_SESSION[ 'email' ] = $data[ 'email' ] ; load ( 'dashboard.php' ) ; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...