PHP - Strict Standards: Non-static method Login::estoy_logeado() should not be called statically

   
Vista:

Strict Standards: Non-static method Login::estoy_logeado() should not be called statically

Publicado por Juan Antonio (22 intervenciones) el 27/07/2015 14:15:20
Hola, buenas, mi hosting actualizó a PHP 5.6, one.com, y tenía esta instrucción que ha dejado de funcionar, pero no encuentro la forma nueva de llamarla, alguien me puede ayudar...

if(!Login::estoy_logeado()){ ----- login y estoy logeado están dentro de otra página que inluyo al principio

Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Strict Standards: Non-static method Login::estoy_logeado() should not be called statically

Publicado por Rafael (37 intervenciones) el 27/07/2015 14:18:41
Pues mas bien se necesita el codigo de Login y de estoy_logeado para poder ayudarte....

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Strict Standards: Non-static method Login::estoy_logeado() should not be called statically

Publicado por Juan Antonio (22 intervenciones) el 27/07/2015 14:27:43
Este es el error que me da ahora:

Strict Standards: Non-static method Login::estoy_logeado() should not be called statically in /customers/b/3/2/ligarevolution.es/httpd.www/php_lib/seguridad.php on line 6


Este es el código que tiene la página que dije que incluyo y donde está login y estoy logueado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
/* Valida un login comprobando su usuario (ó email) y contraseña. */ 
class Login {
    public $tabla='ligarevolution_web_usuario'; // Nombre de la tabla usarios.
    public $campo_idUsuario='idUsuario'; // Campo que contiene el idUsuario.		
    public $campo_usuario='usuario'; // Campo que contiene los datos de los usuarios (se puede usar el email).
    public $campo_clave='password'; // Campo que contiene la contraseña.
    public $campo_verificado='verificado'; // Campo que contiene la activación de cuenta.	
    public $campo_email='email'; // Campo que contiene el email.	
	public $campo_staff='staff'; // Campo que contiene si es admin.		
    public $metodo_encriptacion='md5'; // Método utilizado para almacenar la contrasela. Opciones: sha1, mcrypt.
 
    private $link; // Identificador de la conexión mysql que usamos.
 
    /* Establecemos el método de construccion de la clase que se llamará al crear el objeto. Conecta a la BD. */
    public function __construct() {
       /* 1 - Conectamos a la base de datos utilizando los parámetros globales. */
        $this->link =  mysqli_connect(SERVIDOR_MYSQL, USUARIO_MYSQL, PASSWORD_MYSQL, BASE_DATOS);
 
        if (!$this->link) {
            trigger_error('Error al conectar al servidor mysql: ' . mysqli_error(),E_USER_ERROR);
        }
        // Seleccionar la base de datos activa.
        $db_selected = mysqli_select_db($this->link,BASE_DATOS);
        if (!$db_selected) {
            trigger_error ('Error al conectar a la base de datos: ' . mysqli_error($this->link),E_USER_ERROR);
        }
        return true;
    }
 
    // El metodo de destrucción al destruir el objeto.
    public function __destruct() {
       mysqli_close($this->link);
    }
 
    /* Valida un usuario y contraseña. */
    public function login($usuario, $password) {
        // Usuario y password tienen datos?.
        if (empty($usuario)) return false;
        if (empty ($password)) return false;
 
        // 2 - Prepara consulta SQL a ejecutar utilizando sólo el usuario y evitando ataques de inyección SQL.
        $query='SELECT '.$this->campo_usuario.', '.$this->campo_clave.', '.$this->campo_verificado.', '.$this->campo_idUsuario.', '.$this->campo_email.', '.$this->campo_staff.' FROM '.$this->tabla.' WHERE '.$this->campo_usuario.'="'.  mysqli_real_escape_string($this->link,$usuario).'" LIMIT 1 '; // Tabla y campo se definen como globales.
        $result = mysqli_query($this->link,$query);
        if (!$result) {
            trigger_error('Error al ejecutar la consulta SQL: ' . mysqli_error($this->link),E_USER_ERROR);
        }
 
        // 3 - Extraemos el registro de este usuario.
        $row = mysqli_fetch_assoc($result);
        if ($row) {
            // 4 - Generamos el hash de la contraseña encriptada para comparar o lo dejamos como texto plano.
            switch ($this->metodo_encriptacion) {
                case 'md5'|'MD5':
                    $hash=md5(sha1($password));
                    break;
                default:
                    trigger_error('El valor de la propiedad metodo_encriptacion no es válido. Utiliza MD5 o SHA1 o TEXTO',E_USER_ERROR);
            }
 
            // 5 - Comprobamos la contraseña.
            if ($hash==$row[$this->campo_clave]) {
                @session_start();
                $_SESSION['USUARIO']=array('USUARIO'=>$row[$this->campo_usuario],'VERIFICADO'=>$row[$this->campo_verificado],'IDUSUARIO'=>$row[$this->campo_idUsuario],'EMAIL'=>$row[$this->campo_email],'STAFF'=>$row[$this->campo_staff]); // Almacenamos en memoria el usuario
                // en este punto puede ser interesante guardar más datos en memoria para su posterior uso, como por ejemplo un array asociativo con el id, nombre, email, preferencias, ....
                return true; // Usuario y contraseña validadas.
            } else {
                @session_start();
                unset($_SESSION['USUARIO']); // Destruimos la session activa al fallar el login por si existia.
                return false; // No coincide la contraseña.
            }
        } else {
            //El usuario no existe.
            return false;
        }
    }
 
    /* Veridica si el usuario está logeado */
    public function estoy_logeado () {
        @session_start(); // Inicia sesion (la @ evita los mensajes de error si la session ya está iniciada).
        if (!isset($_SESSION['USUARIO'])) return false; // No logeado, no existe variable $_SESSION['USUARIO'].
        if (!is_array($_SESSION['USUARIO'])) return false; // No logeado, no es un array $_SESSION['USUARIO'].
        if (empty($_SESSION['USUARIO']['USUARIO'])) return false; // No logeado, sesión expirada.
        // Cumple las condiciones anteriores, entonces es un usuario validado.
        return true;
    }
 
    /* Vacia la sesion con los datos del usuario validado. */
    public function logout() {
        @session_start(); // Inicia sesion (la @ evita los mensajes de error si la session ya está iniciada).
        unset($_SESSION['USUARIO']); // Eliminamos la variable con los datos de usuario.
		unset($_SESSION['EQUIPO']); //  Eliminamos la variable con los datos del equipo.
		unset($_SESSION['INICIALACCESO']); //  Eliminamos la variable con los datos de inicio de sesión.	
        session_write_close(); // Nos asegurmos que se guarda y cierra la sesion.
	    // Destruir el array equipo de inscripciones.php y el jugador de clubes.php.
        return true;
    }
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Strict Standards: Non-static method Login::estoy_logeado() should not be called statically

Publicado por xve (5520 intervenciones) el 27/07/2015 20:43:18
Hola Juan Antonio, como llamas al método ?
Segun el error lo llamas desde la linea 6 del archivo: seguridad.php

Nos puedes mostrar su contenido?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Strict Standards: Non-static method Login::estoy_logeado() should not be called statically

Publicado por Juan Antonio (22 intervenciones) el 27/07/2015 20:50:39
El metodo lo llamo como digo en el primer post....que me ha estado funcionando y me sigue funcionando en localhost porque tiene php inferior al 5.6, pero bueno, lo pongo...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
	// Página segura donde se incluya seguridad.php.
	include_once('php_lib/login.class.php'); ---- esto es el código que puse antes
 
	// Si no está logeado el usuario, salta a index.php mostrando un mensaje.
	if(!Login::estoy_logeado()){  --- esta es la línea que da el error
		printf("<script language='javascript'>document.location='index.php?registrado=ko';</script>");
		die('Acceso no autorizado');
	}else{	// Si esta logeado, damos acceso al usuario a las páginas con registro.
		// Fecha y hora con la que se inició sesión.
		$fechaAcceso=$_SESSION['INICIALACCESO'];
		// Fecha y hora actual.
		$ahora=date('Y-n-j H:i:s');
		// Calculamos el tiempo transcurrido.
	    $tiempo_transcurrido=(strtotime($ahora)-strtotime($fechaAcceso));
		// Si se lleva 15 minutos de inactividad cierro sesión.
		if($tiempo_transcurrido>=600){
			Login::logout(); // Vacia la session del usuario actual.
			printf("<script language='javascript'>document.location='index.php?registrado=ko';</script>");
			die('Acceso no autorizado');
		}else{
			// Si está activo (recarga la página) modifico el tiempo de la conexión inicial al momento actual.
			$_SESSION['INICIALACCESO']=$ahora;
		}
	}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Strict Standards: Non-static method Login::estoy_logeado() should not be called statically

Publicado por xve (5520 intervenciones) el 27/07/2015 21:15:05
Hola Juan Antonio, gracias por mostrarlo...

Si quieres llamar a una función de una clase sin instanciar-la, tiene que ser una función statica (static)
http://php.net/manual/es/language.oop5.static.php

prueba a poner:
1
public static function estoy_logeado () {

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP 5.6

Publicado por Juan Antonio (22 intervenciones) el 27/07/2015 21:29:15
vale, en cuanto lo pruebe comento. Saludos y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PHP 5.6

Publicado por Juan Antonio (22 intervenciones) el 28/07/2015 10:33:10
Máquina jaja....ahora no da el error ya. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar