elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  paginas incluidas no funcionan correctamente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: paginas incluidas no funcionan correctamente  (Leído 6,563 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: paginas incluidas no funcionan correctamente
« Respuesta #20 en: 1 Octubre 2014, 02:23 am »

funcion showContent() en index.php:
Código
  1. function showContent() {
  2. $includes = 'includes/';
  3. $views = 'views/';
  4. $site = $views . 'site/';
  5. $user = $views . 'user/';
  6.  
  7. $includes = array(
  8. '/home' => $views . 'home.php',
  9. '/error' => $views . 'error.php',
  10. '/login' => $site . 'login.php',
  11. '/logout' => $site . 'logout.php',
  12. '/contact' => $site . 'contact.php',
  13. '/about' => $site . 'about.php',
  14. '/register' => $site . 'register.php',
  15. '/register_success' => $site . 'register_success.php',
  16. '/profile' => $user . 'profile.php',
  17. '/update' => $user . 'update.php'
  18. );
  19.  
  20. if ($_SERVER['REQUEST_URI'] == '/')
  21. $_SERVER['REQUEST_URI'] = '/home';
  22.  
  23. preg_match('/^([\w\/]+)/', $_SERVER['REQUEST_URI'], $matches);
  24. $matches[1] = isset($matches[1]) ? $matches[1] : null;
  25.  
  26. if(array_key_exists($matches[1], $includes)) {
  27. $content = include($includes[$matches[1]]);
  28. } else $content = include('views/error.php');
  29. return $content;
  30. }

Si no incluyo el archivo donde se encuentra la función, ¿como voy a llamar una función que no existe? No se que tiene de laberintico eso :(

EDITO: Vale la funcion se crea despues de incluir main.php entonces no se necesario incluirla. Acabo de quitar el include y sigue funcionando :P Lo siento un despiste :(

He quitado el require_once functions de main y lo he puesto en index.php. El problema puede deberse por incluir/requerir un archivo dentro de otro que a su vez esta siendo incluido??? Aunque de igual modo, los archivos incluidos por la función hacen eso...

Ahora que lo pienso... si eso funciona asi, ¿por que es necesario hacer requires a functions.php en todas las paginas si ya se hace en index.php? Si los quito, da error... y no debería, no??


« Última modificación: 1 Octubre 2014, 03:08 am por gAb1 » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: paginas incluidas no funcionan correctamente
« Respuesta #21 en: 1 Octubre 2014, 03:23 am »

Era la cache del navegador, pasándole el ccleaner se arregla. Pero siguen habiendo errores:

A partir de aquí solo hay un require_once('includes/functions.php'); al principio de index.php y en ningún archivo más.

Recien pasado el ccleaner, sin iniciar sesión:
Código
  1. Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\themes\default\views\layouts\main.php:76) in C:\xampp\htdocs\includes\functions.php on line 28
  2.  
  3. Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\themes\default\views\layouts\main.php:76) in C:\xampp\htdocs\includes\functions.php on line 28
  4.  
  5. Warning: session_regenerate_id(): Cannot regenerate session id - headers already sent in C:\xampp\htdocs\includes\functions.php on line 29
  6.  
  7. Notice: Undefined variable: mysqli in C:\xampp\htdocs\views\site\login.php on line 5

Y se muestra el formulario y todo el codigo html.

Esto cuando inicias sesión, y no se muestra el resto del codigo html.
Código
  1. Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\themes\default\views\layouts\main.php:76) in C:\xampp\htdocs\includes\functions.php on line 28
  2.  
  3. Warning: session_regenerate_id(): Cannot regenerate session id - headers already sent in C:\xampp\htdocs\includes\functions.php on line 29
  4.  
  5. Notice: Undefined variable: mysqli in C:\xampp\htdocs\views\site\login.php on line 5
  6.  
  7. Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\includes\functions.php on line 155

La linea 76 de main.php es la etiqueta php que abro para llamar la funcion showContent()


« Última modificación: 1 Octubre 2014, 03:26 am por gAb1 » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.164


I'm fourth.


Ver Perfil WWW
Re: paginas incluidas no funcionan correctamente
« Respuesta #22 en: 1 Octubre 2014, 03:32 am »

No necesitas cargarlos en cada parte, puedes incluir functions.php desde el indice...

El problema esta en la visibilidad.

Código
  1. //archivo.php
  2. <?php
  3.  
  4. $test = 'archivo.php';
  5.  
  6. ?>

Código
  1. //index.php
  2. <?php
  3.  
  4. require_once 'archivo.php';
  5.  
  6. function hey(){
  7.  echo $test; //PHP Notice: Undefined Variable
  8. }

$test no existe en la funcion hey...

Ahora si le pones:

Código
  1. function hey(){
  2.  global $test;
  3.  echo $test;
  4. }

