Foros del Web » Programando para Internet » PHP »

Haber si alguien puede ayudarme

Estas en el tema de Haber si alguien puede ayudarme en el foro de PHP en Foros del Web. estoy creando un sistema de comentarios en php y necesito ayuda con una función. primero quiero saludar al foro ya que soy un usuario nuevo... ...
  #1 (permalink)  
Antiguo 26/01/2012, 11:54
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 1
Sonrisa Haber si alguien puede ayudarme

estoy creando un sistema de comentarios en php y necesito ayuda con una función.


primero quiero saludar al foro ya que soy un usuario nuevo...

el sistema de comentarios es para un blog. bueno paso a explicar

el sistema depende de 3 usuarios

A B C

A comenta en el blog de B entonces A y B pueden borrar ese comentario

entonces C solo puede ver pero no puede borrar

el problema que yo tengo es que si alguien copia el enlace del "botón borrar" y cambia

el id del comentario por cualquier otro comentario y lo copia en la barra de

direcciones entonces los comentarios se borran


así es mi botón borrar

echo "<a id='del_comment_id_"$comment_id."' href='".$url."elementos/del_comments.php?id=".$comment_id."&token=".$token ."'>Eliminar</a>";

bien si el usuario averigua el id de cualquier otro comentario y remplaza el id actual del enlace por el que averiguo entonces el comentario se borra.

la función que tengo es la siguiente

function php_blog_delete_comments($comment_id,$session_name ){

$blogs_comments_delete_data = mysql_query("SELECT id,comentario,nombre,para,correo,id_blog,approve FROM comentarios WHERE id='$comment_id'");
while($row = mysql_fetch_array($blogs_comments_delete_data)) {

$comment_nombre = $row["nombre"];

}

$blogs = mysql_query("SELECT id,titulo,descripcion,cuerpo,fecha,username,catego ria FROM blogs WHERE username='$session_name' ");
while($row = mysql_fetch_array($blogs)) {

$blog_username = $row["username"];

}


if($session_name == $comment_nombre && $session_name == $blog_username ) {
$comments = mysql_query("DELETE FROM comentarios WHERE id='$comment_id' ");
} else { echo "No se puede eliminar, puede ser que el comentario no te pertenesca."; }
}

pero funciona de ves en cuando

agradezco alguna ayuda
  #2 (permalink)  
Antiguo 26/01/2012, 12:54
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Haber si alguien puede ayudarme

1 - obviamente el autor del articulo sebe ser registrado

2 - debe de almacenar en la tabla comentario el id del usuario que lo creo

con lo anterior Valide al borrar si es el usuario autor, o el autor del artículo

3 - para operaciones de edición / eliminación, debe usar peticiones POST, no GET
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 26/01/2012, 13:04
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Haber si alguien puede ayudarme

Cita:
Iniciado por maycolalvarez Ver Mensaje
1 - obviamente el autor del articulo sebe ser registrado

2 - debe de almacenar en la tabla comentario el id del usuario que lo creo

con lo anterior Valide al borrar si es el usuario autor, o el autor del artículo

3 - para operaciones de edición / eliminación, debe usar peticiones POST, no GET

hola maycolalvarez gracias por responder tan rapido

si no es de mucha molestia puedes mostrarme una función o orientarme como lograrlo, desde ya muchas gracias

como es eso de VALIDATE todo lo que dices de la tabla la tengo correctamente como tu dices
  #4 (permalink)  
Antiguo 26/01/2012, 13:16
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Haber si alguien puede ayudarme

a ver, analiza esta validación:

$session_name == $comment_nombre && $session_name == $blog_username

¿te parece lógico un and allí?

hasta donde sé, el autor del artículo será el mismo autor del comentario si el mismo publica un comentario a su propio artículo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 27/01/2012, 17:45
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Haber si alguien puede ayudarme

Gracias por responder

mira e probado así

$session_name == $comment_nombre || $session_name == $blog_username pero no hay resultado

e probado de muchas maneras pero nada


tambien pruebo asii


if($comment_nombre == $user && $comment_nombre == $session_name ) {
$comments = mysql_query("DELETE FROM comentarios WHERE MD5(id)='$comment_id' ");
} else {
if($session_name == $blog_username ) {
$comments = mysql_query("DELETE FROM comentarios WHERE MD5(id)='$comment_id' ");
}
else { echo "comentario no borrado"; }
}


