Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] ¿Como ejecutar una función básica de PHP mediante AJAX?

Estas en el tema de ¿Como ejecutar una función básica de PHP mediante AJAX? en el foro de Javascript en Foros del Web. Hola a todos, llevo tiempo trabajando en un proyecto y necesito ayuda con una cosa. Estoy creando un sistema de puntuaciones, algo al estilo "Me ...
  #1 (permalink)  
Antiguo 25/02/2013, 12:49
Avatar de Adbane  
Fecha de Ingreso: junio-2011
Mensajes: 86
Antigüedad: 13 años, 5 meses
Puntos: 6
Pregunta ¿Como ejecutar una función básica de PHP mediante AJAX?

Hola a todos, llevo tiempo trabajando en un proyecto y necesito ayuda con una cosa.

Estoy creando un sistema de puntuaciones, algo al estilo "Me gusta" de Facebook. La idea es que tras pulsar un botón, con la sentencia SQL "UPDATE" y "SET" sumo 1 al total de puntos que tiene la publicación. Normalmente esto es posible con un <a href> con la url "likes.php?id=$id". En el archivo "likes.php" cojo el id de la publicación para añadirle un punto más a esta.

Pero claro, hay un problema, que si se accede mediante url a "www.misitio.com/likes.php?id=2" por poner un ejemplo, se ejecutará el script en PHP y le sumará puntos a la publicación del id especificado en el enlace. Incluso si se hace F5 repetidas veces, irá sumando más puntos... Y no puedo permitir esto xD

Lo que me gustaría hacer es sencillo, que tras pulsar el botón se ejecute la sentencia SQL sin redireccionar página. No hay necesidad de recoger los valores e imprimirlos en la página, solo ejecutar la sentencia. Exactamente este código:

Código PHP:
Ver original
  1. $cn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_DB);
  2. mysqli_set_charset($cn,"utf8");
  3.    
  4. $id2 = $_GET['id'];
  5. $sql= "UPDATE publicaciones SET likes=likes+1 WHERE id='{$id2}'";
  6.  
  7. $rs=mysqli_query($cn,$sql);
  8. if(!$rs){exit("Error de conexión ".mysqli_error($cn));}
  9. //cerrar conexion

¿Algún alma caricativa que pudiera ayudarme?
__________________
Diseñador web por amor al arte, o al HTML mejor dicho
  #2 (permalink)  
Antiguo 25/02/2013, 13:12
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

yo no veo que implementes AJAX en ninguna parte, ¿entonces cual es tu problema en realidad: no sabes usar ajax?: consulte un manual http://librosweb.es/ajax/

además usar ajax no garantiza que clickee repetidas veces y se envíen N peticiones ajax, la idea es generar un token único para cada elemento susceptible a like, por ejemplo como lo hace FB con la url en particular, registrando el like sobre el token especifico, no incrementando un contador completamente vulnerable, claro, también ha de existir el contador para optimizar el proceso de lectura, pero no se acumula hasta no verificar si el like sobre el token ha sido verificado.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 25/02/2013, 13:13
Avatar de Adbane  
Fecha de Ingreso: junio-2011
Mensajes: 86
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

Cita:
Iniciado por maycolalvarez Ver Mensaje
yo no veo que implementes AJAX en ninguna parte, ¿entonces cual es tu problema en realidad: no sabes usar ajax?: consulte un manual http://librosweb.es/ajax/
Precisamente estoy preguntando como ejecutar el código que he mostrado mediante AJAX, por eso no lo tengo implementado.
__________________
Diseñador web por amor al arte, o al HTML mejor dicho
  #4 (permalink)  
Antiguo 25/02/2013, 13:36
Avatar de Adbane  
Fecha de Ingreso: junio-2011
Mensajes: 86
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

Solucionado! Para el que le interese, dejo aquí un enlace sobre el tema:
http://gustaira.wordpress.com/2011/0...x-php-y-mysql/
__________________
Diseñador web por amor al arte, o al HTML mejor dicho
  #5 (permalink)  
Antiguo 25/02/2013, 13:40
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

Cita:
Iniciado por Adbane Ver Mensaje
Precisamente estoy preguntando como ejecutar el código que he mostrado mediante AJAX, por eso no lo tengo implementado.
@Adbane, no importa si usas Ajax o no. Lo que @maylcolAlvarez te resume es que
Si a mi me interesase aumentar la puntuación, simplemente iria al navegador e ingresaría
www.misitio.com/likes.php?id=2
tantas veces como quisiera
Va a tener que implementar medidas de seguridad adicionales si querés evitar ese problema. sesiones de php, un captcha, etc

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 25/02/2013, 15:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

emprear también puede ser que el usuario no leyera completo mi mensaje, le di a enviar respuesta sin copiar lo referente al token y luego lo edité, y en efecto es muy vulnerable de esa forma
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 25/02/2013, 15:59
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

Cita:
Iniciado por maycolalvarez Ver Mensaje
emprear también puede ser que el usuario no leyera completo mi mensaje, le di a enviar respuesta sin copiar lo referente al token y luego lo edité, y en efecto es muy vulnerable de esa forma
Bueno, es probable, lo que creo que valdría la pena dejar en claro es que al contestar yo, no había leído aún ese link que dejo dando por solucionado el tema, que, por lo ya expuesto, NO le soluciona nada

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 26/02/2013, 07:16
Avatar de Adbane  
Fecha de Ingreso: junio-2011
Mensajes: 86
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

Cita:
Iniciado por emprear Ver Mensaje
Bueno, es probable, lo que creo que valdría la pena dejar en claro es que al contestar yo, no había leído aún ese link que dejo dando por solucionado el tema, que, por lo ya expuesto, NO le soluciona nada

SAludos
A ver, por un lado con el contenido del link que he dejado si que me soluciona el problema. Respecto al acceso mediante url, es algo de lo que tenía pendiente encargarme mediante htaccess y htpasswd. No se podrá votar accediendo por url (en caso de que algún listillo "descubra" el sistema), ni se podrán hacer trampas, ni nada.
__________________
Diseñador web por amor al arte, o al HTML mejor dicho
  #9 (permalink)  
Antiguo 26/02/2013, 07:49
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

@Adbane, no me canso de repetirlo, este es un foro escrito, y debemos guiarnos por lo que efectivamente se escribe, no por cualquier otra intecionalidad.

Si nos atenemos a:

Cita:
Iniciado por Adbane Ver Mensaje
Pero claro, hay un problema, que si se accede mediante url a "www.misitio.com/likes.php?id=2" por poner un ejemplo, se ejecutará el script en PHP y le sumará puntos a la publicación del id especificado en el enlace.
Tu posterior aclaración:

Cita:
Iniciado por Adbane Ver Mensaje
A ver, por un lado con el contenido del link que he dejado si que me soluciona el problema.
es incorrecta, ese link que dejaste, NO soluciona el problema

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 26/02/2013, 08:15
Avatar de Adbane  
Fecha de Ingreso: junio-2011
Mensajes: 86
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: ¿Como ejecutar una función básica de PHP mediante AJAX?

Cita:
Iniciado por emprear Ver Mensaje
@Adbane, no me canso de repetirlo, este es un foro escrito, y debemos guiarnos por lo que efectivamente se escribe, no por cualquier otra intecionalidad.

Si nos atenemos a:



Tu posterior aclaración:



es incorrecta, ese link que dejaste, NO soluciona el problema

SAludos
Me soluciona el problema refiriendome a que ya puedo ejecutar la función mediante AJAX. Si te atiendes a la pregunta del hilo, y el último párrafo, verás que eso era lo único que pedía. La otra parte solo la comentaba, porque con el código de antes me redireccionaba al link dónde se ejecuta el código. Ahora eso ya no pasa, el link no se ve ni al clickar, y ahora es cuando yo me pondré en ello por mi cuenta para corregir este "fallo", por si a algun curioso le da por acceder mediante url.

Sinceramente, no entiendo tanta necesidad de poner los puntos sobre las íes y tu empeño en aclarar algo que en verdad tiene doble sentido.
__________________
Diseñador web por amor al arte, o al HTML mejor dicho

Etiquetas: mediante, php
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 02:47.