Foros del Web » Programando para Internet » PHP »

Como hacer un codigo visual de seguridad

Estas en el tema de Como hacer un codigo visual de seguridad en el foro de PHP en Foros del Web. Hola buenas una vez mas pido de vuestra ayuda para poder añadir una mejora a mi portal. Se trata de hacer que en el registro ...

  #1 (permalink)  
Antiguo 19/02/2004, 10:35
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 10 meses
Puntos: 1
Como hacer un codigo visual de seguridad

Hola buenas una vez mas pido de vuestra ayuda para poder añadir una mejora a mi portal. Se trata de hacer que en el registro de los usuarios, estos tengan que introducir un codigo que se muestre através de una imagen aleatoria. Gracias por todo y espero vuestra respuesta.
  #2 (permalink)  
Antiguo 19/02/2004, 10:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tienes un ejemplo en este mensaje:

http://www.forosdelweb.com/showthrea...hreadid=159645

Usa las librerias/extensiones GD para generar dinámicamente el gráfico de la contraseña generada.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 19/02/2004, 17:46
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 10 meses
Puntos: 1
Vale cluster pero me falta una cosa, como compara el codigo generado con el que ha introducido el usuario?¿
__________________
Deja el mundo mejor que como lo encontraste... By B.P.
  #4 (permalink)  
Antiguo 19/02/2004, 21:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
La rutina sólo genera el código y el ejemplo incluye la función que genera el código y la parte de la lógica que lo transforma en gráfico..

Tendrias que separarlo en dos archivos diferentes (sobre todo por la parte del que genera el gráfico) para generar ese texto aleatorio (contraseña?) y pasarselo como parámetro al script que tenga el código que genera el gráfico para que lo genere y lo muestre .. Ese dato generado (la contraseña desde la función que lo crea) es que debes comparar con el que tu usuario introduzca en tu formulario..

Para este "traspaso" de variables (esa generada) sería altamente recomendable (por seguridad) que la propagues en una variable de sesión .. si lo haces por el URL o campos hidden de tus formularios sería fácilmente alterable y usada por esos "robot's" que buscan ese dato en tu página para usarlo en tus scripts de proceso que crean esa cuenta o lo que haga tras validar eso datos ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 20/02/2004, 10:24
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 10 meses
Puntos: 1
He podido entender el funcionamiento, pero mis conocimientos no dan para llevarlo a la practica. Podrias darme un ejemplo, usando el codigo que tu ya mostraste en ese mensaje.

Codigo:

mm bueno .. no he visto tu problema concreto ahora mismo, pero .. jeje hice una funcioncita igual para el mismo cometído:

genera_password.php


PHP:--------------------------------------------------------------------------------
<?php
/*
Función: Genera passwords aleatorios (numéricos o alfanuméricos).
Entrada: Logintud: (digitos/caracteres a generar), tipo: [numerio|alfanumerico]
Salida: Devuelve string.
*/

function genera_password($longitud,$tipo="alfanumerico"){

if ($tipo=="alfanumerico"){
$exp_reg="[^A-Z0-9]";
} elseif ($tipo=="numerico"){
$exp_reg="[^0-9]";
}

return substr(eregi_replace($exp_reg, "", md5(time())) .
eregi_replace($exp_reg, "", md5(time())) .
eregi_replace($exp_reg, "", md5(time())),
0, $longitud);
}


// Configuración.

// Nombres tipografías a usar (sin extensión .ttf)
$tipografias = array("arial","comic","times");

// Directorio donde estén las fuentes .. (ruta absoluta)
// (importante el último /o según corresponda.
// (Las fuentes son True Type (.ttf)
$tipografias_ruta = "C:WINDOWSFONTS\"; // Windows.
// $tipografias_ruta="/home/sito/public_html/fonts/"; // Linux (*NIX)

// Inicializa eje X desde donde se empezará a
// "dibujar" el código. (referente al tamaño de la "caja")
$espacio = 0;

// Tamaño fuente.
$tamano_fuente = 15;

// Profundidad caracteres/digitos del código a generar (password).
$profundidad_codigo = 8; // (alfanuméricos)


// Rutina ...

