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

使用PHP显示用户名和登录状态检查,php,Php,我在StackOverflow中搜索了我的问题并找到了一些答案,但它们太具体了。基本上我想要两样东西。首先,能够通过一个简单的调用在我的页面的任何地方显示当前用户的用户名。其次,检查用户是否已登录,如果未登录,则将其重定向到登录页面。例如,他想访问商店卡,但由于他没有登录,他应该被重定向。这是我的密码: login.php-controller <?php $tpl = 'login'; if (!empty($_POST['login'])) { $user = $DB->q

我在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';
}
} 

当用户登录时,将其屏幕名保存到会话:

$\u SESSION['login']=$\u POST['login']

然后,把他的用户名放在任何页面上,你可以

echo$\u会话['login']
-或:

要使用
$\u SESSION
,必须声明
SESSION\u start()预先。。。在将任何内容输出到浏览器之前

然后,要重定向未经身份验证的用户,您可以:

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

请记住,在将任何内容输出到浏览器之前,先清理用户输入并启动会话,我应该在login.php中声明它吗?或者无论我在哪里使用$\u POST,我都需要使用它吗?我是否应该通过使用清理用户输入在.html文件中声明它超出了此范围,但我将根据您的第二点修改此答案-我忘记了-如果文件以
结尾。html
-无法在其中呈现php-但是无论您打算在何处使用
$\u SESSION
-您必须调用
SESSION\u start()
首先--如果你不想被黑客攻击,你一定要学习输入卫生/验证--
filter\u var
是一个很好的起点,但PDO准备的语句是另一半-
if(!$_SESSION['login']){
     header("Location: http://loginpage.com");
}