Refrescar un php desde otro php

Iniciado por schumacher, 2 Octubre 2008, 07:28 AM

0 Miembros y 1 Visitante están viendo este tema.

schumacher

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!

Red Mx

es ajax pero veo que seria complicado lo mejor es que refresques la web completa y asi su capcha tendra unaimagen diferente.
Desarrollar Malware Es Causa De Cancer...

schumacher

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

WHK

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.

schumacher

...oh talvez solo hay un codigo como en visual basic
...algo asi "pagina1.refresh" jejejeje

WHK

Algo así está bién?
Demo:
http://lab.jccharry.com/seguridad_web_doc/captcha1.php

Código (php) [Seleccionar]
<?php
error_reporting
(0);
set_magic_quotes_runtime(0);
session_start();
if(
$_GET['accion'] == 'captcha'){
 
header("Content-type: image/png");
 if(!
$imagen imagecreate(10050)){
  echo 
"No se puede inicializar el m&oacute;dulo GD";
  exit(
1);
 }
 
$_SESSION['clave'] = md5(rand(1,100));
 
$_SESSION['clave'] = substr($_SESSION['clave'], 06);
 
imagecolorallocate($imagen255255255);
 
$color_texto imagecolorallocate($imagen000);
 
imagestring($imagen1255,  $_SESSION['clave'], $color_texto);
 
imagepng($imagen);
 
imagedestroy($imagen);
 exit(
0);
}else{
 if(
$_POST['clave']){
  if(
strtolower($_SESSION['clave']) == strtolower($_POST['clave'])){
   
$estado "La clave es v&aacute;lida";
  }else{
   
$estado "La clave es inv&aacute;lida";
  }
 }else{
  
$estado "Sin acciones";
 }
}
?>

<html>
<head>
</head>
<body>
<b>Ingresa el siguiente c&oacute;digo:<br>
<img  src="<?php echo $_SERVER[PHP_SELF]; ?>?accion=captcha" 
onclick="this.src='<?php echo $_SERVER[PHP_SELF]; ?>?accion=captcha';" /><br>
<form method="post">
<input type="text" name="clave"> <input type="submit" value="Enviar">
</form>
<br><br>
Estado: <b><?php echo $estado?></b>
</body>
</html>


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

Red Mx

Cita de: WHK en  2 Octubre 2008, 16:39 PM
No es ajax

No pienso discutir el termino.

CitarAJAX, 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.


Desarrollar Malware Es Causa De Cancer...

WHK

CitarPara 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?