// Generamos un código (password) aleatorio.
$codigo=genera_password($profundidad_codigo);

// Cálculo Ancho automático de la "caja"

$x=$profundidad_codigo*$tamano_fuente;
$y=$tamano_fuente;

// Iniciar la generación de la imagen. Se define una "caja" de $x por $y pixels.
$im = imagecreate ($x, $y);

// Definición Colores. Expresados en valores R G B (respectivamente).
$color_fondo = imagecolorallocate ($im, 255, 255, 255); // Blanco
$color_texto = imagecolorallocate ($im, 0, 0, 0); // Negro

for ($caracter=0; $caracter<=$profundidad_codigo; $caracter++){

// Seleccion de una tipografía aleatoria.
$indice_aleatorio=array_rand($tipografias);
$tipografia=$tipografias_ruta.$tipografias[$indice_aleatorio].".ttf";

// Generar el caracter gráfico.
ImageTTFText ($im, $tamano_fuente, 0, $espacio, $tamano_fuente, $color_texto, $tipografia , $codigo{$caracter});

// Separación entre caracteres
$espacio +=$tamano_fuente;
}

// Cabecera HTTP. Indica al navegador que la imagen que estamos generando es .PNG
header("Content-type: image/png");

// Generar Imagen (un .png Dinámico.)
imagepng ($im);
// Destruir imagen (de memoria .. va a ser enviada directamente al navegador).
imagedestroy ($im);
?>

--------------------------------------------------------------------------------


Y su forma de uso .. ejemplo:

demo.html

code:--------------------------------------------------------------------------------<!doctype html public "-//W3C//DTD HTML

4.0 //EN">
<html>
<head>
<title>Title here!</title>
</head>
<body>
El password:
<img src="genera_password.php">
</body>
</html>


Gracias por todo Cluster.
__________________
Deja el mundo mejor que como lo encontraste... By B.P.

Última edición por Section1; 20/02/2004 a las 10:25
  #6 (permalink)  
Antiguo 20/02/2004, 12:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
(usa el botón PHP para poner código saldrá coloreado .. de todas formas el link del mensaje original con el código ya estaba ..)

Básicamente .. como ya te dije . .debes en principio separar ambas funciones .. la que genera el código y la que hace la rutina para generar el grafico a partir de esa cadena ..

Sería algo tipo:
funciones.php
Código PHP:
<?
function genera_password($longitud,$tipo="alfanumerico"){

if (
$tipo=="alfanumerico"){
$exp_reg="[^A-Z0-9]";
} elseif (
$tipo=="numerico"){
$exp_reg="[^0-9]";
}

return 
substr(eregi_replace($exp_reg""md5(time())) .
eregi_replace($exp_reg""md5(time())) .
eregi_replace($exp_reg""md5(time())),
0$longitud);
}
?>
formulario.php
<?
// inicio uso sesiones.
session_start();
// aquí metes tu función genera_password
include ("funciones.php");
// llamas a la función para generar un password.
$pass=genera_password(10);
// lo dejamos en una variable de sesión para poderlo leer de forma segura en otro proceso.php ...
$_SESSION['mipass']=$pass;
?>
<html>
</head>
</head>
<body>
<!-- .. etc y tu formulario con -->
<form action="procesa.php" method="POST">

<!-- la imagen generada con nuestro password ... -->
<img src="genera_password.php?pass=<? echo $pass ?>">

<input type="text" name="pass">
etc... campos y botón enviar ...
</form>
</body>
</html>

genera_password.php
Código PHP:
<?
//recogemos el "texto" por el URL que enviamos a generar desde el link de imagen del HTML de nuestro formulario ...
$codigo=$_GET['pass'];

// Configuración.

// Nombres tipografías a usar (sin extensión .ttf)
$tipografias = array("arial","comic","times");

// Directorio donde estén las fuentes .. (ruta absoluta)
// (importante el último /o según corresponda.
// (Las fuentes son True Type (.ttf)
$tipografias_ruta "C:WINDOWSFONTS\"; // Windows.
// $tipografias_ruta="
/home/sito/public_html/fonts/"; // Linux (*NIX)

