Ich habe auf diesem vorgefertigten PHP-Login-System erweitert. Der erste Code-Block ist eine Datei namens user.php und ich glaube, dass es geladen wird, wenn der Benutzer sich anmeldet. Ich habe hinzugefügt, zum BeispielBearbeiten von MySQL in PHP und Anzeigen des neuen Ergebnisses
Für wenn ich zusätzliche Spalten zur Datenbank hinzufügen und es echo aus.
'depot' and $_SESSION['depot'] = $row['depot'];
Mein Problem ist, wenn ich das Profil-Seite bearbeiten baue diese Daten nicht aktualisiert, wenn der Benutzer sich abmeldet und meldet sich zurück.
Was ist ein guter Weg, dies zu beheben. Muss ich die Zusätze, die ich an die user.php mache, entfernen und eine neue SELECT-Anweisung und ein neues Array in der Datei profile.php erstellen. oder kann ich irgendwie die Variablen in der user.php aktualisieren?
user.php
<?php
include('password.php');
class User extends Password{
private $_db;
function __construct($db){
parent::__construct();
$this->_db = $db;
}
private function get_user_hash($username){
try {
$stmt = $this->_db->prepare('SELECT password, username, firstname, lastname, phone, memberID, user_level, credit, email, depot FROM members WHERE username = :username AND active="Yes" ');
$stmt->execute(array('username' => $username));
return $stmt->fetch();
} catch(PDOException $e) {
echo '<p class="bg-danger">'.$e->getMessage().'</p>';
}
}
public function login($username,$password){
$row = $this->get_user_hash($username);
if($this->password_verify($password,$row['password']) == 1){
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $row['username'];
$_SESSION['firstname'] = $row['firstname'];
$_SESSION['lastname'] = $row['lastname'];
$_SESSION['phone'] = $row['phone'];
$_SESSION['memberID'] = $row['memberID'];
$_SESSION['user_level'] = $row['user_level'];
$_SESSION['credit'] = $row['credit'];
$_SESSION['email'] = $row['email'];
$_SESSION['depot'] = $row['depot'];
return true;
}
}
public function logout(){
session_destroy();
}
public function is_logged_in(){
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){
return true;
}
}
}
?>
Beispiel profile.php
profile.php
<?php require('includes/config.php');
//if not logged in redirect to login page
if(!$user->is_logged_in()){ header('Location: login.php'); }
//define page title
$title = 'Profile Page';
//include header template
require('layout/header-active.php');
?>
<div id="Holder">
<div class="container">
<div class="row">
<div class="col-lg-6 col-lg-offset-3">
<h1> Account Information </h1>
<p>Username: <?php echo $_SESSION['username']; ?></p>
<p>First Name: <?php echo $_SESSION['firstname']; ?></p>
<p>Last Name: <?php echo $_SESSION['lastname']; ?></p>
<p>Phone: <?php echo $_SESSION['phone']; ?></p>
<p>Email: <?php echo $_SESSION['email']; ?></p>
<p>Member ID: <?php echo $_SESSION['memberID']; ?></p>
<hr>
<h3>Global Settings</h3>
<form class="" action="" method="post">
<div class="form-group">
<label>Depot:</label> <input type="text" name="depot" class="form-control" value="<?php echo $_SESSION['depot']; ?>" />
</div>
<input type="submit" name="submit" value="Submit" class="btn btn-primary">
</form>
<?php
include('connect-db.php');
if (isset($_POST['submit']))
{
$memberID = $_SESSION['memberID'];
$depot = $_POST['depot'];
mysqli_query($conn, "UPDATE members SET depot='$depot' WHERE memberID='$memberID'")
or die(mysqli_error());
header("Location: profile.php");
}
?>
<?php
//include header template
require('layout/footer.php');
?>