2015-12-01 4 views
0

Я новичок в Php OOP и написал код для хранения некоторого продукта в базе данных с помощью PHP OOP. Я пытаюсь сохранить свое имя пользователя и пароль в переменной сеанса в моем классе базы данных. Вот мой код для моего класса базы данных, а также то, что у меня есть для моей формы входа. При запуске я получаю следующую ошибку.Хранение переменных в классе базы данных

Анализировать ошибка: синтаксическая ошибка, неожиданный '$ _SESSION' (T_VARIABLE) в C: \ XAMPP \ HTDOCS \ wdv341 \ PHP-уп-падла уровня-3 \ Config \ database.php на линии 9

database.php

<?php 


class Database{ 

    // specify your own database credentials 
    private $host = "localhost"; 
    private $db_name = "wdv341"; 
    private $username = $_SESSION['username']; 
    private $password = $_SESSION['password']; 
    public $conn; 

    // get the database connection 
    public function getConnection(){ 

     $this->conn = null; 

     try{ 
      $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password); 
     }catch(PDOException $exception){ 
      echo "Connection error: " . $exception->getMessage(); 
     } 

     return $this->conn; 
    } 



} 

?>

userLogin.php

<?php 
session_cache_limiter('none');   //This prevents a Chrome error when using the back button to return to this page. 
session_start(); 


if (isset($_POST['username']) && isset($_POST['password'])) //This is a valid user. Show them the Administrator Page 
    { 

$_SESSION['username']=$_POST['username']; //pull the username from the form 
$_SESSION['password']=$_POST['password']; 

//var_dump($_SESSION); 

include_once 'config/database.php'; 

if (isset($_SESSION['username']) && ($_SESSION['password'])){ 

header("location:read_categories.php"); 

} 

else 
{ 
?> 
<html> 
<body> 
       <h2>Please login to the Administrator System</h2> 
       <form method="post" name="loginForm" action="userLogin.php" > 
        <p>Username: <input name="username" type="text" /></p> 
        <p>Password: <input name="password" type="password" /></p> 
        <p><input name="submitLogin" value="Login" type="submit" /> <input name="" type="reset" />&nbsp;</p> 
       </form> 
</body> 
</html> 
<?php 
} 
?> 

Пожалуйста, помогите !!

ответ

1

ошибка означает, что он врезался в $_SESSION[] на линии 9, который я предполагаю, примерно здесь:

private $username = $_SESSION['username']; 

Вы не можете ссылаться на $_SESSION в этой точке. From the docs:

... This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

Вы можете использовать constructor, чтобы установить это значение, когда экземпляр класса создается вместо:

class Database { 
    private $username; 

    public function __construct() { 
     $this->username = $_SESSION['username']; 
    } 
} 
+0

Спасибо так много, что было исправление !! –

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