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)


  Mostrar Mensajes
Páginas: 1 ... 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 [62] 63 64 65 66 67 68 69 70 71 72
611  Programación / PHP / Re: Crear la etiqueta CODE en mi propio codigo !! en: 3 Junio 2008, 01:37 am
debes reemplazar los espacios con  
reemplazar los < y > por &lt; y &gt; respectivamente o usar alguna función como html_entities()
...
el tabulador podrías reemplazarlo por 4 espacios &nbsp;

Lo del remplazo de los espacios por &nbsp y los < > por &lt; &gt seria en la funcion msg2mstags() que utilizo ??... o en que parte del codigo serua conveniente invocar eso ??
612  Programación / PHP / Re: Crear la etiqueta CODE en mi propio codigo !! en: 2 Junio 2008, 21:27 pm
Al final de todo, al publicar el mensaje se come esto:

- Si el texto/codigo tiene TABULARES, los elimina.
- Si el texto/codigo tiene ESPACIOS extra, los elimina.
- Si el codigo es programa en C, elimina las cabeceras que esten declaradas asi: < cabecera >
- Solo se puede imprimir una cabecera de codigo C, mediante la inclucion asi: include "cabecera"

Alguna idea ?
613  Programación / PHP / Crear la etiqueta CODE en mi propio codigo !! en: 2 Junio 2008, 21:22 pm
Hola:

Estoy terminando un sistema personal y me encuentro atorado en la parte de mostrar noticias, en especifico la parte cuando queremos mostrar codigos o texto de algun lenguaje de programacion utilizando las etiquetas CODE, pero por mas que lo intengo no logro imprimir bien algunas cosas...

El proceso que realizo para guardar la noticia de una forma muy resumida es:

OJO: register_globals= Off asi esta mi php.ini configuado.

Código:
<?php
switch( $buf_sec["TIPO"] ) //dependiendo el tipo de mensaje/noticia a colgar, es el modo
{
case 'noticia':
$msg= strip_tags($_POST["mensaje_noticia"]); //eliminamos etiquetas HTML
$msg= msg2caritas( $msg ); //de CODIGO a CARITAS, Ejm: :D => <img src="blabla">
$msg= msg2msgtags( $msg ); //de BBCode a HTML Tags, Ejm: [b] => <b>

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

unset($msg);

if( insertar_bdd( "NOTICIAS", $valores )==0 ) //insertamos a la BDD la trama
echo "Error en la Insercion de los Datos.";
else
echo "Datos Agregados con Exito.";
break;
//otros case...
}
?>

Para mostrar la noticia al publico es (de forma resumida):

Código:
<?php
//en una funcion anterior se reviso la validez y seguridad de la variable
//que actualmente esta pasandose como argumento con el  nombre de 'id_tmp'

$cons= consultar_con( "NOTICIAS", "ID='". $id_tmp. "'" );
$tmp= mysql_fetch_array($cons);

$fecha= date( "j", $tmp["FECHA"] ). " de ";
$fecha .= mes_esp(date( "m", $tmp["FECHA"] )). " del "; //el mes en espanol
$fecha .= date( "Y", $tmp["FECHA"] ). " a las ";
$fecha .= date( "g:i a", $tmp["FECHA"] );

$com_con= consultar_con( "SECCIONES", "NOMBRE='". $tmp["sección"]. "':RELACION='". $tmp["MENU"]. "'" );
$comm= mysql_fetch_array($com_con);

echo "<th colspan=\"2\"><a href=\"index.php?hoja=". $tmp["ID"]. "\" alt=\"". $tmp["TITULO"]. "\" title=\"". $tmp["TITULO"]. "\">". $tmp["TITULO"]. "</a></th><tr>";
echo "<td><div id=\"datos_publicacion\">Publicado por ";
echo "<a href=\"mailto:". consultar_datos_usuario( $tmp["AUTOR"], "email" ). "\" alt=\"". consultar_datos_usuario( $tmp["AUTOR"], "email" ). "\" title=\"". consultar_datos_usuario( $tmp["AUTOR"], "email" ). "\">";
echo "<b>". $tmp["AUTOR"]. "</b></a> el ". $fecha. "</div></td><tr>";
echo "<td>". html_entity_decode($tmp["MENSAJE"], ENT_QUOTES). "</td>";

