php警告&;严格的标准


php Warning & Strict Standards

我使用$_SESSION[''];在用户登录后从他们那里获取值。这些数据来自users表。

我正在尝试

`SELECT *` `FROM roster`

当用户API=$API

我可以使用以下方法来做到这一点:

error_reporting(E_ALL);
    include ('database_connection.php');
    $API        = $_SESSION['API'];
        if ($API !== false) { 
            $roster_query = "SELECT * FROM roster WHERE API='$API'";
            $result = mysqli_fetch_array(mysqli_query($dbc, $roster_query));
    /* ROSTERS TABLE */
            $StreetName     = $result['streetname'];
            $HouseNum   = $result['housenumber'];
            $City       = $result['city'];
            $State      = $result['state'];     
            $Zipcode        = $result['zipcode'];                               
    /* SESSION */
            $FirstName  = $_SESSION['firstname'];
            $LastName   = $_SESSION['lastname'];
            $Email      = $_SESSION['email'];
    /* this->$vars - Specific for this form */      
            $ExecutionDate  = date("Y:M:D");      
            $DOCSIGNEDBYIP  = $_SERVER['REMOTE_ADDR'];
        }

然而,当我这样做的时候,我会得到以下错误。如果我删除上面的代码没有错误,等等

现在,这并没有"破坏"我的代码,但我不想掩盖这一点,以后再解决。

有人能认出我哪里出了问题吗?

警告:正在根据/home/中的空值创建默认对象/public_html/…/…//48号线上的db.php

第48行:$return->$i = $row;

if(!$return_array) {
    while($row = mysql_fetch_object($sql_query)) {
        $return->$i = $row;
        $i++;
    }

严格标准:假设$this来自/home/中的不兼容上下文,则不应静态调用非静态方法Access::is_loged()/public_html/…/…//第64行上的APP.php

pinAPP第64行:return Access::is_logged();

public function is_logged()
    {
        return Access::is_logged();
    }

is_loged();

   <?php
    require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'init.php');
    class pinAPP {

        public function is_logged() {
            return Access::is_logged();
        }
    }

访问

<?php
    class Access {
        private static $auth = false;

        final public function is_logged( $require_admin_access = false ) {
            if ( ! isset($_SESSION[LOGINSESSION]) )
                return false;
            self::$auth = true;
            if ( $require_admin_access ) {
                $u = new User();
                if ( ! $u->is_admin() )
                    new Redirect(DEFAULT_RETURN_URL);
            }
            return self::$auth;
        }
    }

试试这些,看看它们是否有效:

// Set an empty object for $return first
$return =   new stdClass();
if( ! $return_array ) {
    $i = 0;
    while ( $row = mysql_fetch_object($sql_query) ) {
        $return->$i = $row;
        $i++;
    }

我认为另一个是说你应该把is_logged()作为static函数:

class Access
    {
        static function is_logged()
            {
                // code here
            }
    }
  1. 检查$row使用!empty($row)仅警告
  2. 找不到static functon is_logged()