Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: schumacher en 2 Octubre 2008, 07:28 am



Título: Refrescar un php desde otro php
Publicado por: schumacher en 2 Octubre 2008, 07:28 am
buenas
...estoy armando un login, con un captcha
...cada uno en un php distinto (digamos login.php, captcha.php)
...y lo que intento es que cada vez que le doy click encima de la imagen que me genera, esta se refresque y me aparezca un codigo nuevo...
...espiando por ahi me di con esto
<img src="captcha.php" onclick="this.src='captcha.php?newtime=' + (new Date()).getTime();"/>
...pero la verdad recien empiezo con todo esto del php, es el primer dia ^^
...eso quiere decir que dentro de captcha tengo que generar algo mas? y no se como resolverlo aun...

si alguien me puede guiar se lo agradeceria^^

saludos!


Título: Re: Refrescar un php desde otro php
Publicado por: Red Mx en 2 Octubre 2008, 08:02 am
es ajax pero veo que seria complicado lo mejor es que refresques la web completa y asi su capcha tendra unaimagen diferente.


Título: Re: Refrescar un php desde otro php
Publicado por: schumacher en 2 Octubre 2008, 15:37 pm
mmm.. ya veo
...entonces como podria refrescar la pagina desde el php?, es decir cual es el code >.<
...estuve buscando pero no encontre algo que se acomode o que pueda entender

...osea un boton, le doy click y se refresca la pagina ^^

saludos


Título: Re: Refrescar un php desde otro php
Publicado por: WHK en 2 Octubre 2008, 16:39 pm
No es ajax, simplemente esa función que pusiste dice que al hacer click sobre la imagen esta se reemplazará por la imagen que aparezca en esta url:

captcha.php?newtime= + (new Date()).getTime()

Donde newtime es un identificador de la captcha pero eso sería muy manipulable por un atacante asi que te recomiendo que uses sesiones con session start y cookies.

cuando haces una petición a captcha.php dejas en una base de datos el hash que debes responder y si respondes a loguin.php con ese mismo hash que estaba en la base de datyos entonces puedes ingresar, cuando refrescas la imagen el hash se modifica con UPDATE dentro de la MySQL ovbiamente ese hash sería el resultado de la imagen, o también puedes alojar la respuesta dentro de la cookie pero con $_SESSION[] para que el visitante no pueda modificarlo.

Cuando buelva del trabajo haré algunos ejemplos.


Título: Re: Refrescar un php desde otro php
Publicado por: schumacher en 3 Octubre 2008, 03:20 am
...oh talvez solo hay un codigo como en visual basic
...algo asi "pagina1.refresh" jejejeje


Título: Re: Refrescar un php desde otro php
Publicado por: WHK en 3 Octubre 2008, 05:15 am
Algo así está bién?
Demo:
http://lab.jccharry.com/seguridad_web_doc/captcha1.php

Código
  1. <?php
  2. if($_GET['accion'] == 'captcha'){
  3. header("Content-type: image/png");
  4. if(!$imagen = imagecreate(100, 50)){
  5.  echo "No se puede inicializar el m&oacute;dulo GD";
  6.  exit(1);
  7. }
  8. $_SESSION['clave'] = md5(rand(1,100));
  9. $_SESSION['clave'] = substr($_SESSION['clave'], 0, 6);
  10. imagecolorallocate($imagen, 255, 255, 255);
  11. $color_texto = imagecolorallocate($imagen, 0, 0, 0);
  12. imagestring($imagen, 12, 5, 5,  $_SESSION['clave'], $color_texto);
  13. imagepng($imagen);
  14. imagedestroy($imagen);
  15. exit(0);
  16. }else{
  17. if($_POST['clave']){
  18.  if(strtolower($_SESSION['clave']) == strtolower($_POST['clave'])){
  19.   $estado = "La clave es v&aacute;lida";
  20.  }else{
  21.   $estado = "La clave es inv&aacute;lida";
  22.  }
  23. }else{
  24.  $estado = "Sin acciones";
  25. }
  26. }
  27. ?>
  28. <html>
  29. <head>
  30. </head>
  31. <body>
  32. <b>Ingresa el siguiente c&oacute;digo:<br>
  33. <img  src="<?php echo $_SERVER[PHP_SELF]; ?>?accion=captcha"
  34. onclick="this.src='<?php echo $_SERVER[PHP_SELF]; ?>?accion=captcha';" /><br>
  35. <form method="post">
  36. <input type="text" name="clave"> <input type="submit" value="Enviar">
  37. </form>
  38. <br><br>
  39. Estado: <b><?php echo $estado; ?></b>
  40. </body>
  41. </html>

El único detalle es que la función ... onclick="this.src ... solo funciona en Internet Explorer.


Título: Re: Refrescar un php desde otro php
Publicado por: Red Mx en 3 Octubre 2008, 05:24 am
No es ajax

No pienso discutir el termino.

Citar
AJAX, acrónimo de Asynchronous javascript And XML (javascript asíncrono y XML), es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones.


Para mi gusto no puedes poner funciones que funcionen en un explorador y en otro no, debes de llebar la compatibilidad basada en estandares.




Título: Re: Refrescar un php desde otro php
Publicado por: WHK en 3 Octubre 2008, 05:28 am
Citar
Para mi gusto no puedes poner funciones que funcionen en un explorador y en otro no, debes de llebar la compatibilidad basada en estandares.

Claro, me podrías decir como hacerlo en ambos exploradores?