// Inicializa eje X desde donde se empezará a
// "
dibujar" el código. (referente al tamaño de la "caja")
$espacio = 0;

// Tamaño fuente.
$tamano_fuente = 15;

// Profundidad caracteres/digitos del código a generar (password).
$profundidad_codigo = 8; // (alfanuméricos)


// Rutina ...

// Cálculo Ancho automático de la "
caja"

$x=$profundidad_codigo*$tamano_fuente;
$y=$tamano_fuente;

// Iniciar la generación de la imagen. Se define una "
caja" de $x por $y pixels.
$im = imagecreate ($x, $y);

// Definición Colores. Expresados en valores R G B (respectivamente).
$color_fondo = imagecolorallocate ($im, 255, 255, 255); // Blanco
$color_texto = imagecolorallocate ($im, 0, 0, 0); // Negro

for ($caracter=0; $caracter<=$profundidad_codigo; $caracter++){

// Seleccion de una tipografía aleatoria.
$indice_aleatorio=array_rand($tipografias);
$tipografia=$tipografias_ruta.$tipografias[$indice_aleatorio]."
.ttf";

// Generar el caracter gráfico.
ImageTTFText ($im, $tamano_fuente, 0, $espacio, $tamano_fuente, $color_texto, $tipografia , $codigo{$caracter});

// Separación entre caracteres
$espacio +=$tamano_fuente;
}

// Cabecera HTTP. Indica al navegador que la imagen que estamos generando es .PNG
header("
Content-typeimage/png");

// Generar Imagen (un .png Dinámico.)
imagepng ($im);
// Destruir imagen (de memoria .. va a ser enviada directamente al navegador).
imagedestroy ($im);
?>
procesa.php
Código PHP:
<?
// inicio sesiones
session_start();
if (
$_SESSION['mipass'] == $_POST['pass']){
 echo 
"código/contraseña aceptado .. coincide ...";
} else {
 echo 
"Pues el código/contraseña NO coincide ...";
}

// Y nos deshacemos de la sesión ...
unset($_SESSION);
session_destroy();
?>

Un saludo,

PD: no lo he probado .. así que igual no funciona .. pero por ahí va la cosa.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 19/03/2004, 10:01
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 10 meses
Puntos: 1
Hay el problema de que no se visualiza la imagen i en su lugar aparece la tipica cruz o aspa roja.

Saludos, Section1
__________________
Deja el mundo mejor que como lo encontraste... By B.P.
  #8 (permalink)  
Antiguo 19/03/2004, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Y tienes soporte de las librerías GD en tu servidor? ...

(intenta ver el código que genera en tu navegador -> ver código fuente .. )

También prueba a llamar directamente al generador del gráfico (del código en forma de gráfico) y observa si eso funciona. (en tu navegador ..)

genera_password.php?pass=1234


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 19/03/2004, 11:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Por mensaje privado me has comentado que el código en cuestión lo estás probando el Lycos (servicio gratuito de hosting) .. verifica primero si Lycos te dá soporte de las librerías GD (creo que no lo dá) ..

Si puedes pasate un:

Código PHP:
<?
phpinfo
();
?>
También usa sesiones los ejemplos .. y por ahí también te puede dar problemas ... vamos que .. el servicio de hosting que has tomado para las pruebas no es de lo más idóneo para los ejemplos y como funciona el script en sí ...

-------------

Creo que ya ví el problema .. independiente de que tenga o no las librerías GD (extensiones) dicho servidor ... la publicidad que mete Lycos se hace -antes- de tus posibles envios de cabeceras HTTP como la que indica al navegador que el dato que se le va a enviar es un gráfico (en ese caso .PNG) .. así que por ahí también dará problemas ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 19/03/2004 a las 11:15
  #10 (permalink)  
Antiguo 21/03/2004, 19:31
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 10 meses
Puntos: 1
Hay akguna possibilidad de resolverlo porque hasta dentro de una temporada no voy ha adquirir un hosting de pago. Gracias Cluster.

Saludos!
__________________
Deja el mundo mejor que como lo encontraste... By B.P.
  #11 (permalink)  
Antiguo 21/03/2004, 21:25
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 21 años, 4 meses
Puntos: 2
oye que suerte la tuya cluster posteo codigo ;) voy a probarlo jejejje viniendo de cluster es magiaaaaa
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #12 (permalink)  
Antiguo 22/03/2004, 07:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Si, Secion1 .. en lugar de generar los caracteres del código de forma totalmente dinámica con las librerias GD y todo el tema de cabeceras HTTP que se requieren .. podrías generar tus gráficos de letras (A-Z) y números (0-9) como gráficos independintes y llamarlos con un bucle que recorra cada caracter/numero de esa cadena (string) que contiene el password generado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 22/03/2004, 07:39
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 meses
Puntos: 16
Hola,

Si haces lo que comenta cluster en el ultimo mensaje (graficos independientes para cada caracter) no llames a los ficheros con un nombre descriptivo de lo que es. Porque si al fichero que es un uno lo llamas 1.jpg, ya no es una forma valida de hacer que solo los que lo vean puedan escribirlo (el objetivo de estos codigos). Cualquier script que sepa como llamas a cada fichero podria "teclear" el codigo automagicamente.

Saludos.

PD: ¿En lycos funciona Nuke? Porque creo que el Nuke usa eso del codigo visual.

PD2: Podrias en lugar de generar la imagen con un PHP, generar el fichero PNG correspondiente y poner el src del img a ese PNG creado. En la sesion almacenarias el codigo.

PD3: Cluster, si metes en la sesion el $pass, no lo pases como parametro GET. Ademas, si pasas el codigo como parametro al script, cualquier script podria "teclear" el codigo.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #14 (permalink)  
Antiguo 22/03/2004, 07:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
PD3: Cluster, si metes en la sesion el $pass, no lo pases como parametro GET. Ademas, si pasas el codigo como parametro al script, cualquier script podria "teclear" el codigo.
Ok, .. tienes razón. Se me pasó el "detallazo".

Entonces sería:


genera_password.php

en lugar de:
$codigo=$_GET['pass'];

será:
Código PHP:
$codigo=$_SESSION['mipass']; 
Y en formulario.php

en lugar de:
<!-- la imagen generada con nuestro password ... -->
<img src="genera_password.php?pass=<? echo $pass ?>">

usar:
Código PHP:
<!-- la imagen generada con nuestro password ... -->
<
img src="genera_password.php"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 22/03/2004, 07:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ahora que lo pienso ..

El sistema de usar imagenes de forma independiente (como gráficos) .. no sería tampoco seguro .. aunque se pongan nombres de imagenes tipo 347923kjkas9.gif .. al final con un poco de paciencia obtendrían la secuencia. Para complicarlo "algo" más tendrías que usar vários archivos de imagen para cada caracter/numero y elegir aleatoriamente uno u otro .. Pero igualmente con algo de tiempo se obtendría las correspondencias "nombre archivo imagen" -> caracter/numero ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 23/03/2004, 10:14
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 10 meses
Puntos: 1
Muchas gracias lo provare ahora aver que tal. Creo ke si funciona este sera un buena aplicación.

Saludos
__________________
Deja el mundo mejor que como lo encontraste... By B.P.
  #17 (permalink)  
Antiguo 27/09/2004, 16:37
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 1 mes
Puntos: 5
Pues estuve probando el script, corregí algunos errores de sintaxis que tenía y quedó en resumen asi:

Código PHP:
<?php
//recogemos el texto por el URL que enviamos a generar desde el link de imagen del HTML de nuestro formulario
$codigo=$_GET['visual'];

//nombres tipografías a usar (sin extensión .ttf)
$tipografias = array("arial","comic","times");

//directorio donde estén las fuentes (ruta absoluta) importante el último /
$tipografias_ruta "C:\WINDOWS\Fonts\\";
// $tipografias_ruta="/home/sito/public_html/fonts/"; linux

//inicializa eje X desde donde se empezará a dibujar el código (referente al tamaño de la caja)
$espacio 0;

//tamaño fuente.
$tamano_fuente 15;

//profundidad caracteres/digitos del código a generar (password).
$profundidad_codigo 8// (alfanuméricos)

