如何使页面只能在登录 PHP 时访问
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15088470/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to make an page only accessible when logged in PHP
提问by Elmar Luijmes
Currently I'm working on a little project for a dummy login/register page and now I want to add a page that is only accessible when you're logged in. So the question is how do I make a session or cookie and retrieve them? And how do I block not logged in users.
目前我正在做一个虚拟登录/注册页面的小项目,现在我想添加一个只有在您登录时才能访问的页面。所以问题是我如何创建会话或 cookie 并检索它们? 以及如何阻止未登录的用户。
I'm currently using these codes for the login.php and member_area.php: Login.php:
我目前将这些代码用于 login.php 和 member_area.php:Login.php:
<?php
session_start();
if(isSet($_POST['login'])) {
include('db.php');
$username = mysql_real_escape_string($_POST['username']);
$password = sha1($_POST['password'] );
$query = mysql_query("SELECT * FROM tab WHERE username='".addSlashes($username)."' AND password='".addSlashes($password)."'");
$res = mysql_num_rows($query);
if ($res == 1) {
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
$_SESSION['userobj'] = mysql_fetch_assoc($query);
header('Location: http://localhost/member_area.php');
exit;
} else {
echo 'Data does not match <br /> RE-Enter Username and Password';
}
} else {
?>
<html>
<head><link rel="stylesheet" type="text/css" href="css.css"></head>
<body>
<div id="div1">
<a href="index.php" id="home">Home</a>
<a href="Login.php" id="login2">Login</a>
<a href="register.php" id="register">Register</a>
</div>
<table width="200" border="0" cellspacing="1" align="center">
<form id="form1" method="post" action="login.php">
<tr>
<td colspan="2"><h2>Members login</h2></td>
</tr>
<tr>
<td>Username: </td>
<td>
<input type="text" name="username" id="username"/>
</td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name="password" id="password"/> </td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="login" id="login" value="login" />
</td>
</tr>
</form>
</table>
</body>
</html>
<?php
}
?>
Member_area.php:
Member_area.php:
<?php
?>
<html>
<head><link rel="stylesheet" type="text/css" href="css.css"></head>
<body>
<div id="div1">
<a href="index.php" id="home">Home</a>
<a href="Login.php" id="login2">Login</a>
<a href="register.php" id="register">Register</a>
</div>
<form action="/Log_out.php" method="get">
<input type="submit" name="submit" value="Log Out." action="http://localhost/Log_out.php" id="Logout">
</form>
</body>
</html>
<?php
?>
Please note that I'm completely new to PHP so some directions where to put the code with if possible a little explanation.
请注意,我对 PHP 完全陌生,所以如果可能的话,一些说明将代码放在哪里。
回答by Prasanth Bendra
Add this at the top of Member_area.php:
在 Member_area.php 的顶部添加:
session_start();
if(!isset($_SESSION['username'])){
header("Location:Login.php");
}
It checks whether the session is set or not, if not it will redirect the user to login page.
它检查是否设置了会话,如果没有,它会将用户重定向到登录页面。
回答by Dhamesh Makwana
<?php
if(!isset($_SESSION['username'])) {
die("Please login");
}
?>
<html>
<head><link rel="stylesheet" type="text/css" href="css.css"></head>
<body>
<div id="div1">
<a href="index.php" id="home">Home</a>
<a href="Login.php" id="login2">Login</a>
<a href="register.php" id="register">Register</a>
</div>
<form action="/Log_out.php" method="get">
<input type="submit" name="submit" value="Log Out." action="http://localhost/Log_out.php" id="Logout">
</form>
</body>
</html>
<?php
?>
That should be it :)
应该是这样:)

