Hola, estoy teniendo un molesto problema a la hora de incluir paginas en php. El problema que tengo es causado al poner el mismo include en dos paginas y una de las paginas es incluida en la otra.
Paso a explicarlo mejor:
Tengo un index.php (.htaccess redirecciona todo aqui)
/themes/default/views/layouts/main.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
Este es el error que da:
La variable $mysqli esta creada en db_connect.php que esta incluido en functions.php y en un principio funciona perfectamente....
db_connect.php
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:
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:
Este es el codigo del error:
¿Alguna idea de como arreglar esto? ¡Llevo horas intentando arreglarlo pero no consigo nada!
Gracias!
Paso a explicarlo mejor:
Tengo un index.php (.htaccess redirecciona todo aqui)
Código (php) [Seleccionar]
include_once '/themes/default/views/layouts/main.php';
function showContent() {
[...]
}
/themes/default/views/layouts/main.php
Código (php) [Seleccionar]
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) [Seleccionar]
<?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:
CitarNotice: 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
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 (php) [Seleccionar]
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:
CitarYou 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:
CitarFatal 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 (php) [Seleccionar]
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.
if (ini_set('session.use_only_cookies', 1) === FALSE) {
header("Location: /error?err=Could not initiate a safe session (ini_set)");
exit();
}
// Gets current cookies params.
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
$cookieParams["path"],
$cookieParams["domain"],
$secure,
$httponly);
// Sets the session name to the one set above.
session_name($session_name);
session_start(); // Start the PHP session
session_regenerate_id(); // regenerated the session, delete the old one.
} // Esta es la linea 26 de functions.php
¿Alguna idea de como arreglar esto? ¡Llevo horas intentando arreglarlo pero no consigo nada!
Gracias!