//cálculo Ancho automático de la caja

$x=$profundidad_codigo*$tamano_fuente;
$y=$tamano_fuente;

// Iniciar la generación de la imagen. Se define una caja de $x por $y pixels.
$im imagecreate($x$y);

//definición Colores. Expresados en valores R G B (respectivamente).
$color_fondo imagecolorallocate($im255255255); // Blanco
$color_texto imagecolorallocate($im000); // Negro

for($caracter=0$caracter<=$profundidad_codigo$caracter++){
  
//seleccion de una tipografía aleatoria.
  
$indice_aleatorio=array_rand($tipografias);
  
$tipografia=$tipografias_ruta.$tipografias[$indice_aleatorio].'.ttf';

  
//generar el caracter gráfico.
  
imagettftext($im$tamano_fuente0$espacio$tamano_fuente$color_texto$tipografia $codigo{$caracter});
  echo 
$tipografia;
  
//separación entre caracteres
  
$espacio +=$tamano_fuente;
}

//cabecera HTTP la cual indica al navegador que la imagen que estamos generando es .PNG
header('Content-type: image/png');

//genera un png dinámico
imagepng($im);
//destruye la imagen del servidor
imagedestroy($im);
?>
Sin embargo... cuando accedo al script directo desde la URL, por ejemplo:
http://localhost/sitio/includes/gd_c...isual=12345678

Me aparece el siguiente error:

Uninitialized string offset: 8 in c:\AppServ\www\sitio\includes\gd_create.php on line 39

La línea 39 es esta:

Código PHP:
imagettftext($im$tamano_fuente0$espacio$tamano_fuente$color_texto$tipografia $codigo{$caracter}); 
¿A que se deberá?...
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.

Última edición por Takitei; 27/09/2004 a las 16:58
  #18 (permalink)  
Antiguo 27/09/2004, 17:02
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 1 mes
Puntos: 5
Ya lo hice funcionar. Tenía un problema con la sintaxis del for(). El code final queda asi:

Código PHP:
<?php
//recogemos el texto por el URL que enviamos a generar desde el link de imagen del HTML de nuestro formulario
$codigo=$_GET['visual'];

//nombres tipografías a usar (sin extensión .ttf)
$tipografias = array("arial","comic","times");

//directorio donde estén las fuentes (ruta absoluta) importante el último /
$tipografias_ruta "C:\WINDOWS\Fonts\\";
// $tipografias_ruta="/home/sito/public_html/fonts/"; linux

//inicializa eje X desde donde se empezará a dibujar el código (referente al tamaño de la caja)
$espacio 0;

//tamaño fuente.
$tamano_fuente 15;

//profundidad caracteres/digitos del código a generar (password).
$profundidad_codigo 8// (alfanuméricos)

//cálculo Ancho automático de la caja

$x=$profundidad_codigo*$tamano_fuente;
$y=$tamano_fuente;

// Iniciar la generación de la imagen. Se define una caja de $x por $y pixels.
$im imagecreate($x$y);

//definición Colores. Expresados en valores R G B (respectivamente).
$color_fondo imagecolorallocate($im255255255); // Blanco
$color_texto imagecolorallocate($im000); // Negro

for($caracter=0$caracter<$profundidad_codigo$caracter++){
  
//seleccion de una tipografía aleatoria.
  
$indice_aleatorio=array_rand($tipografias);
  
$tipografia=$tipografias_ruta.$tipografias[$indice_aleatorio].'.ttf';

  
//generar el caracter gráfico.
  
imagettftext($im$tamano_fuente0$espacio$tamano_fuente$color_texto$tipografia $codigo{$caracter});
  
//separación entre caracteres
  
$espacio +=$tamano_fuente;
}

//cabecera HTTP la cual indica al navegador que la imagen que estamos generando es .PNG
header('Content-type: image/png');

//genera un png dinámico
imagepng($im);
//destruye la imagen del servidor
imagedestroy($im);
?>
Esto va para las FAQ. En un momento lo pongo. Un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #19 (permalink)  
Antiguo 28/09/2004, 01:37
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 4 meses
Puntos: 16
Hola,