pero aun nada
  #6 (permalink)  
Antiguo 27/01/2012, 17:51
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Haber si alguien puede ayudarme

la función completa es así



function php_blog_delete_comments($comment_id,$session_name ,$user){

$blogs_comments_delete_data = mysql_query("SELECT id,comentario,nombre,para,correo,id_blog,approve FROM comentarios WHERE MD5(id)='$comment_id'");

while($row = mysql_fetch_array($blogs_comments_delete_data)) {

$comment_nombre = $row["nombre"];

}

$blogs = mysql_query("SELECT id,titulo,descripcion,cuerpo,fecha,username,catego ria FROM blogs WHERE username='$session_name' ");
while($row = mysql_fetch_array($blogs)) {

$blog_username = $row["username"];

}


if($comment_nombre == $user && $comment_nombre == $session_name ) {
$comments = mysql_query("DELETE FROM comentarios WHERE MD5(id)='$comment_id' ");
} else {
if($session_name == $blog_username ) {
$comments = mysql_query("DELETE FROM comentarios WHERE MD5(id)='$comment_id' ");
}
else { echo "comentario no borrado"; }
}



}


puedes ver en mi pagina lo que quiero decirte

http://www.floops.com.ar/phpblog/
  #7 (permalink)  
Antiguo 27/01/2012, 19:33
Avatar de ecarlevaro  
Fecha de Ingreso: octubre-2010
Ubicación: Paraná, Argentina
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: Haber si alguien puede ayudarme

PRIMERO. Cuando pegues código de cualquier lenguaje selecciona el texto y destácalo seleccionando el lenguaje (PHP) en este caso del select que dice "Highlight".

SEGUNDO. Tal cual te dice @maycolalvarez, la función debe borrar el comentario si a) el usuario es el autor del artículo ($_session_name == $blog_username) O (no "y") b) si el usuario es el autor del comentario ($session_name == $comment_nombre). Por lo tanto tu condicional es con OR, o || (http://www.php.net/manual/es/languag...rs.logical.php)

TERCERO. Verifica los valores de $blog_username y $comment_nombre antes de entrar al if, simplemente pone un echo que imprima esas variables en pantalla a ver que sale.

CUARTO. ¿Por qué las consultas SQL consultan mas datos de los que necesitas? Si sólo necesitas el nombre del autor del comentario, ésta consulta:
Código MySQL:
Ver original
  1. SELECT id,comentario,nombre,para,correo,id_blog,approve FROM comentarios WHERE MD5(id)='$comment_id'

Es enormemente ineficiente, sólo escribe:
Código SQL:
Ver original
  1. SELECT nombre FROM comentarios WHERE MD5(id)='$comment_id'
  #8 (permalink)  
Antiguo 27/01/2012, 21:06
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Haber si alguien puede ayudarme

e echo así pero tampoco





function php_blog_delete_comments($comment_id,$session_name ,$blog_name){
$blogs_comments_delete_data = mysql_query("SELECT id,nombre FROM comentarios WHERE MD5(id)='$comment_id'");
while($row = mysql_fetch_array($blogs_comments_delete_data)) {
$comment_nombre = $row["nombre"];
}
$blogs = mysql_query("SELECT username FROM blogs WHERE MD5(username)='$blog_name' ");
while($row = mysql_fetch_array($blogs)) {
$blog_username = $row["username"];
}

if( $comment_nombre == $session_name ) {
$comments = mysql_query("DELETE FROM comentarios WHERE MD5(id)='$comment_id' ");
}
else {
if( $comment_nombre == $blog_username ) {
$comments = mysql_query("DELETE FROM comentarios WHERE MD5(id)='$comment_id' ");
}
else {
if( $blog_username == $session_name ) {
$comments = mysql_query("DELETE FROM comentarios WHERE MD5(id)='$comment_id' ");
}
else {
echo "no se puede borrar, puede ser que el comentario no te pertenesca o se alla borrado anteriormente.";
}
}
}
}

que me recomiendan usar ?? un simple formulario o un simple href

Última edición por clipan; 27/01/2012 a las 22:54

Etiquetas: ajax, ajax-php-mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:04.