使用php中的会话控制来限制内容


Restrict a content using session control in php

你好,阅读网站和论坛我了解到,使用会话可以阻止内容。我有一个index.php页面,它检查会话并根据条件给出结果:

<?php
session_start();
if( $_SESSION['user'] != $name ) { echo "Sorry,no session found or is expired";
require( 'login.php' );
 }
else {
echo "hello,you have session existing";
 }
?>

我已经创建了details

FNAME
LNAME
BDAY
PASS
EMAIL
CODES

login.php如下:

<?php
$name = $_POST['name'];
$pass = $_POST['pass'];
mysql_connect('mysqlhost','user','pass','userdatabase');
$query=mysql_query(sprintf("SELECT FNAME FROM `details` WHERE FNAME=$name AND PASS=$pass";
mysql_real_escape_string($PASS)));
if($query) { while($row = mysql_fetch_assoc($query)) { $rows[1] = $row; } } 
if( isset($name) || isset($pass) )
{
if( empty($name) ) {
    die ("ERROR: Please enter username!");
}
if( empty($pass) ) {
    die ("ERROR: Please enter
password!");
}
if( $name == $rows[1][FNAME] &&
$pass == $rows[1][PASS] )
{
    session_start();
    $_SESSION['user'] = $_POST['name'];
    header('Location: index.php');
}
else {
    echo "ERROR: Incorrect username
or password!";
   }
}
else {
?>
<html>
<head>
<body>
 //Load login form here & save $SESSION value in "name"
</html>
<?php } ?> 

所以,我的代码在某个地方出错了,看不到"你好,您有会话存在"。如果能再次提供帮助,我们将不胜感激。(代码可以查看一半,很抱歉)

试试这个-

if( !isset( $_SESSION[ "user" ] ) )

而不是

if( $_SESSION['user'] != $name )

在login.php中,您必须以某种方式将$_POST['name']的值作为$name传递给index.php,而且将会话作为密码确实是个坏主意,一些提示:

1) 使用一个用户id,比如1,2,3…并添加一个主键,然后使用该id来执行诸如授予访问权限之类的操作。

2) 注册时md5您的通行证,并像一样检查

if (md5($_POST['pass']) == $pass) { 
//some code
};