Una pregunta, si el objetivo es crear un codigo visual para evitar altas automatizadas, es una estupidez pasar el codigo a mostrar por URL. Ya se ha comentado eso en varias respuestas en este mensaje, y se han dado soluciones.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #20 (permalink)  
Antiguo 28/09/2004, 04:43
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 1 mes
Puntos: 5
Jajajajaja yo sabía que iban a decir eso. Lo coloqué solo como ejemplo para poder probarlo desde URL, el mensaje que posteé en las FAQ's ya está corregido y funciona con sesiones.

Gracias de todas formas, un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #21 (permalink)  
Antiguo 28/09/2004, 11:17
 
Fecha de Ingreso: diciembre-2003
Mensajes: 173
Antigüedad: 20 años, 10 meses
Puntos: 1
Mira que ha dado que hablar el tema pero aun no tengo un sistema fiable, he estado probando y funciona pero todavia queda colgado el problema de que pueda ser usado la alta automatica... con sesiones ya queda garantizado el que no se pueda hacer?
Gracias.
  #22 (permalink)  
Antiguo 28/09/2004, 11:26
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 1 mes
Puntos: 5
Con SESSIONES es totalmente seguro. Hazlo con sesiones como aparece en las FAQs.
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #23 (permalink)  
Antiguo 06/11/2004, 08:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 22 años
Puntos: 1
Pues yo he hecho lo siguiente

Estuve revisando la FAQ's de como hacer el codigo de seguridad visual. Entonces me puse a hacerlo y a adaptarlo a mis necesidades. Esto es resultado de las adaptaciones:
Código PHP:
global $directory;
$codigo $_SESSION['securitycod']; # recogemos el texto por el URL que enviamos a generar desde el link de imagen del HTML de nuestro formulario
$tipografias = array("font01","font02","font03","font04","font05"); # nombres tipografías a usar (sin extensión .ttf)
$tipografias_ruta $directory."fonts\\"# directorio donde estén las fuentes (ruta absoluta) importante el último
$espacio 0# inicializa eje X desde donde se empezará a dibujar el código (referente al tamaño de la caja)
$tamano_fuente 15#  tamaño fuente
$profundidad_codigo 10# profundidad caracteres/digitos del código a generar (password) (alfanumericos)
$x=$profundidad_codigo*$tamano_fuente# cálculo Ancho automático de la caja
$y=$tamano_fuente;
$im imagecreate($x,$y); # Iniciar la generación de la imagen. Se define una caja de $x por $y pixels
  # definición Colores. Expresados en valores R G B (respectivamente).
$color_fondo imagecolorallocate($im255255255); # Blanco
$color_texto imagecolorallocate($im000); # Negro
for($caracter=0$caracter<$profundidad_codigo$caracter++){
  
# seleccion de una tipografía aleatoria
  
$indice_aleatorio array_rand($tipografias);
  
$tipografia $tipografias_ruta.$tipografias[$indice_aleatorio].'.ttf';
  
# generar el caracter gráfico  imagettftext($im,$tamano_fuente,0,$espacio,$tamano  _fuente,$color_texto,$tipografia,$codigo{$caracter  });
   # separación entre caracteres
   
$espacio += $tamano_fuente;
  }
  
# cabecera HTTP la cual indica al navegador que la imagen que estamos generando es .jpg
  
header('content-type: image/jpeg');
  
imagejpeg($im); # genera un JPG dinámico
  
imagedestroy($im); # destruye la imagen del servidor 
en el fichero config.inc.php previamente includo en el archivo donde genero las imagenes tengo esto:
Código PHP:
# Nombre o IP del Servidor HTTP donde se haya publicado el sitio
$hostingserver "http://10.5.2.28/jclub/";
# Nombre o IP del Servidor HTTP donde se haya publicado el sitio
$directory "D:\\www\\jclub\\"
pero aqui no se si usar $directory o $hostingserver.
Antes de llamar el fichero genera_img.php
Código PHP:
$security GeneraPasswd(10); # Esta funcion esta en la misma pagina por lo que no es necesario hacer include
$_SESSION['securitycod'] = $security
y la imagen la llamo asi:
Código PHP:
<img src='libraries/thumbnails.php?do=generateimage' align='absmiddle'
pero sorpresa cuando voy a ver la pagina lo que me sale es el titpico cuadrito con la cruz. Que hago mal ??
Salu2
__________________
Ing. Reynier Pérez Mira
  #24 (permalink)  
