Paso a explicarlo mejor:
Tengo un index.php (.htaccess redirecciona todo aqui)
Código
include_once '/themes/default/views/layouts/main.php'; function showContent() { [...] }
/themes/default/views/layouts/main.php
Código
include_once('/includes/functions.php'); //why this include doesn't work for login.php // html and php code showContent(); //will include login.php
y una de las paginas a incluir, pero ocurre con otras paginas con el mismo include y la misma funcion.
/views/site/login.php
Código
<?php include_once('/includes/functions.php'); sec_session_start(); if (login_check($mysqli) == true) { $logged = 'in'; } else { $logged = 'out'; } ?>
Este es el error que da:
Citar
Notice: Undefined variable: mysqli in C:\xampp\htdocs\views\site\login.php on line 7
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\includes\functions.php on line 151
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\includes\functions.php on line 151
La variable $mysqli esta creada en db_connect.php que esta incluido en functions.php y en un principio funciona perfectamente....
db_connect.php
Código
include_once 'config.php'; $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
Y el otro error tambien me lo ha dado muchas otras veces con varias funciones mysqli (como execute() o get_result()) y aun no lo he arreglado, simplemente han desaparecido y aparecido en disitintas paginas, al crear un prepared statement. Esto es lo que me ha podido decir un amigo respecto a este error:
Citar
You get the call to member function on non-object error, when you try to call a function in $this-> scope when the object hasn't been instantiated.
Entonces, ¿como hago eso de estanciar el objeto? if ($stmt = $mysqli->prepare("SQL"))
Lo curioso es que no da ningún error si quito el include de main.php, pero entonces tengo que comentar las funciones que llamo...
Si en lugar de include_once utilizo include en login.php me da el siguiente error:
Citar
Fatal error: Cannot redeclare sec_session_start() (previously declared in C:\xampp\htdocs\includes\functions.php:6) in C:\xampp\htdocs\includes\functions.php on line 26
Este es el codigo del error:
Código
function sec_session_start() { // Esta es la linea 6 de functions.php $session_name = 'sec_session_id'; // Set a custom session name $secure = SECURE; // This stops javascript being able to access the session id. $httponly = true; // Forces sessions to only use cookies. } // Gets current cookies params. $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); // Sets the session name to the one set above. } // Esta es la linea 26 de functions.php
¿Alguna idea de como arreglar esto? ¡Llevo horas intentando arreglarlo pero no consigo nada!
Gracias!