Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2010, 15:10
romanriquelme
 
Fecha de Ingreso: octubre-2008
Mensajes: 78
Antigüedad: 15 años, 6 meses
Puntos: 1
¿Qué hago mal? Simple función para generar cadena

Hola. Estoy tratando de hacer una función que me genere una cadena de caracteres aleatorios. Pero no se que hago mal porque no me genera nada... haber si alguien me ayuda.
Este es el codigo:

Código:
<?php
$cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890()[]?¿¡!$%&/\-_:;.,{}+€¬@#";
$cantidad_caracteres = strlen($cadena);
function GenerarCadena($longitud){
	for($contador=0;$contador<$longitud;$contador++){
		$posicion_caracter = rand(0,$cantidad_caracteres);
		$cad.= substr($cadena,$posicion_caracter,1);
	}
	return $cad;
}
$generar = GenerarCadena(8);
echo $generar;
?>
Estoy tratando de buscar cual es mi error pero no lo encuentro...
Al parecer hasta el for todo funciona bien, pero no me funciona el rand.
Es decir, si debajo del rand(0,$cantidad_caracteres); le pongo en echo $posicion_caracter van a ver que les va a imprimir muchos 0, en el caso del ejemplo va a imprimir 8 ceros.. Lo qu no se a que se debe dado que los 2 parametros que le paso al rand son correctos, comenzar desde 0 y el segundo parametro es una variable que es un entero.. si hacen un echo de $cantidad_caracteres les va a mostrar correctamente la cantidad.

En fin, a ver si me dicen alguna solucion.

EDITO: Me sucedio algo rar... Antes de la funcion puse el siguiente codigo:

Código:
$prueba = rand(0,$cantidad_caracteres);
echo $prueba;
Y me genero un numero aleatorio correctamente entre 0 y la cantidad de caracteres de la cadena. Pero si pongo ese mismo codigo dentro de la funcion o dentro del for me genera un 0...

Última edición por romanriquelme; 03/12/2010 a las 15:16