Antiguo 06/11/2004, 09:17
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 23 años, 3 meses
Puntos: 9
checaste muy bien que es lo que te dice la pura imagen de libraries/thumbnails.php?do=generateimage

Checa el mensaje que te dá. Tiene que darte un mensaje de error en PHP, si es facil de corregir ponlo
  #25 (permalink)  
Antiguo 06/11/2004, 12:58
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 1 mes
Puntos: 5
Prueba la página en el Internet Explorer siempre y cuando no tengas el SP2. Ahí podrás ver exactamente cuál es el error.
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #26 (permalink)  
Antiguo 06/11/2004, 19:37
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 22 años
Puntos: 1
Pues ...

Sip he probado la pagina en IExplorer y no me da nigun error simplemente que me pone el cuadrito. Incluso hice lo mismo que dice el tutorial, o sea, crear las cuatro paginas independientes y nada. MI libreria GD2 esta funcionando correctamente, pues ya lo he checado con el phpinfo().

Salu2
__________________
Ing. Reynier Pérez Mira
  #27 (permalink)  
Antiguo 09/12/2004, 11:59
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 22 años
Puntos: 1
Y nada

Que sigo fajado con el lio de crear el código de seguridad visual y no doy "pie con bola". Me dan una ayuda please ???

Salu2
__________________
Ing. Reynier Pérez Mira
  #28 (permalink)  
Antiguo 09/12/2004, 13:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No sé si en este mensaje ya se ha comentado (alguna vez lo he mencionado no recuerdo si en este mismo mensaje) ..

Para evaluar que tienes problemas con la generación "dinámica" de imagenes .. debes hacer algunas cosas para ir "viendo el error" para que cuando lo veas sepas que sucede y en consecuencia poder dar una solución al problema.

1) llama a tu script que genera la imagen de forma independiente por el URL: http://......

2) Si ahí no ves ya un mensaje de error: comenta las líneas de header() que tenga el script en cuestión. Por aquí ya deberías ver algún tipo de error.

Ten presente que si usas el código propuesto con la corrección del uso de sesiones .. el código que genera la imagen lo hace en función de esa variable de sesión .. así que tendrás que hacer pruebas con algún dato fijo que simule el dato que podría tener tu variable de sesión . .así veras por ejemplo entre otras cosas que tal vez puedas tener problemas con las sesiones (con la propagación del SID y no te esté tomando el valor de tu varaible de sesión que contiene el dato que se va a representar gráficamente).

Así mas o menos se evalua en general problemas con "cabeceras" y generación de imagenes dinámicamente.

Pruebalo y nos comentas ..

Un saludo,
  #29 (permalink)  
Antiguo 09/12/2004, 17:36
 
Fecha de Ingreso: diciembre-2004
Ubicación: En mi ksa
Mensajes: 267
Antigüedad: 19 años, 11 meses
Puntos: 0
$codigo=$_SESSION['mipass']; pra hacer activo este codigo q hay q hacer?? xq al ponerlo en dreamweaver me sale esto mismo $codigo=$_SESSION['mipass'];
al probarlo
__________________
--------------------------------------------------
[::Matthew Beyer::]
MaEsTrOsWeB
Chile
--------------------------------------------------
  #30 (permalink)  
Antiguo 10/12/2004, 06:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Matthew_182
$codigo=$_SESSION['mipass']; pra hacer activo este codigo q hay q hacer?? xq al ponerlo en dreamweaver me sale esto mismo $codigo=$_SESSION['mipass'];
al probarlo
Pero .. "donde pones" ese código? .. que es eso de hacerlo "activo"? .. No confundas un editor de Código con el entorno de pruebas de tus aplicaciones escritas en PHP: tu servidor HTTP (Apache o el que uses) y el própio PHP.

Un saludo,
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 10:06.