Si imprime archivo.php...

En lo personal, yo no encapsularia el ruteador en una función... No creo que vayas a necesitarlo en otra parte.

Y tu session_start() se suele poner al principio del script para evitar problemas como este, de headers already sent (al imprimir algo, ya se envian las cabeceras).
« Última modificación: 1 Octubre 2014, 03:35 am por MinusFour » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: paginas incluidas no funcionan correctamente
« Respuesta #23 en: 1 Octubre 2014, 03:40 am »

¿Te refieres a que lo haga sin función? Y que en main.php haga un echo a $content???

Si, llamo a sec_session_start(); en todas las paginas, ese puede ser el problema? Entonces tambien lo tengo que llamar en index.php no??
« Última modificación: 1 Octubre 2014, 03:49 am por gAb1 » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.164


I'm fourth.


Ver Perfil WWW
Re: paginas incluidas no funcionan correctamente
« Respuesta #24 en: 1 Octubre 2014, 03:53 am »

Parte del problema es porque se imprime HTML antes de usar session_start(); la otra parte es porque la funcion showContent() no tiene visiblidad sobre las variables traidas desde fuera de la funcion. Si el ruteador estuviera fuera de la funcion vería las variables importadas desde el main.php. El require_once no carga las variables de functions.php porque ya fueron importadas desde el main.php y no son importadas dentro de la función.
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: paginas incluidas no funcionan correctamente
« Respuesta #25 en: 1 Octubre 2014, 04:04 am »

Si, lo de sec_session_start(); ya esta arreglado, lo he puesto solo en index.php despues del require_once y han dejado de salir esos errores.

Vale, si quito la función, lo que pasa es que se ejecuta el return $content; y lo muestra al final del archivo y no donde deberia ir, entonces necesito alguna manera de que se incluya donde antes, en el div y realmente no se como hacer eso :(

Pero si, ya no hay ningún error :)

Se me olvido quitar del logout.php y del process_login el session start y he tenido algunos problemas, ya estan solucionados.

Pero en el process_login.php si quito el include_once functions me da error funcion login() no definida.

login.php lo llama en el form action="includes/process_login.php" entonces tiene que requerirlo, le he dejado require normal, ya que process_login no se incluye en ningún sitio.

Pero ese no es el problema, process_login necesita sec_session_start(); o no "inicia sesion"...

Código
  1. <?php
  2.  
  3. require('functions.php');
  4.  
  5. sec_session_start();       // sin esto no inicia sesión y no veo ningún error
  6.  
  7. if (isset($_POST['email'], $_POST['p'])) {
  8.    $email = $_POST['email'];
  9.    $password = $_POST['p']; // The hashed password.
  10.  
  11.    if (login($email, $password, $mysqli) == true) {
  12.        // Login success
  13. header('Location: /home');
  14.    } else {
  15.        // Login failed
  16.        header('Location: /login?error=1');
  17.    }
  18. } else {
  19.    // The correct POST variables were not sent to this page.
  20.    echo 'Invalid Request';
  21. }
  22. ?>

Entonces al cerrar sesión salen estos errores:

Código
  1. Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\themes\sportislife\views\layouts\main.php:74) in C:\xampp\htdocs\views\site\logout.php on line 15
  2.  
  3. Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\themes\sportislife\views\layouts\main.php:74) in C:\xampp\htdocs\views\site\logout.php on line 19

Dejo tambien el logout.php:
Código
  1. <?php
  2.  
  3. // Unset all session values
  4. $_SESSION = array();
  5.  
  6. // get session parameters
  7.  
  8. // Delete the actual cookie.
  9. '', time() - 42000,
  10. $params["path"],
  11. $params["domain"],
  12. $params["secure"],
  13. $params["httponly"]);
  14.  
  15. // Destroy session
  16. header('Location: /home');
  17. ?>

¿Como puedo solucionar este problema?  :huh:

Gracias!
« Última modificación: 1 Octubre 2014, 06:27 am por gAb1 » En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear un Xls con macros incluidas
Programación Visual Basic
yalosabes 8 3,891 Último mensaje 18 Marzo 2011, 10:36 am
por raul338
[Guía oficial] Crear Servidor Privado Rakion [Herramientas Incluidas]
Desarrollo Web
Weeken 0 6,316 Último mensaje 30 Mayo 2012, 06:44 am
por Weeken
No me funcionan correctamente las cadenas de formato « 1 2 »
Programación C/C++
lucaslopez0000 10 2,796 Último mensaje 29 Mayo 2013, 15:10 pm
por lucaslopez0000
Generar Jar con librerias incluidas
Java
BigBear 0 871 Último mensaje 26 Febrero 2014, 21:57 pm
por BigBear
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines