Observe el error cuando los usuarios no registrados ver puestos

  • iWiGG_2010
  • Newbie
  • Newbie
  • Avatar de Usuario
  • Registrado: Nov 22, 2011
  • Mensajes: 10
  • Loc: Australia
  • Status: Offline

Nota Noviembre 22nd, 2011, 6:51 pm

Hola a todos

Pregunto si alguno de ustedes me puede ayudar. Soy nuevo en php.

Sigo recibiendo este aviso:
Notice: Undefined index: user_id en C:\wamp\www\website\view_topic.php on line 16

Su una página básica fourm. Quiero que los usuarios no registrados para poder ver los puestos pero no publicar una respuesta.

¿Alguien sabe lo que está ocurriendo y cómo pude solucionarlo gracias.

PHP Código: [ Select ]
<?php include 'init.php'; ?>
 
<?php include 'template/header.php'; ?>
 
<br /><h3><p>View Topic</p></h3>
<p><br />
 
 
<?php
$cid = $_GET['cid'];
$tid = $_GET['tid'];
$sql = "SELECT * FROM `topics` WHERE `album_id`='".$cid."' AND id='".$tid."' LIMIT 1";
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($res) == 1) {
   echo "<table width='100%'>";
      if ($_SESSION['user_id']) {
         echo "<tr><td colspan='2'><center><input type='submit' value='Add Reply' onClick=\"window.location = 'post_reply.php?cid=".$cid."&tid=".$tid."'\" /></center><hr /><br />";
            } else {
             
               echo "<br /><tr><td colspan='2'><p>Please Log in to add a comment</p></td></tr>"; }
      while ($row = mysql_fetch_assoc($res)) {
         $sql2 = "SELECT * FROM `posts` WHERE `album_id`='".$cid."' AND `topic_id`='".$tid."' ORDER BY `post_date` DESC";  
         $res2 = mysql_query($sql2) or die(mysql_error());
         while ($row2 = mysql_fetch_assoc($res2)) {
            echo "<tr><td valign='top' style='border: 1px sold #FFF;'><div style='min-height: 125px;'><br /><p>".$row['topic_title']."<br /><br />by ".$row2['post_creator']." - ".$row2['post_date']."<br />".$row2['post_content']."</p></div></td>
           
            <tr><td colspan='2'><hr /></td></tr>";
         }
         $old_views = $row['topic_views'];
         $new_views = $old_views + 1;
         $sql3 = "UPDATE `topics` SET `topic_views`='".$new_views."' WHERE `album_id`='".$cid."' AND id='".$tid."' LIMIT 1";
         $res3 = mysql_query($sql3) or die(mysql_error());
      }
         echo "</table>";
} else {
   echo "<p>This topic does not exist</p>";  
}
?>
</p>
<p>&nbsp; </p>
<?php include 'template/footer.php'; ?>  
 
  1. <?php include 'init.php'; ?>
  2.  
  3. <?php include 'template/header.php'; ?>
  4.  
  5. <br /><h3><p>View Topic</p></h3>
  6. <p><br />
  7.  
  8.  
  9. <?php
  10. $cid = $_GET['cid'];
  11. $tid = $_GET['tid'];
  12. $sql = "SELECT * FROM `topics` WHERE `album_id`='".$cid."' AND id='".$tid."' LIMIT 1";
  13. $res = mysql_query($sql) or die(mysql_error());
  14. if (mysql_num_rows($res) == 1) {
  15.    echo "<table width='100%'>";
  16.       if ($_SESSION['user_id']) {
  17.          echo "<tr><td colspan='2'><center><input type='submit' value='Add Reply' onClick=\"window.location = 'post_reply.php?cid=".$cid."&tid=".$tid."'\" /></center><hr /><br />";
  18.             } else {
  19.              
  20.                echo "<br /><tr><td colspan='2'><p>Please Log in to add a comment</p></td></tr>"; }
  21.       while ($row = mysql_fetch_assoc($res)) {
  22.          $sql2 = "SELECT * FROM `posts` WHERE `album_id`='".$cid."' AND `topic_id`='".$tid."' ORDER BY `post_date` DESC";  
  23.          $res2 = mysql_query($sql2) or die(mysql_error());
  24.          while ($row2 = mysql_fetch_assoc($res2)) {
  25.             echo "<tr><td valign='top' style='border: 1px sold #FFF;'><div style='min-height: 125px;'><br /><p>".$row['topic_title']."<br /><br />by ".$row2['post_creator']." - ".$row2['post_date']."<br />".$row2['post_content']."</p></div></td>
  26.            
  27.             <tr><td colspan='2'><hr /></td></tr>";
  28.          }
  29.          $old_views = $row['topic_views'];
  30.          $new_views = $old_views + 1;
  31.          $sql3 = "UPDATE `topics` SET `topic_views`='".$new_views."' WHERE `album_id`='".$cid."' AND id='".$tid."' LIMIT 1";
  32.          $res3 = mysql_query($sql3) or die(mysql_error());
  33.       }
  34.          echo "</table>";
  35. } else {
  36.    echo "<p>This topic does not exist</p>";  
  37. }
  38. ?>
  39. </p>
  40. <p>&nbsp; </p>
  41. <?php include 'template/footer.php'; ?>  
  42.  
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Noviembre 22nd, 2011, 6:51 pm

  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Noviembre 26th, 2011, 11:04 pm

Significa $ _SESSION [ user_id ] no se ha establecido.
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8925
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Noviembre 27th, 2011, 12:10 am

Puede arreglarlo cambiando la línea 16 a esto:

PHP Código: [ Select ]
      if (isset($_SESSION['user_id'])) {
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • iWiGG_2010
  • Newbie
  • Newbie
  • Avatar de Usuario
  • Registrado: Nov 22, 2011
  • Mensajes: 10
  • Loc: Australia
  • Status: Offline

Nota Noviembre 27th, 2011, 12:15 am

gran gracias funciona:)
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Abr 28, 2011
  • Mensajes: 214
  • Loc: Sweden
  • Status: Offline

Nota Noviembre 27th, 2011, 5:23 pm

No es que estaba pidiendo, pero creo que debería reconsiderar su código que dice:

Código: [ Select ]
$cid = $_GET['cid'];
$tid = $_GET['tid'];
$sql = "SELECT * FROM `topics` WHERE `album_id`='".$cid."' AND id='".$tid."' LIMIT 1";
$res = mysql_query($sql)
  1. $cid = $_GET['cid'];
  2. $tid = $_GET['tid'];
  3. $sql = "SELECT * FROM `topics` WHERE `album_id`='".$cid."' AND id='".$tid."' LIMIT 1";
  4. $res = mysql_query($sql)


No es un experto en MySQL inyecciones IM, pero he visto muchos ejemplos de por qué confiar en entrada de usuario es la mayor parte del tiempo una mala idea.:)

Están recogiendo y cargar cualquier valor aquí sin control alguno y, a continuación, ejecuta como una consulta de MySQL.

Convertirlo en un hábito para siempre comprobar cualquier posible entrada para limitar las posibilidades de uso indebido de las consultas del usuario.
  • iWiGG_2010
  • Newbie
  • Newbie
  • Avatar de Usuario
  • Registrado: Nov 22, 2011
  • Mensajes: 10
  • Loc: Australia
  • Status: Offline

Nota Noviembre 27th, 2011, 5:28 pm

Gracias, por tus consejos. Espero en él.

Publicar Información

  • Total de mensajes en este tema: 6 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 189 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC