警告:session_start()php

时间:2014-02-12 17:47:13

标签: php

我正在使用免费域名并将我所有的失败归并并更改了数据库设置等等我得到了此错误

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /srv/disk3/1618254/www/netdisk.eu.pn/mojprofil.php:2) in /srv/disk3/1618254/www/netdisk.eu.pn/core/init.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /srv/disk3/1618254/www/netdisk.eu.pn/mojprofil.php:2) in /srv/disk3/1618254/www/netdisk.eu.pn/core/init.php on line 2

Parse error: syntax error, unexpected '[' in /srv/disk3/1618254/www/netdisk.eu.pn/classes/DB.php on line 113

虽然在localhost上正常工作。

我的init.php

<?php
session_start();

$GLOBALS ['config'] = array(
    'mysql' => array(
        'host' => 'asd',
        'username' => 'asd',
        'password' => 'asd',
        'db' => 'asdr'
    ),
    'remember' => array(
        'cookie_name' => 'hash',
        'cookie_expiry' => 604800
    ),
    'session' => array(
        'session_name' => 'user',
        'token_name' => 'token'
    )
);

spl_autoload_register(function($class) {
    require_once 'classes/' . $class . '.php';

});

require_once 'functions/sanitize.php';
if(Cookie::exists(Config::get('remember/cookie_name')) && !Session::exists(Config::get('session/session_name'))) {
    $hash = Cookie::get(Config::get('remember/cookie_name'));
    $hashCheck = DB::getInstance()->get('users_session', array('hash', '=', $hash));
    if($hashCheck->count()) {
        $user = new User($hashCheck->first()->user_id);
        $user->login();
    }
}
?>

DB.php

<?php
class DB {
    private static $_instance = null;
    private $_pdo,
            $_query,
            $_error = false,
            $_results,
            $_count = 0;

    private function __construct() {
        try {
        $this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') .';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));
        } catch (PDOException $e) {
            die($e->getMessage());
        }
    }

    public static function getInstance() {
        if(!isset(self::$_instance)) {
            self::$_instance = new DB();
        }
        return self::$_instance;
    }

    public function query($sql, $params = array()) {
        $this->_error = false;
        if($this->_query = $this->_pdo->prepare($sql)) {
            $x = 1;
            if(count($params)) {
                foreach($params as$param) {
                    $this->_query->bindValue($x, $param);
                    $x++;
                }
            }
            if($this->_query->execute()) {
                $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
                $this->_count = $this->_query->rowCount();
            } else {
                $this->_error = true;
            }
        }
        return $this;
    }

    public function action($action, $table, $where = array()) {
        if(count($where) === 3) {
            $operators = array('=', '>', '<', '>=', '<=');

            $field     = $where[0];
            $operator  = $where[1];
            $value     = $where[2];

            if(in_array($operator, $operators)) {
                $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";

                if(!$this->query($sql, array($value))->error()) {
                    return $this;
                }
            }
        }
        return false;
    }
    public function get($table, $where) {
        return $this->action('SELECT *', $table, $where);
    }
    public function delete($table, $where) {
        return $this->action('DELETE', $table, $where);
    }
    public function insert($table, $fields = array()) {
       $keys = array_keys($fields);
       $values = '';
       $x = 1;

       foreach($fields as $field) {
           $values .= "?";
           if($x < count($fields)) {
               $values .= ', ';
           }
           $x++;
       }

       $sql = "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) VALUES({$values})";

       if(!$this->query($sql, $fields)->error()) {
           return true;
       }
       return false;
    }
    public function update($table, $id, $fields) {
        $set = '';
        $x = 1;

        foreach($fields as $name => $value) {
            $set .= "{$name} = ?";
            if($x < count($fields)) {
            $set .= ',';
            }
            $x++;
        }

        $sql = "UPDATE {$table} SET {$set} WHERE id = {$id}";

        if(!$this->query($sql, $fields)->error()) {
            return true;
        }
        return false;
    }

    public function results() {
        return $this->_results;
    }
    public function first() {
        return $this->results()[0];
    }

    public function error() {
        return $this->_error;
    }

    public function count () {
        return $this->_count;
    }
}

?>

0 个答案:

没有答案