Foros del Web » Programando para Internet » PHP »

¿Qué hago mal? Simple función para generar cadena

Estas en el tema de ¿Qué hago mal? Simple función para generar cadena en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/12/2010, 15:10
 
Fecha de Ingreso: octubre-2008
Mensajes: 78
Antigüedad: 15 años, 5 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
  #2 (permalink)  
Antiguo 03/12/2010, 15:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 78
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: ¿Qué hago mal? Simple función para generar cadena

Bueno he podido solucionarlo. Al parecer dentro de una funcion no existen las variables que tengas fuera. Yo pense que si.... lo he solucionado pasandole los valores de las variables como parametro a traves de la funcion.

De cualquier modo muchas gracias a todos, espero que si alguien tiene el mismo problema le sirva esto.
  #3 (permalink)  
Antiguo 03/12/2010, 16:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Qué hago mal? Simple función para generar cadena

de hecho si tuvieras el hábito mínimo de leer el manual sabrías eso que pensabas estaba mal...

se le llama contexto o scope...
http://www.php.net/manual/en/languag...bles.scope.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: mal, simple, cadenas
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 12:55.