Simple Machines Community Forum

SMF Support => Language Specific Support => Español (Spanish) => Aiheen aloitti: NIMETOQUES - maaliskuu 15, 2013, 02:06:41 IP

Otsikko: Seguridad en function
Kirjoitti: NIMETOQUES - maaliskuu 15, 2013, 02:06:41 IP
Hola ,
Tengo un foro SMF 2.0 , he desarrollado un formulario que cuando haces click en un submit suma +1 a un campo de una tabla msql que suma según el id de usuario , cuando hace click va a un archivo y lee el id del usuario según con el que esté conectado y ejecuta la suma , el problema es que es un concurso , es decir.. el boton es una imagen que aparece de vez en cuando en cualquier lugar del foro , y cuando haces click suma +1 , y hay usuarios que se las ingenian copiando el formulario y enviando los datos ellos mismos a el archivo , ¿Hay alguna forma de protegerlo? , Lo tengo dentro de un function en el SSI.php y ejecuto el function en un archivo que ejecuto cuando envío el form.
Quisiera protegerlo ..
Mil gracias de antemano!
Otsikko: Re: Seguridad en function
Kirjoitti: DoctorMalboro - maaliskuu 15, 2013, 11:42:16 IP
Por lo que entiendo, tenés un botón que a través de un código propio envía una consulta MySQL y suma puntos, y este susodicho botón aparece de manera espontánea por el foro. Si el problema es que uno puede entrar al formulario a través de una URL, podrías hacer un popup con Javascript y que el formulario con AJAX ejecute todo sin refrescar la página.

Sino, voy a necesitar un ejemplo.
Otsikko: Re: Seguridad en function
Kirjoitti: MorderBR - maaliskuu 16, 2013, 02:05:24 AP
+1 a la opción de DoctorMalboro, y creo que a parte, podrías poner una condición a la función que re-direccione(o algo por el estilo) si cierta variable está vacía, o si te refieres a esconder la acción del formulario, trata escondiendo la url con apache
Otsikko: Re: Seguridad en function
Kirjoitti: NIMETOQUES - maaliskuu 16, 2013, 05:22:01 AP
Sí , es así , pero solo se PHP , y ajax he vsto un poco , aunque creo que es jquery , he escrito..

echo '$("#objeto").click(function () {';
echo '$("#objeto").fadeOut(1500);';
echo '$.post('http://www.metokes.com/foro/post.php');';
echo '});';

Y lo que hace es que va desapareciendo el submit cuando haces click y envía el formulario..
¿Es correcto?
¿Qué tendría que hacer en php para que ejecute mi código o se ejecuta todo el archivo?
Lo que quiero es que lo ejecute sin abrir ventana o sin cambiar la url , a "escondidas".
Otsikko: Re: Seguridad en function
Kirjoitti: MorderBR - maaliskuu 16, 2013, 01:47:54 IP
Lainaus käyttäjältä: NIMETOQUES - maaliskuu 16, 2013, 05:22:01 AP
Sí , es así , pero solo se PHP , y ajax he vsto un poco , aunque creo que es jquery , he escrito..

echo '$("#objeto").click(function () {';
echo '$("#objeto").fadeOut(1500);';
echo '$.post('http://www.metokes.com/foro/post.php');';
echo '});';

Y lo que hace es que va desapareciendo el submit cuando haces click y envía el formulario..
¿Es correcto?
¿Qué tendría que hacer en php para que ejecute mi código o se ejecuta todo el archivo?
Lo que quiero es que lo ejecute sin abrir ventana o sin cambiar la url , a "escondidas".

Por suerte creo que haces algo parecido a lo que yo hago, aquí te dejo mi código
Primero en php con get y switch hice varios casos, estos los estoy llamando con jquery así:

JS

$(document).ready(function() {
$("#div_o_boton_a_hacer_click").click(function(event) {
$("#div_donde_se_cargara_el_archivo").load(\'archivo.php?get=caso\');
});
});


y el html


<div id="div_o_boton_a_hacer_clicki" onclick="$(\'#contenedor_principal\').fadeIn(\'fast\');"></div>

<div id="contenedor_principal" style="display:none">
<div id="div_donde_se_cargara_el_archivo">
Aquí puede ir contenido que será reemplazado una vez que el archivo php esté cargado
</div>
</div>


No sé si te sirva
Otsikko: Re: Seguridad en function
Kirjoitti: NIMETOQUES - maaliskuu 16, 2013, 04:39:49 IP
Hola moder ,
¿Me lo podrías explicar un poco?
Llevo un poco de lío , cuando hagas click , te carga el php y se ejecuta un div , ¿No hay alguna forma para que solo cargue el php?
Si fuese para un concurso , ¿Esto puede tener seguridad?
Muchas gracias!
Otsikko: Re: Seguridad en function
Kirjoitti: MorderBR - maaliskuu 16, 2013, 05:28:21 IP
Mira, yo hago esto:
Estoy creando un centro de información, un avatar general para la web(es una simple imagen), cuando dan click sobre éste, se carga el contenido del php ya que el contenido de este centro de información tiene bastante código y creí que sería mejor que cargara después, si lo pongo a cargar con el resto de la web le daría mucho peso a la pagina(más del que ya tiene)
Algo así es mi centro:

Imagen---click----carga demás contenido html dentro de un php(aquí tengo otras funciones que también cargan a parte cuando dan click)
en código:


JavaScript
<script type="text/javascript">
$(document).ready(function() {
   $("#imagen").click(function(event) {
      $("#div_donde_se_cargara_el_archivo").load(\'archivo.php?info=1\');
   });
});
</script>

html
<div id="imagen" onclick="$(\'#contenedor_principal\').fadeIn(\'fast\');"></div>

<div id="contenedor_principal" style="display:none">
<div id="div_donde_se_cargara_el_archivo">
<img src="ajax.gif"/>
</div>
</div>

y en el archivo php externo(archivo.php):
   if (isset($_GET['info'])) $linkchoice=$_GET['info'];
      else $linkchoice='';

      switch($linkchoice){
         case '1' :
            info_one();
            break;
         default :
             header('Location: ',$url_web,'');  //$url_web es una variable global para solo el dominio de mi pagina
      }

function info_one()
{
echo'<div>Aquí el demás contenido a cargar cuando se le solicite</div>';
}


en cuanto a seguridad, eso ya te tocaría seguir investigando, no sé como sea el sistema de tu concurso
Otsikko: Re: Seguridad en function
Kirjoitti: NIMETOQUES - maaliskuu 18, 2013, 06:44:29 AP
Hola morder ,
Lo he puesto yno me funciona , ¿Tienes algo mas sencillo?
Muchas gracias por la ayuda :)
Otsikko: Re: Seguridad en function
Kirjoitti: MorderBR - maaliskuu 18, 2013, 03:09:00 IP
Estás adjuntando la librería jquery en el indice?
Y esto es lo más sencillo que creo encontrarás, he estado buscando este tipo de cosas y todas las que encontré son más complicadas,