2013-05-15 6 views
0

Я пытаюсь получить идентификатор пользователя текущего пользователя, чтобы я мог поместить его в сеанс для другого использования. Я протестировал запрос и вернул правильные значения, но когда я пытаюсь поместить эти значения в свой «пользовательский» объект, я получаю следующую ошибку!Вставить идентификатор пользователя в сеанс

Undefined property: stdClass::$name in C:\xampp\htdocs\Project\classes\User.class.php on line 88 

ЛИНИЯ 88:

$this->Name = $obj->name; 

<?php 

include_once("classes/Db.class.php"); 

class User 
{ 
    private $m_sName; 
    private $m_sPassword; 
    private $m_sEmail; 
    private $m_sID; 

    public function __get($p_sProperty) 
    { 
     switch($p_sProperty) 
     { 
      case "Name": 
      return $this->m_sName; 
      break; 

      case "Password": 
      return $this->m_sPassword; 
      break; 

      case "Email": 
      return $this->m_sEmail; 
      break; 

      case "user_id": 
      return $this->m_sID; 

      default: 
      throw new Exception("CANNOT GET " . $p_sProperty); 
     } 
    } 

    public function __set($p_sProperty, $p_vValue) 
    { 
     switch($p_sProperty) 
     { 
      case "Name": 
      $this->m_sName = mysql_real_escape_string($p_vValue); 
      break; 

      case "Password": 

       $salt = "kjfiqjifmqjfemq"; 
       $this->m_sPassword = md5($p_vValue.$salt); 

      break; 

      case "Email": 
      $this->m_sEmail = mysql_real_escape_string($p_vValue); 
      break; 

      case "user_id": 
      $this->m_sID = $p_vValue; 
      break; 

      default: 
      throw new Exception("CANNOT SET " . $p_sProperty); 
     } 
    } 

    public function Register() 
    { 
     try 
     { 
      $db = new db('localhost', 'root', '', 'project'); 
      $db->insert("user_tbl (username, password, email)", "'$this->Name','$this->Password', '$this->Email'"); 

     } 
     catch(Exception $e) 
     { 
      echo $e->Message; 
     } 
    } 

    public function CanLogin() 
    { 

     $db = new db('localhost', 'root', '', 'project'); 

     $res = $db->Select("username, ID" , "user_tbl","password = '$this->Password' and email = '$this->Email'"); 

     if($res->num_rows == 1) 
     { 
      $obj = $res->fetch_object(); 
      $this->Name = $obj->name; 
      $this->ID = $obj->ID; 
      return true; 

     }else 
     { 
      throw new Exception('Fout bij het aanmelden.'); 
      return false; 
     } 

    } 

} 

?> 
+1

Ваш запрос выбирает 'имя пользователя, идентификатор '. Свойством, полученным 'fetch_object()', будет '$ obj-> username'. –

ответ

0

Полностью согласен с @MichaelBerkowski в комментарии выше. Вы пытаетесь обратиться к полям, которые вы не загружаете.

Либо изменить код $this->Name = $obj->username; или добавить «имя» в запросе

$res = $db->Select("username, ID, name" , "user_tbl","password = '$this->Password' and email = '$this->Email'"); 

Что касается ID

Вы имеете в виду неправильное имя переменной. В вашем сетевом/получателе имя свойства case "user_id":, но вы пытаетесь обратиться к нему через $this->ID. Для этого вам необходимо изменить свой вариант дела на case "ID":.

+0

Хорошо, это сработало, спасибо за помощь. –

1

Изменение этой линии

$this->Name = $obj->name; 

для

$this->Name = $obj->username; 
+0

Хорошо, эта фиксированная часть проблемы благодарит вас. Тем не менее, это не позволит мне установить ID ... «НЕ МОЖЕТ УСТАНОВИТЬ ИД» - это ошибка, я получаю –