Ver Mensaje Individual
  #36 (permalink)  
Antiguo 10/09/2011, 17:39
Avatar de BaByRoDrI
BaByRoDrI
 
Fecha de Ingreso: julio-2009
Ubicación: Mexico
Mensajes: 60
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: [APORTE] Sistema de noticias y comentarios

Acabo de modificar el último publicacomentario.php y ver.php para añadirle seguridad ;) y no nos vayan a querer colar algo, quedo así:

publicacomentario.php
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <title>Sistema de Noticias de KarlicOs - Publica Comentarios :::.</title>
  6. </head>
  7.  
  8. <body>
  9. <?php
  10. require ('includes/connect.php');
  11. $id=mysql_real_escape_string($_POST['id']);
  12. $nick=mysql_real_escape_string($_POST['nick']);
  13. $email=mysql_real_escape_string($_POST['email']);
  14. $comentario=mysql_real_escape_string(htmlentities($_POST['comentario']));
  15. $query = "INSERT INTO comentarios (nick,email,comentario,noticia_id) VALUES('$nick','$email','$comentario','$id')";
  16. mysql_query($query) or die(mysql_error());
  17. header("location: ver.php?id=$_POST[id]")
  18. ?>
  19. </body>
  20. </html>

ver.php
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <title>Sistema de Noticias de KarlicOs - Ver Noticia :::.</title>
  6. <script type="text/JavaScript">
  7. <!--
  8. function MM_findObj(n, d) { //v4.01
  9.   var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
  10.     d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  11.   if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  12.   for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  13.   if(!x && d.getElementById) x=d.getElementById(n); return x;
  14. }
  15.  
  16. function MM_validateForm() { //v4.0
  17.   var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  18.   for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
  19.     if (val) { nm=val.name; if ((val=val.value)!="") {
  20.       if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
  21.         if (p<1 || p==(val.length-1)) errors+='- '+nm+': Es necesario una dirección de e-mail.\n';
  22.       } else if (test!='R') { num = parseFloat(val);
  23.         if (isNaN(val)) errors+='- '+nm+': Es necesario que contenga un numero.\n';
  24.         if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
  25.           min=test.substring(8,p); max=test.substring(p+1);
  26.           if (num<min || max<num) errors+='- '+nm+': Es necesario que contenga un numero entre '+min+' y '+max+'.\n';
  27.     } } } else if (test.charAt(0) == 'R') errors += '- '+nm+': Es necesario que escriba un nick/comentario.\n'; }
  28.   } if (errors) alert('The following error(s) occurred:\n'+errors);
  29.   document.MM_returnValue = (errors == '');
  30. }
  31. //-->
  32. </script>
  33. </head>
  34.  
  35. <body>
  36. <?php
  37. require ('includes/connect.php');
  38. $id=mysql_real_escape_string($_GET["id"]);
  39. $result = mysql_query("select * from noticias where id_noticia='$id'",$connect);
  40. while($row = mysql_fetch_array($result))
  41. {
  42. $result2=mysql_query("select * from comentarios where noticia_id='$id'",$connect);
  43. $totalcomentarios=mysql_num_rows($result2);
  44. echo '<h3>'.$row[titulo].'</h3>';
  45. echo ''.$row[noticia].'<br><br><br>';
  46. echo 'Autor:&nbsp;'.$row[autor].' | '.$row[categoria].' |&nbsp;Publicado en:&nbsp; '.$row[fecha].'';
  47. //echo '<a href="editarcomentario.php?id='.$row[id].'">Editar</a> | <a href="borrar.php?id='.$row[id].'">Borrar</a>';
  48. }
  49. ?>
  50. <br><br><br><br>
  51. <?php
  52. echo '<h2>Comentarios:&nbsp;('.$totalcomentarios.')</h2><br>';
  53. //hago el llamado a la base
  54. $result=mysql_query("select * from comentarios where noticia_id='$id'",$connect);
  55. //Bucle while para visualizarlos
  56. while($row=mysql_fetch_array($result))
  57. {
  58. echo '<h4>Nick: '.$row[nick].':</h4>Email: '.$row[email].'<br>Comentario: '.$row[comentario].'<br><br>';
  59. }
  60. ?>
  61.  
  62. <form action="publicacomentario.php" method="post" onsubmit="MM_validateForm('nick','','R','email','','RisEmail','comentario','','R');return document.MM_returnValue">
  63. <input type="hidden" name="id" value="<?php echo $id;  ?>"><br>
  64. Nick:<br>
  65. <input type="text" name="nick"><br>
  66. E-Mail:<br>
  67. <input type="text" name="email"><br>
  68. Escriba el comentario<br>
  69. <textarea name="comentario" cols="70" rows="15"></textarea>
  70. <br>
  71. <input type="submit" value="Enviar comentario"><br>
  72. </form>
  73. </body>
  74. </html>

No he revisado a fondo todos los archivos, pero estan usando sesiones para comprobar que solo los admin puedan entrar a ciertos archivos (tales como editar comentarios, borrarlos, publicar, etc...) ??