Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Puntoinfinito en 30 Agosto 2012, 13:51 pm



Título: PHP Comentario - función
Publicado por: Puntoinfinito en 30 Agosto 2012, 13:51 pm
Buenas a tod@s. Mirad, necesito un sistema de comentarios para mi website y la verdad que estoy liado. He puesto ya unos cuantos con sql y sin sql, pero me dan error.

Algúnos que he probado y no funcionan:

- www.infiniter.vacau.com/learning/comentarios/index.html (SIMPLE)
- www.infiniter.vacau.com/learning/comentarios/sql-comentarios/index.php (CON SQL)
- www.infiniter.vacau.com/learning/comentarios/php-comentarios/index.php (SIN SQL)

El que me atrae más es el primero, no solo porque funciona con errores sino porque es muy simple. La lastima es que me da un error al publicar, se muestran partes de código php. Os lo dejo:
enviar.PHP
Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-…
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Documento sin título</title>
  6. </head>
  7.  
  8. <body>
  9. <center>
  10. <?
  11. $fecha=date("j-n-Y h:i:s");
  12. $nombre=$_POST[nombre];
  13. $comentario=$_POST[comentario];
  14.  
  15. $fp=fopen("comentarios.txt","a");
  16. $salida="<center><table width='485' border='1'>
  17. <tr>
  18. <th width='174' rowspan='2' scope='row'><div><font color='ff0000'>$fecha<font></div></th>
  19. <td width='295' height='26'><div>
  20.  
  21. <div align='center'><font color='ff0000'><strong>$nombre</strong><…
  22. </div></td>
  23. </tr>
  24. <tr>
  25. <td height='23'><div>
  26. <div align='center'><font color='ff0000'><strong>$comentario</stro…
  27. </div></td>
  28. </tr>
  29.  
  30. </table></center>";
  31. fwrite($fp,$salida);
  32. fclose($fp);
  33. ?>
  34. <p><a href="comentarios.php">Gracias Por Comentar!!</a>
  35. </p>
  36. </center>
  37. </body>
  38. </html>
  39.  
comentarios.HTML
Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-&#133;
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Documento sin título</title>
  5. <style type="text/css">
  6. <!--
  7. .Estilo2 {
  8. color: #FF0000;
  9. font-weight: bold;
  10. }
  11. -->
  12. </head>
  13.  
  14. <form id="form1" name="form1" method="post" action="enviar.php">
  15. <div align="center">
  16. <table width="200" border="1">
  17. <tr>
  18.  
  19. <th colspan="2" scope="row"><span class="Estilo2">Comenta Este Post!!! </span></th>
  20. </tr>
  21. <tr>
  22. <th scope="row"><span class="Estilo2">Nombre:</span></th>
  23. <td><input name="nombre" type="text" id="nombre" size="38" /></td>
  24. </tr>
  25. <tr>
  26. <th scope="row"><span class="Estilo2">Comentario:</span></th>
  27.  
  28. <td><textarea name="comentario" cols="35" rows="5" id="comentario"></textarea></td>
  29. </tr>
  30. <tr>
  31. <th colspan="2" scope="row"><div>
  32. <input type="submit" name="Submit" value="Enviar" />
  33. </div></th>
  34. </tr>
  35.  
  36. </div>
  37. </form>
  38. <p align="center">
  39. <?
  40. readfile ("comentarios.txt")
  41. ?>
  42. </p>
  43. </body>
  44. </html>

Alguien podría decirme alguno simple que funcionara bien o que me arreglara el código del que os he pasado arriba. Es urgente :P

Gracias elhackeros.neteros


Título: Re: PHP Comentario - función
Publicado por: #!drvy en 30 Agosto 2012, 14:15 pm
NO puedes meter un código PHP en un archivo con extensión .html a no ser que definas en apache que estos también pueden incluir php. Apache sabe cuando mandar a php el código y cuando no. Y by default no esta definido que los documentos .html lleven código php.

Aparte, usa siempre <?php pues muchos servidores no incluyen el like_ASP_tag que es el <?.

Y bueno... eres vulnerable a XSS persistente... para arreglarlo mas o menos cambia
Código
  1. $nombre=$_POST[nombre];
  2. $comentario=$_POST[comentario];
por
Código
  1. $nombre=htmlentities($_POST['nombre'],ENT_QUOTES);
  2. $comentario=htmlentities($_POST['comentario'],ENT_QUOTES);

Tienes otro error en el codigo y es que no pones ni ' ni " al definir $_POST[nombre] y $_POST[comentario]..

PD: Un repaso a un manual de PHP no te vendría mal.. son errores básicos que se aprenden en las primeras paginas de los manuales...

Saludos