ver_comentarios_thtd( $comm["COMENTARIOS"], $tmp["ID"], $id_tmp );
echo "<tr>";

unset($cons);
unset($id_tmp);
?>

La funcion de msg2msgtags:

Código:
<?php
function msg2msgtags( $mensaje )
{
/*
strchr( lugar, palabraclave )  busca la "palabraclave" en "lugar"
str_replace( palabraclave, sustituto, lugar )  busca en "lugar" la "palabraclave" y la sustituye por "sustituto"
*/
if( strchr( $mensaje, "[b]" ) &&  strchr( $mensaje, "[/b]" ) )
{
$mensaje= str_replace( "[b]", "<b>", $mensaje );
$mensaje= str_replace( "[/b]", "</b>", $mensaje );
}
if( strchr( $mensaje, "[i]" ) &&  strchr( $mensaje, "[/i]" ) )
{
$mensaje= str_replace( "[i]", "<i>", $mensaje );
$mensaje= str_replace( "[/i]", "</i>", $mensaje );
}
if( strchr( $mensaje, "[u]" ) &&  strchr( $mensaje, "[/u]" ) )
{
$mensaje= str_replace( "[u]", "<u>", $mensaje );
$mensaje= str_replace( "[/u]", "</u>", $mensaje );
}
if( strchr( $mensaje, "[center]" ) &&  strchr( $mensaje, "[/center]" ) )
{
$mensaje= str_replace( "[center]", "<center>", $mensaje );
$mensaje= str_replace( "[/center]", "</center>", $mensaje );
}
if( strchr( $mensaje, "[img]" ) &&  strchr( $mensaje, "[/img]" ) )
{
$mensaje= str_replace( "[img]", "<img class=\"img_post\" src=\"", $mensaje );
$mensaje= str_replace( "[/img]", "\">", $mensaje );
}
if( strchr( $mensaje, "[code]" ) ||  strchr( $mensaje, "
" ) )
      {
      $mensaje= str_replace( "
Código:
", "<div id=\"etiqueta_code\">", $mensaje );
$mensaje= str_replace( "
", "</div>", $mensaje );
      }
   if( strchr( $mensaje, "\n" ) )
      {
      $mensaje= str_replace( "\n", "<br>", $mensaje );
      }
   if( strchr( $mensaje, "<script>" ) )
      {
      $mensaje= str_replace( "<script>", htmlentities( "<script>", ENT_QUOTES ), $mensaje );
      }
   if( strchr( $mensaje, "</script>" ) )
      {
      $mensaje= str_replace( "</script>", htmlentities( "</script>", ENT_QUOTES ), $mensaje );
      }
   /*if( strchr( $mensaje, "" ) &&  strchr( $mensaje, "" ) )
      {
      $mensaje= str_replace();
      $mensaje= str_replace();
      }*/
   return $mensaje;
   }
?>[/code]

El estilo de la etiqueta #etiqueta_code en mi css es:

Código:
#etiqueta_code
{
background-color:yellow;
width:390px;
padding:3px 5px 3px 5px;margin-left:5px;
}
614  Programación / PHP / Re: Como puedo mostrar un codigo fuente ??? 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 !!
615  Programación / PHP / Re: Como puedo mostrar un codigo fuente ??? 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
616  Programación / PHP / Re: Error al subir un archivo !! en: 23 Abril 2008, 00:17 am
Hola:

La solucion mas viable y segura (segun mi criterio) es solamente cambiar el propietario de la carpeta donde el programa PHP va aescribir datos (chown -R apache carpeta/), ya que si dejamos los permisos en: 766 o cualquiera que deje el bit de escritura activa para OTROS (los ultimos 3 bits), este privilegio se activaria hasta para las personas que visiten el sitio y lleguen a explotar algun BUG, seria desastroso :S !!..

En cambio si se asigna el nombre de propietario de apache, se conservan los privilegios: 755, de modo que nadie puede escribir solo el OWNER y APACHE :D !!

bye bye
617  Programación / PHP / 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...
618  Programación / PHP / Re: Problema con petición POST en: 19 Abril 2008, 03:07 am
Se supone que lo que le mando es dato1=lalala&dato2=lololo, pero no me lo coge...Esta es la petición HTTP completa:


Código
  1. $salida = "POST /www/php/prueba3.php HTTP/1.1\r\n";
  2. $salida .= "Host: localhost\r\n";
  3. $salida .= "Content-Length: 25\r\n\r\n";
  4. $salida .= "dato1=lalala&dato2=lololo";
  5.  

De todas formas, me surgen otras dudas...porque la finalidad de esto es conseguir iniciar sesión automáticamente para poder acceder a páginas que no tendría permiso de no iniciarla, y aunque consiguiera pasarle los datos, y hacer la petición...no se cómo podría hacer para "mantener" el login en la proxima petición HTTP, que sería un simple GET.

Quiero decir, la finalidad de todo esto es entrar a una página que esta protegida por un nombre de usuario y una contraseña. El proceso es el siguiente: en login.php se postean los datos, ésta los envia a auth.php, y si todo es correcto, auth.php redirige a index.php ya identificado y con los derechos necesarios para ver la información pertinente.

Lo que quiero hacer yo con PHP es un script que todo eso lo haga solo, para obtener los datos de index.php (que es el que se necesita estar registrado para verlo) y manipularlos.

La verdad es que no se si esto se puede hacer con PHP únicamente, si alguien ha hecho algo parecido o tiene alguna idea...se agradecen. :rolleyes:

Saludos.

Te refieres a ver el codigo PHP de ua pagina externa ??... jajajaj... es imposible, y es logico que no se puede !!... Simplemente porque el codigo se ejecuta e interpreta por PHP mediante el Servidor HTTP dentro del mismo Servidor, y elresultado de dichas interpretaciones o ejecuciones son mostradas al usuario !!, es por eso que no puedes bajarte una pagina PHP asi de facil :D !!...

La unica  forma de bajarte un PHP es:

- accediendo al hosting por FTP
- accediendo al hosting por HTTP (cpanel o algo asi...)

Lo de tu post anterior de PORQUEN no te muestra, es porque como el companero Ing_Amc dice, que le mandas a POST??... vaya, es logico que envias dato1=lalala&dato2=lololo, pero tu problema es que cuando invocas: print_r($_POST);, no especificas que valores consultas :D !!..

Esto no es huevo con papas, que de cucharazo sacas la papa, es algo como: establecer y pedir conforme al NOMBRE:


Trata algo asi:

Código:
echo $_POST["dato1"];
619  Programación / PHP / Re: Error al subir un archivo !! en: 18 Abril 2008, 20:05 pm
Hola:

No, no se puede si se ponen los permisos a 755.

Código:
shell# chmod -R 0755 imagenes/

Creo que es un poco ovio, debido a que 755 indica:

bit r= 4
bit w= 2
bit x= 1

Los permisos 777 se constituyen por este orden de bits:
(owner)rwx = 7
(grupo)rwx = 7
(otros)rwx = 7

Los permisos 755 se constituyen por el orden de bits siguiente:

(owner)rwx = 7
(grupo)r-x = 5
(otros)r-x = 5

De modo que el programa PHP esta funcionando mediante la ejecucion del deamon apache (httpd), por lo tanto el user que realiza la ejecucion, interpretacion, carpetas, movimientos, etc... es el mismo usuario apache. Del mismo modos el susuario apache solo pertenece al grupo apache.

Si analizamos lo que les mencione como conclusion el usuario apache solo pdora realizar modificaciones a archivos siempre y cuando:

1- pertenezca tambien al grupo users
2- existan permisos en el directorio como: 777, 757... vaya, que los permisos para usuarios fuera del grupo del sistema (otros) este levantado el bit de 'w'...

Esa es mi logica, nose que opinen ustedes !!

bye bye
620  Programación / PHP / Re: Error al subir un archivo !! en: 18 Abril 2008, 19:49 pm
Pues dale un 755 o asegura tus variables para que no te hagan rfi.

Sinceramente no creo que se peuda, pero intentare con 755, pero como solucion alterna a no utilizar 777, solo cambie el dueno del usuario por: apache

Código:
shell# chown -R apache imagenes/

Crees que lo realizado sea combeniente para usos futuros de la aplicacion en servidores externos ?? (vaya, otro hosting)... o sera mejor el 755 ??

bye bye
Páginas: 1 ... 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 [62] 63 64 65 66 67 68 69 70 71 72
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines