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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Solucionado]Problema con función, crea e imprime datos pero no ejecuta.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado]Problema con función, crea e imprime datos pero no ejecuta.  (Leído 8,886 veces)
deadfrommayhem

Desconectado Desconectado

Mensajes: 16



Ver Perfil WWW
[Solucionado]Problema con función, crea e imprime datos pero no ejecuta.
« en: 30 Julio 2017, 00:10 am »

La solucion sera usar un txt para guardar la informacion generada y de ahi llamar los modulos.

Saludos a todos, estoy intentando hacer un script que liste algunos archivos que esten dentro de alguna ruta especificada al llamar la funcion y que muestren un instruccion para asi llamar paginas dentro de una pagina, a manera de modulos.

El problema es el siguiente, tengo la funcion hecha pero por algun motivo ejecuta las ordenes y genera los datos que quiero incluir en un archivo, pero al llamar la funcion el texto generado no se mantiene como codigo sino se muestra en el navegador como texto plano.

Esta es la funcion
Código
  1. function mostrar_modulos($ruta){
  2.  
  3. // Se comprueba que realmente sea la ruta de un directorio
  4. if (is_dir($ruta)){
  5. // Abre un gestor de directorios para la ruta indicada
  6. $gestor = opendir($ruta);
  7. // Recorre todos los archivos del directorio
  8. while (($archivo = readdir($gestor)) !== false)  {
  9. // Solo buscamos archivos sin entrar en subdirectorios
  10. $nombremod = substr("$archivo", 0, -4);
  11. if (is_file($ruta."/".$archivo)) {
  12. //echo "<a href='".$ruta."/".$archivo."' title='".$archivo."'>".$archivo."</a>";
  13. $modulos = "\$conf['$nombremod'] = array( 'archivo' => '$archivo' );<br/>";
  14. print "$modulos";
  15. }
  16.  
  17. }
  18. // Cierra el gestor de directorios
  19. closedir($gestor);
  20. } else {
  21. echo "No es una ruta de directorio valida<br/>";
  22. }
  23. }
  24.  

Genera esta linea de codigo por cada archivo encontrado dentro del directorio indicado

Código
  1. $conf['error'] = array( 'archivo' => 'error.php');
  2.  

La funcion se llama de esta manera

Código
  1. mostrar_modulos("./modulos/prueba/");
  2.  

Pero en el navegador imprime el bloque de php de esta manera

Código
  1. <?php
  2. $conf['test1'] = array( 'archivo' => 'test1.php' );<br/>
  3. $conf['test2'] = array( 'archivo' => 'test2.php' );<br/>
  4. $conf['test3'] = array( 'archivo' => 'test3.php' );<br/>
  5. $conf['test4'] = array( 'archivo' => 'test4.php' );<br/>
  6. $conf['test5'] = array( 'archivo' => 'test5.php' );<br/>
  7. $conf['test6'] = array( 'archivo' => 'test6.php' );<br/>
  8. ?>
  9.  

En ves de ejecutar el codigo.
Cabe decir que lo que quiero es automatizar un poco el sistema creado en zonaphp http://zonaphp.com/creando-webs-modulares/.

La cuestion es llamar la funcion dentro del archivo conf para crear la variable con su respectivo array y despues solo llamar el modulo con el enlace, agradeceria alguna orientacion para poder hacer que los datos se queden como codigo y sean ejecutados por el navegador en vez de mostrar el bloque de codigo fuente tal cual.

Gracias.

SI A ALGUIEN LE INTERESA ESTA FUE LA SOLUCION
Código:
<?php
function mostrar_modulos($ruta){
// Se comprueba que realmente sea la ruta de un directorio
if (is_dir($ruta)){
// Abre un gestor de directorios para la ruta indicada
$gestor = opendir($ruta);
// Recorre todos los archivos del directorio
while (($archivo = readdir($gestor)) !== false)  {
// Solo buscamos archivos sin entrar en subdirectorios
$nombremod = substr("$archivo", 0, -4);
if (is_file($ruta."/".$archivo)) {
$rutacorrecta = substr("$ruta", 9);
//echo "<a href='".$ruta."/".$archivo."' title='".$archivo."'>".$archivo."</a>";
$modulos = "\$conf['$nombremod'] = array( 'archivo' => '$rutacorrecta/$archivo' );";
$file=fopen("conf.php","r+") or die("Problemas");
fseek($file, -3, SEEK_END);
fwrite($file,"$modulos;?>");//escribir el contenido para incluir en conf.php desde txt
fclose($file);

}

}
// Cierra el gestor de directorios
closedir($gestor);
} else {
echo "No es una ruta de directorio valida<br/>";
}
}
mostrar_modulos("./modulos/prueba");
?>



« Última modificación: 24 Septiembre 2017, 02:02 am por deadfrommayhem » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #1 en: 30 Julio 2017, 00:18 am »

no terminé de entender, muestra una captura de tu navegador a ver como queda...

por otro lado para crear webs modulares no cargas a lo loco :s

