2013-03-31 57 views
0

我想验证一个用户在PHP上使用$ _SESSION超全球,但它似乎$ _Session不喜欢我任何帮助亲切感谢,我有以下代码称为index.php:

'<?php 
'session_start(); 
'require("administratorcheck.php"); 
    //i have tried require_once "administratorcheck.php" 
    '?> 

其中在这种情况下administratorcheck.php看起来像这样的验证:?

 <?php 
     $errorMessage = 'Your Login Information Is Not Correct'; 
    if(isset($_POST['username'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    $adminUser = "admin"; 
    $adminPass = "donkeyKong"; 

if(($username!=$adminUser)||($password !=$adminPass)) 
{ 
    echo $errorMessage; 
}else{ 
// session_register('admin'); 
$_SESSION['admin'] = $username; 
header("index.php"); 
exit(); 
} 

} 
if(isset($_SESSION['admin'])!= 'admin') 
{ 
echo '<h2>You Are Not Authorized To View This File</h2><br/> 
<table width = "400" border = "2"> 
<form action = "administratorcheck.php" method="post" > 
<tr> 
<td colspan = "2">You May Be Able To Login Here</td> 
</tr> 
<tr> 
<td width="108">Admin Username:</td> 
<td width="250"><input type="text" name="username" id="username" style="width:98%"/>                
</td> 
</tr> 
<tr> 
<td>Password:</td> 
<td><input type="password" name="password" id="password" style="width:98%"/></td> 
</tr> 
<tr> 
<td colspan="2" align="center"><input type="submit" name="button" id="button" 

value="Log Me In"/></td> 
</tr> 
</form> 
</table> 
</br> 
</br> 
<a href = "../">Click Here To Return To The Index Page</a>'; 
exit(); 
} 

>

+0

'$ _SESSION不喜欢you'听起来不像一个有效的PHP错误代码。究竟发生了什么?什么不起作用?你有错误吗? –

+1

为什么你的index.php代码行以'''开头? –

回答

2

问题

下面的线不会做你觉得它在做什么。

if(isset($_SESSION['admin'])!= 'admin') 

如果你把它分解成更小的部分,你会看到。综观第一部分,你看,你从isset

$isAdminFieldSet = isset($_SESSION['admin']) // this returns a boolean 

现在在你的你实际上是在做

if($isAdminFieldSet != 'admin') { 

这实在是

if(true != 'admin') { 

if语句得到一个布尔值回
if (false != 'admin') { 

解决方案

是管理员检查

if (isset($_SESSION['admin']) && $_SESSION['admin'] == 'admin') { 
    // user is an admin 
    ... 
} 

不是管理员检查

if (!isset($_SESSION['admin']) || $_SESSION['admin'] != 'admin') { 
    // user is not an admin 
    ... 
} 
+0

我想在管理员检查中,'$ _SESSION ['admin'] ==''admin'就足够了。如我错了请纠正我。哦,和'非管理员检查'一样。 – Mido

+0

你是对的。我只是作为一个例子,所以user2097683可以看到发生了什么。 – Noah

+0

太好了。 +1向他澄清。 – Mido

0
if(isset($_SESSION['admin'])!= 'admin') 

isset返回一个布尔值,因此将永远不等于“管理员”