2015-07-15 2 views
1

Я делаю API для простого форума ,, Теперь пытаюсь проверить Войти с помощью PHPрегистрации Войти и сеансы

на странице управления: showForums.php

<?php require_once('session.php');?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>TheForums</title> 
</head> 
<body> 

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

require_once('fourmsAPI.php'); 
/* 
function tinyf_forums_get($extra ='') 
{ 
    global $tf_handle; 
    $query = sprintf("SELECT * FROM `forums` %s",$extra); 
    $qresult = mysqli_query($tf_handle, $query); 

    if (!$qresult) 
     return NULL; 
    $recount = mysqli_num_rows($qresult); 
    if ($recount == 0) 
     return NULL ; 
    $forums = array(); 
    for($i = 0 ; $i < $recount ; $i++) 
     $users[count($forums)] = mysqli_fetch_object($qresult); 
    //mysql_free_result($qresult); 

    return $forums; 

} 
*/ 
$forums = tinyf_forums_get(); 
if($forums == NULL) 
{ 
    die('problem'); 
} 
$fcount = count($forums); 
if($fcount == 0) 
{ 
    die('No Forums '); 
} 
if($_SESSION['user_info'] == false){ 
    echo '<a href = "login.php">Login!</a>'; 
} 
else{ 
    $uname = $_SESSION['user_info']->name ; 
    echo '<a href = "logout.php">'.$uname.' -- Logout!'.'</a>' ; 
} 
?> 

<br/> 

<ul type = "square"> 
<?php 
for($i = 0 ; $i < $fcount ; $i++) 
{ 
    $forum = $forums[$i]; 
    echo "<li><a href = \"forum.php?id=$forum->id\"> $forum->title <a/> <br/> $forum->desc --"; 
    if($_SESSION['user_info']->isadmin ==1){ 
     echo " <a href = \"deleteForum.php?id=$forum->id\"> Delete <a/> | <a href = \"modifyForum.php?id=$forum->id\"> edit <a/> " ; 
    } 
    echo "<br/> </li>"; //$array -> 

} 
?> 
</ul> 

</body> 
</html> 

Error: Trying to get property of non-object in /var/www/html/tinyforum/showForums.php on line 62

session.php

<?php 
session_start(); 

if(!isset($_SESSION['user_info'])){ 
    $_SESSION['user_info'] = false ; 
} 
?> 

я ожидал, если оператор не будет выполнен

+0

Что вы думаете? –

+0

i get error: Попытка получить свойство не-объекта в /var/www/html/tinyforum/showForums.php в строке 62 – smile

+0

, какая из них - строка 62? – Maximus2012

ответ

2

Проверка выполнения if должна выполняться, если цикл выполняется. Внутренняя часть не выполняется, как вы ожидали. Ошибка, которую вы получаете, связана с проверкой состояния. Если пользователь не вошел в систему, ваш код эквивалентен

if(null->isadmin ==1){ 
    echo " <a href = \"deleteForum.php?id=$forum->id\"> Delete <a/> | <a href = \"modifyForum.php?id=$forum->id\"> edit <a/> " ; 
} 

Это очевидно дает ошибку. Вы можете проверить, что сеанс установлен первым или использовать оператор @.

+0

Я попытался @, и это мне помогло ... @ оператор избежит проблемы, если пользователь не зашел в систему? – smile

+0
+1

Взгляните на [это сообщество wiki] (https://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php). Оператор '@' просто сообщает PHP заткнуться и не отображать предупреждения. Это * ok * в этом случае (проверка, является ли пользователь нулевым, будет лучше), но, пожалуйста, не злоупотребляйте им, поскольку он скрывает важные ошибки. Это было бы лучше: 'if ($ _ SESSION ['user_info'] && $ _SESSION ['user_info'] -> isadmin === 1) {}' – Anonymous

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