por ultimo, para crear webs modulares crear tu propio sistema es bueno para aprender, pero no es util reinverntar el agua tibia... para eso hay sistemas bastante bien armados y maduros ya como son los MVC

yo uso codeigniter, pero está por ejemplo cakePHP, zend, etc...


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
deadfrommayhem

Desconectado Desconectado

Mensajes: 16



Ver Perfil WWW
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #2 en: 30 Julio 2017, 00:33 am »

Aca estan las capturas, la cuestion de esto es aprender un poco no reinventar la rueda  ;D

Esta es cuando doy ctrl+u y muestra el codigo fuente.

El codigo fuente de la funcion

Lo que muestra el navegador cuando se llama a la funcion
url de imagen
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #3 en: 30 Julio 2017, 00:41 am »

eso parece a que estás incluyendo sin abrir la etiqueta <?php o cerrandola donde no debes
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
deadfrommayhem

Desconectado Desconectado

Mensajes: 16



Ver Perfil WWW
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #4 en: 30 Julio 2017, 00:45 am »

Si lees el código de la función, específicamente crea las etiquetas php, pero no ejecuta el código, sino que lo presenta como en la primer imagen, la cuestión solo es que lo que quiero es que ese código se ejecute en vez de presentarse en el html de la pagina como texto.

He intentado cambiar algunas cosas en donde se genera la variable módulos, pero sin conseguir éxito, ¿algún consejo?
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #5 en: 30 Julio 2017, 00:48 am »

ahora si lo vi! lo que estás haciendo es creando pero como string...

incluso lo formaste como html

Código
  1. if (is_file($ruta."/".$archivo)) {
  2. //echo "<a href='".$ruta."/".$archivo."' title='".$archivo."'>".$archivo."</a>";
  3. $modulos = "\$conf['$nombremod'] = array( 'archivo' => '$archivo' );<br/>";
  4. print "$modulos";
  5. }

creo que lo que quieres es

Código
  1. if (is_file($ruta."/".$archivo)) {
  2. $modulos = $conf[$nombremod] = array( 'archivo' => $archivo );
  3. }

y luego haces lo que tengas que hacer con los modulos cargados
« Última modificación: 30 Julio 2017, 00:52 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
deadfrommayhem

Desconectado Desconectado

Mensajes: 16



Ver Perfil WWW
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #6 en: 30 Julio 2017, 00:56 am »

Mismo error que habia enfrentado anteriormente

Array
Notice: Array to string conversion in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
Array
Notice: Array to string conversion in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
Array
Notice: Array to string conversion in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
Array
Notice: Array to string conversion in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
Array
Notice: Array to string conversion in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
Array?>
Con esta linea modificada de esta manera
Código
  1. $modulos = '$conf['.$nombremod.'] = array( '.archivo.' => '.$archivo.' );<br/>';
Da estos errores...

Notice: Use of undefined constant archivo - assumed 'archivo' in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
$conf[test2] = array( archivo => test2.php );

Notice: Use of undefined constant archivo - assumed 'archivo' in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
$conf[test3] = array( archivo => test3.php );

Notice: Use of undefined constant archivo - assumed 'archivo' in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
$conf[test4] = array( archivo => test4.php );

Notice: Use of undefined constant archivo - assumed 'archivo' in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79
$conf[test5] = array( archivo => test5.php );

Notice: Use of undefined constant archivo - assumed 'archivo' in C:\xampp\htdocs\sickertk\mostrar_archivos.php on line 79

Siento que ando cerca :D


· No haga doble post, usa el boton modificar
>aquí las reglas del foro
-Engel Lex
« Última modificación: 30 Julio 2017, 01:02 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #7 en: 30 Julio 2017, 01:03 am »

fijate el codigo (lo había corregido sin el echo)

Código
  1. if (is_file($ruta."/".$archivo)) {
  2. $modulos = $conf[$nombremod] = array( 'archivo' => $archivo );
  3. }



que quieres hacer exactamente con eso? que se muestre el contenido de los archivos o que se carguen las rutas a la variable $modulos?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
deadfrommayhem

Desconectado Desconectado

Mensajes: 16



Ver Perfil WWW
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #8 en: 30 Julio 2017, 04:00 am »

fijate el codigo (lo había corregido sin el echo)

Código
  1. if (is_file($ruta."/".$archivo)) {
  2. $modulos = $conf[$nombremod] = array( 'archivo' => $archivo );
  3. }



que quieres hacer exactamente con eso? que se muestre el contenido de los archivos o que se carguen las rutas a la variable $modulos?
Especificamente lo que deseo hacer es que cuando la funcion arroje sus datos el codigo php se ejecute, de manera que cuando quiera llamar el modulo solo tenga que dar click en el enlace que lleva este formato. ?mod=nobredemodulo. al tener ya el modulo con nombre y archivo ya se cual modulo debo llamar y como hacerlo.

No se si me explico.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con función, crea e imprime datos pero no ejecuta php en navegador.
« Respuesta #9 en: 30 Julio 2017, 04:05 am »

allí está entonces ya el modulo cargado... lo que tienes que mostrar en un echo es el nombre del modulo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines