用于多页上的用户身份验证的Php会话变量
作者:互联网
我正在创建一个内容管理网站,后端有一个登录页面.
我已经为内容管理系统的主菜单创建了一个工作登录页面.
下图显示了我的代码.
第1步 – 用户访问内容管理系统主菜单的URL:
代码如下所示.
<?php
session_start();
echo $_SESSION['valid_user'];
if(!isset($_SESSION['valid_user']))
{
$URL="error.php";
header("Location: $URL");
}
?>
有两件事可能发生.如果他们尚未登录,则会将他们定向到错误页面.
然后,他们可以选择访问登录页面并使用他们的用户名和pswd登录.
我已声明?php start_session();?在顶部
<?php
$login = $_POST['name'];
$loginpass =$_POST['password'];
if((isset($login)) || (isset($loginpass))){
//echo "<p> form has been submitted</p>";
include("connect.php");
$query = "select * from logins where
username='$login' and pswd=MD5('$loginpass')";
$result = mysql_query($query) or die($query."<br/><br/>".mysql_error());
$count=mysql_num_rows($result);
echo $count;
if($count > 0){
echo "<p>you are logged in as $login please
go to <a href='home2.php'>edt home</a>.</p>";
echo "<p><a href='logout.php'>log out</a> $login?</p>";
$_SESSION['valid_user'] = $login;
}else{
echo "<p>sorry login failed</p>";
}
}else{
//echo "<p> form hasn't been submitted</p>";
//Visitor needs to enter a name and password
echo "<h1>Please Log In</h1> <form method='post' action='index2.php'>";
echo "<p>Username: <input type='text'name='name'></p>";
echo "<p>Password: <input type='password' name='password'></p>";
echo "<p><input type='submit' name='submit' value='Log In'></p></form>";
}
?>
到目前为止,所有这些功能对我来说都很好.
但是,我想确保如果用户绕过主页并决定直接跳转到编辑菜单中的某个部分,他们将被强制登录,如果他们还没有,或者,php将检查他们的凭据如果他们已经登录
这是我在页面顶部的代码示例,我想将验证放在上面.我不确定顶部是否已经有数据库表连接会影响会话变量.
<?php
include("connect.php");
//echo "all good here";
//grab the data from the table 'designs'
$query ="SELECT * FROM designs ORDER BY id";
//send SQL statement to MySQL server
$display = mysql_query($query);
$num = mysql_numrows($display);
mysql_close();
?>
我知道我想在所有检查’vaild_user’会话变量的php页面上放置php脚本,并通过指向logout.php文件让用户能够注销.我现在还不确定如何去做.
我对这一切都很陌生,一般都遵循一个明确的指南,就像大多数人一样,我敢肯定.
任何人都可以给予任何帮助将不胜感激
再次感谢!.
解决方法:
基本上你只是在每个“受保护”页面上都有这样的代码片段:
<?php
session_start();
if (!isset($_SESSION['valid_user'])) {
header("Location: login.php");
exit();
}
?>
<a href="logout.php">Logout</a>
如果他们已登录,他们会获得注销链接和页面的其余部分.如果他们尚未登录,则会将其重定向到登录页面.
会话不受数据库连接或任何其他代码的影响.它们会在您启动会话之前执行输出,或尝试执行重定向.这会触发“无法修改标题 – 从第XXX行开始的输出”警告并禁用重定向.
标签:php,mysql,database,session-variables 来源: https://codeday.me/bug/20190826/1724925.html