2

有两个输入字段,一个用于输入用户名作为密码。从数据库中获取用户名和密码,如果找到用户名和密码组合,则标志设置为 1。

$match = 1;
if ($match) {
    header('Location: http://www.example.com/myProfile');
} else {
    header('Location: http://www.example.com/errorpage');
}

该页面仍然存在一个问题,即任何人都可以输入网址“www.example.com/myPforile”并访问内容。如何防止创建会话变量?

4

4 回答 4

4

这是我用来查看会话是否已设置的代码示例:

<?php
session_start();
if(!isset($_SESSION['userId'])){
    header('Location: http://example.com/errorpage');
}else{
    header('Location: http://www.example.com/myProfile');
}
?>

希望有帮助。

于 2012-05-18T17:08:29.247 回答
3

这是我的建议。

首先确保包含session_start();在页面顶部。

对于 PHP 代码,您的登录页面应该如下所示。

if($_POST['submit']=='Login') {

$err = array();
// will hold our errors

if(!$_POST['email'] || !$_POST['password'])
     $err[] = 'All the fields must be filled in!';

if(!count($err)) {

$row = mysql_fetch_assoc(mysql_query("SELECT id FROM members WHERE email='{$_POST['email']}' AND pass='".$hash."'"));

if($row['id'])
$_SESSION['id'] = $row['id'];

}

}

然后在您想要登录的任何页面上放置一些检查您创建的会话 ID 的内容。

if(!isset($_SESSION['id']) || empty($_SESSION['id'])) {

// redirect them to the login page, they have no session id set

}

这是我所做的事情的基本示例。绝对扩展它并根据您的需要进行调整。

于 2012-05-18T18:06:49.650 回答
2

如果我正确理解您的问题,则说明您没有保护您的myProfile网页。

您需要做的是在成功登录时设置一个会话变量,并在myProfile.

于 2012-05-18T16:59:38.563 回答
1

我假设您的意思是您仍然可以在不登录的情况下访问该页面,在这种情况下您需要执行类似的操作

$logged in = $_SESSION['loggedin'];
if($loggedin) {
   die('whatever not allowed here or something')
}
于 2012-05-18T17:01:55.553 回答