2015-01-22 5 views
1

Я пытаюсь передать переменные сеанса с помощью $ _SESSION, поэтому я могу проверить, имеет ли пользователь, который в настоящее время вошел в систему, привилегии «admin», который хранится в моей таблице базы данных «login» as "login_privileges". Если у них есть привилегии администратора, они могут получить доступ к определенным страницам, если они не просто лишены доступа, но не вышли из системы. Когда действительное имя пользователя и пароль вводятся в форму, я получаю сообщение об ошибке «Не могу использовать функцию return value in write context». Должна быть ошибка с СЕССИЕЙ, что не так?

<?php 

require("dbconnectprojdev.php"); 
$con = mysql_connect($host, $username, $password); 

$username = $_POST['username']; 
$password = $_POST['password']; 

$username = stripslashes($username); 
$password = stripslashes($password); 
$username = mysql_real_escape_string($username, $con); 
$password = mysql_real_escape_string($password, $con); 

$stmt=$dbh->prepare("SELECT * FROM login WHERE login_username = :username AND login_password = :password"); 
$stmt->bindParam(':username', $username); 
$stmt->bindParam(':password', $password); 
$stmt->execute(); 
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
$count = $count + 1; 
} 

$privilege = $row['login_privileges']; 

if($count==1){ 

session_start(); 
$_SESSION('privilege') = $privilege; 
$_SESSION('username') = $username; 
$_SESSION('password') = $password; 
header("location:logincorrect.php"); 

} else { 
echo "Invalid login details"; 
echo "<b></br><a href=default.php>Back to login</a>"; 
} 

?> 

"dbconnectprojdev.php" выглядит следующим образом:

<?php 
$host = "*****"; 
$database = "*****"; 
$username = "*****"; 
$password = "*****"; 

$dbh = new PDO("mysql:host=$host; dbname=$database; charset=utf8", $username , $password); 
?> 
+2

$ _SESSION является суперглобальным массивом, а не функция :) – thpl

+0

Принимая взглянуть на [документации] (http://php.net/manual/en/ref.session.php) всегда хороший. – Jonast92

ответ

8

$_SESSION является массивом, а не функция.

Изменение $_SESSION('privilege') = $privilege; в $_SESSION['privilege'] = $privilege;

+0

Спасибо! Я такой идиот, хаха – talfred

2

использование $_SESSION['privilege'] вместо $_SESSION('privilege') (обратите внимание на квадратные скобки)

0

Здравствуйте talfred !!

$_SESSION это массив, а не функция!

Поэтому вам нужно изменить $_SESSION('privilege') = $privilege; к $_SESSION['privilege'] = $privilege;

Надеются, что это помогает!
-Джки

Смежные вопросы