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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Como puedo mostrar un codigo fuente ???
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como puedo mostrar un codigo fuente ???  (Leído 3,267 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Como puedo mostrar un codigo fuente ???
« en: 21 Abril 2008, 22:30 pm »

Hola:

Pues asi es, digamos que tengo mi propio Sistema de Noticias, y pues se me ocurre escribir un mensaje en donde quiero mostrar FRAGMENTOS de codigo fuente, vaya, puede ser codigo fuente de lenguajes como: C, C++, PHP, etc, etc...

He intentado de diferentes formas que el codigo se visualize asi:

Código:
#include <stdio.h>
#include <stdlib.h>

int main()
          {
          printf( "hola" );
          getchar();
          return 0;
          }

Pero al intentar que mostrar el mensaje NO muestra ciertas cosas, digamos que se come lo que va delante de: #include, y cosas asi !!...

Despues de seguir buscando me encontre con la funcion highlight_file() que te muestra el contenido de un codigo ya formateado, pero no  me muestra el code bien :(

Como ejemplo, quisiera saber como puedo hacer para que se imprima esto:

Código:
<?php
$var='#include <stdio.h>
#include <stdlib.h>

int main()
      {
      system( "clear" );
      printf( "hola" );
      getchar();
      return 0;
      }
';

echo $var;
?>

Resultado:
Código:
//como vemos, se comio lo que esta delante del '#include'

#include #include int main() { system( "clear" ); printf( "hola" ); getchar(); return 0; }

En cambio si escribo el CODIGO FUENTE en una rchivo, y despues lo invoco con la funcion highlight_file(), el codigo se muestra bien formateado.. Pero no logro hacer que highlight_file() funcione mediante una variable que contiene dicho codigo :( :
Código:
<?php
echo highlight_file("codigo.c");
?>

El fin de todo esto es poder consultar los datos de la BDD e imprimir el codigo dentro de un area determinada (usando <div>), he invocando la insecion de esto con etiquetas tipo BBCode...


« Última modificación: 21 Abril 2008, 22:40 pm por Diabliyo » En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Como puedo mostrar un codigo fuente ???
« Respuesta #1 en: 22 Abril 2008, 00:00 am »

Angelillo,

Prueba con highlight_string  ;)


En línea

Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Como puedo mostrar un codigo fuente ???
« Respuesta #2 en: 22 Abril 2008, 23:50 pm »

y tambien htmlspecialchars() para que te respete los tags de html y eso por si oculas
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Como puedo mostrar un codigo fuente ???
« Respuesta #3 en: 23 Abril 2008, 00:35 am »

Gracias Ing_Ams y Azielito por sus propuestas, las utilizare y en seguida colgare mis resulatdos y comentarios...

De momento me gustaria tocar otro tema que va de la mano con esto mismo jejeje.. Pero esto es del lado de SEGURIDAD al momento de guardar el mensaje en la base de datos..

Actualmente tengo implementado solo esto:

1- Se muestra el formulario (titulo, mensaje).
2- El usuario rellena los INPUT y pulsa ENVIAR.
3- Dentro del code en la parte de guardar el mensaje en la BDD, tengo lo siguiente:

Código:
<?php
$msg= msg2caritas( $_POST["mensaje_noticia"] ); //de CODIGO a CARITAS  :D --> <img ...
$msg= msg2msgtags( $msg ); //de BBCode a HTML Tags  [b] --> <b>

//generamos array de insercion mysql
$valores= array(
"autor"=>"'". $_SESSION["log_usr"]. "'",
"titulo"=>"'". $_POST["titulo_noticia"]. "'",
"mensaje"=>"'". htmlentities($msg, ENT_QUOTES). "'",
"fecha"=>"'". time(). "'",
"menu"=>"'". $buf_menu["NOMBRE"]. "'",
"sección"=>"'". $buf_sec["NOMBRE"]. "'" );

if( insertar_bdd( "NOTICIAS", $valores )==0 )
echo "Error en la Insercion de los Datos.";
else
echo "Datos Agregados con Exito.";
?>

Posteriormente en la parte de Modificaciones el usuario al intentar modificar el mensaje colgado anteriormente, le muestra el mensaje pero de forma distinta :(, ya que los SALTOS DE LINEA son cambiados por <br> por la funcion htmlentities() :'(, la unica seria quitar la funcion htmlentities() al momento de insertar, el problema es que si el usuario redacta un mensaje que contenga un simbolo como este: ' (comilla simple), da error al momento de insertar :S, asi que se debe conservar esta funcion :)

Mis preguntas son:

1- Lo implementado para la INSERCION de los datos, es lo mas seguro y viable ??
2- Que puedo hacer al respecto en el momento de MODIFICACION de un mensaje anterior y se muestre normal (no muestre <BR>, que muestre los saltos normla)???

Estuve pensando en pasarle la funcion html_entity_decode( $msg, ENT_QUOTES );, y despues pasarle las funciones que hice para convertir de codigo HTML a BBCode o Caracteres especiales !!.. Pero esperare opiniones :D

De antemano gracias por la atencion!!

bye bye
« Última modificación: 23 Abril 2008, 00:58 am por Diabliyo » En línea

Libransser


Desconectado Desconectado

Mensajes: 2.213


Arwing de antaño


Ver Perfil WWW
Re: Como puedo mostrar un codigo fuente ???
« Respuesta #4 en: 24 Abril 2008, 07:05 am »

Así es, para lo que se refiere a campos que tengas que editar en su forma original, simplemente tienes invertir las operaciones que realizaste sobre su contenido. En este caso aplicando el html_entity_decode como ya mencionaste.

Posiblemente también sea conveniente que realices algún tipo de validación sobre la variable $_POST["titulo_noticia"], ya que si en el campo del título ponen una comilla simple, también te dará problemas al insertarlo en la base de datos. Y quizá también sobre las variables $buf_menu["NOMBRE"] y $buf_sec["NOMBRE"], pero eso depende de dónde vengan, que es lo que no se nota en el código.

Arwing
            
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Como puedo mostrar un codigo fuente ???
« Respuesta #5 en: 24 Abril 2008, 15:27 pm »

Así es, para lo que se refiere a campos que tengas que editar en su forma original, simplemente tienes invertir las operaciones que realizaste sobre su contenido. En este caso aplicando el html_entity_decode como ya mencionaste.

Posiblemente también sea conveniente que realices algún tipo de validación sobre la variable $_POST["titulo_noticia"], ya que si en el campo del título ponen una comilla simple, también te dará problemas al insertarlo en la base de datos. Y quizá también sobre las variables $buf_menu["NOMBRE"] y $buf_sec["NOMBRE"], pero eso depende de dónde vengan, que es lo que no se nota en el código.

Arwing
            

Jojojo fuck... tocaste un punto importante que se me habia pasado, las variables:$_POST["titulo_noticia"], $buf_menu["NOMBRE"] y $buf_sec["NOMBRE"], a estas las insertaba directo sin pasarle el htmlentities() :S, pero bueno, gracias por la informacion y el tip :D !!...

Aun queda pendiente lo del uso de htmlspecialchars() y highlight_string(), mas tarde pongo los resultados :D !!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como puedo averigurar el codigo completo de una pag web???
Desarrollo Web
nb248077 2 2,227 Último mensaje 21 Agosto 2012, 23:34 pm
por Luna71c0
Ayuda sobre como puedo explorar codigo fuente java
Dudas Generales
criscell25 0 1,841 Último mensaje 14 Noviembre 2012, 05:01 am
por criscell25
Mostrar código fuente de PHP.
PHP
#Aitor 5 2,370 Último mensaje 1 Julio 2013, 03:32 am
por engel lex
[Ayuda] Como puedo llamar un código fuente aparte en C
Programación C/C++
Proxmond 9 8,572 Último mensaje 4 Junio 2014, 16:19 pm
por eferion
¿Como puedo mostrar un mejor menú de ayuda?
Scripting
retr02332 0 2,385 Último mensaje 4 Enero 2020, 12:32 pm
por retr02332
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines