使用PHP显示用户名和登录状态检查


Using PHP to show username and login status check

我已经通过StackOverflow搜索了我的问题,并找到了一些答案,但他们太具体了。基本上我想要两样东西。首先,能够通过一个简单的调用在我的页面上的任何地方显示当前用户的用户名。其次,检查用户是否已登录,如果没有,则将其重定向到登录页面。例如,他想访问购物卡,但由于他没有登录,他应该被重定向。下面是我的代码:

login.php - controller

<?php
$tpl = 'login';
if (!empty($_POST['login'])) {
$user = $DB->query('SELECT id FROM users WHERE user_name=' . $DB->quote($_POST['login']) . ' AND password=MD5("' . $_POST['password'] . '")')->fetch();
if (!empty($user)) {
    $_SESSION['uid'] = $user['id'];
    header('Location: /');
} else {
    $error = 'incorrect password';
}
} 

login.php -主页

<br>
<a href="/register">Registration</a>
<br>
<form class="form-horizontal login col-lg-4 col-lg-offset-3" role="form" method="POST">
<?php
if (!empty($error)) {
    echo '<div class="alert alert-danger">' . $error . '</div>';
}
?>
<div class="form-group">
    <label for="inputEmail3" class="col-sm-3 control-label">Логин</label>
    <div class="col-sm-9">
        <input type="text" class="form-control" id="inputEmail3" name="login" value="<?= @$_POST['login'] ?>" placeholder="Insert login" autocomplete="off">
    </div>
</div>
<div class="form-group">
    <label for="inputPassword3" class="col-sm-3 control-label">Пароль</label>
    <div class="col-sm-9">
        <input type="password" class="form-control" name="password" id="inputPassword3" placeholder="Insert password" autocomplete="off">
    </div>
</div>
<div class="form-group">
    <div class="col-sm-3">
    </div>
    <div class="col-sm-9">
        <button type="submit" class="btn btn-default">Enter</button>
    </div>
</div>
</form>

当用户登录时,保存他们的屏幕名到会话:

$_SESSION['login'] = $_POST['login']

然后,要把他的用户名放在任何页面上,你只需输入

echo $_SESSION['login'] - or: <?=$_SESSION['login']?>

要使用$_SESSION,必须事先声明session_start();…在向浏览器输出任何内容之前。

然后,要重定向未认证的用户,只需:

if(!$_SESSION['login']){
     header("Location: http://loginpage.com");
}