Foros del Web » Programando para Internet » PHP »

Crear clave unica e irrepetible

Estas en el tema de Crear clave unica e irrepetible en el foro de PHP en Foros del Web. Hola gente, tengo una consulta necesito crear una clave numerica o alfanunerica que no excista posibilidad que se repito con otra de la misma tabla. ...
  #1 (permalink)  
Antiguo 16/07/2017, 08:04
 
Fecha de Ingreso: julio-2011
Mensajes: 123
Antigüedad: 12 años, 8 meses
Puntos: 0
Crear clave unica e irrepetible

Hola gente, tengo una consulta necesito crear una clave numerica o alfanunerica que no excista posibilidad que se repito con otra de la misma tabla. Me gustaria que sea de 10 digitos pero bueno no mucho mas largo.

Una funcion tipo uniqid () que le pase un parametro y me retorno la clave unica.

El parametro que le voy a pasar estoy seguro que es unici ya que es el id autoincrementable de la tabla.

Recomiendan algo?

Muchas gracias desde ya!
  #2 (permalink)  
Antiguo 16/07/2017, 16:25
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear clave unica e irrepetible

Cuando creas la tabla puedes dar la opcion a una columna para que sea unique....
  #3 (permalink)  
Antiguo 16/07/2017, 23:38
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Crear clave unica e irrepetible

Hola:

En un sistema de comentarios he desarrollado un pequeño código que tal vez te sirva: Ponga comentarios en su web.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 17/07/2017, 17:53
 
Fecha de Ingreso: julio-2011
Mensajes: 123
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Crear clave unica e irrepetible

gracias!! esta bien tengo presente lo de lka columna unique... pero quiero una funcion me asegure que me retorna una clave numerica o alfanumerica unica. para usarlo como un codigo identificador de un billete de loteria
  #5 (permalink)  
Antiguo 17/07/2017, 21:06
 
Fecha de Ingreso: julio-2011
Mensajes: 123
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Crear clave unica e irrepetible

por ejemplo en este codigo ustedes creen hay posibilidad de coincida alguno?

Código PHP:
function make_seed()
{
  list(
$usec$sec) = explode(' 'microtime());
  return (float) 
$sec + ((float) $usec 100000);
}
mt_srand(make_seed());
$randval mt_rand();


echo 
$randval
  #6 (permalink)  
Antiguo 18/07/2017, 10:08
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 18 años, 8 meses
Puntos: 23
Respuesta: Crear clave unica e irrepetible

Cita:
Iniciado por cesand209 Ver Mensaje
por ejemplo en este codigo ustedes creen hay posibilidad de coincida alguno?

Código PHP:
function make_seed()
{
  list(
$usec$sec) = explode(' 'microtime());
  return (float) 
$sec + ((float) $usec 100000);
}
mt_srand(make_seed());
$randval mt_rand();


echo 
$randval
Siempre existe la posibilidad. Mejor cerciorarte que no exista la clave con una consulta y así la posibilidad se anula.

Código PHP:
Ver original
  1. $query = "SELECT clave FROM tu_tabla WHERE clave = '".$randval"'";

Así si la consulta trae un resultado ya no lo imprimes o no lo grabas y repites el proceso para volver a crear la clave y vuelves a revisarlo de nuevo con la consulta
__________________
Un buen programa depende de la imaginación.
  #7 (permalink)  
Antiguo 18/07/2017, 15:16
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Crear clave unica e irrepetible

No tienes que crear nada puedes usar UUID para lo que necesitas, si quieres implementar tu mismo puedes consultar en https://tools.ietf.org/html/rfc4122 y si quieres una implementación en php puedes usar este paquete https://github.com/ramsey/uuid
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 18/07/2017, 16:11
Avatar de iandrade  
Fecha de Ingreso: septiembre-2006
Ubicación: Xalapa, Veracruz, MÉXICO.
Mensajes: 171
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Crear clave unica e irrepetible

Puedes usar varias funciones nativas en conjunto

Esta función crea cadenas de 40 caracteres:

Código PHP:
Ver original
  1. function UID(){ return sha1(date("YmdHis". uniqid()."SALTPhrase"))}
__________________
No todo lo que se hace en segundo plano es AJAX
  #9 (permalink)  
Antiguo 18/07/2017, 16:23
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Crear clave unica e irrepetible

Como les gusta reinventar la rueda
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #10 (permalink)  
Antiguo 21/07/2017, 22:59
 
Fecha de Ingreso: julio-2011
Mensajes: 123
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Crear clave unica e irrepetible

Hola Muchas gracias por sus aportes!!

a ver si entiendo bien la funcion microtime retorna algo asi:

0.62032700 1500699366

esa segunda parte despues del espacio(1500699366) esto nuca se puede repetir porque el numero siempre va creciendo con el tiempo mismo o no es asi?
  #11 (permalink)  
Antiguo 22/07/2017, 14:07
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Crear clave unica e irrepetible

Prueba así:
Código PHP:
Ver original
  1. function clave(){
  2.         //Cadena de Letras
  3.         $cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  4.         //Creamos un array con la cadena
  5.         $lets = str_split($cadena);
  6.         //Generamos un numero a partir de la fecha y hora del momento
  7.         $num = strtotime(date("Y-m-d H:i:s"));
  8.         //Inicializo la variable de prefijo
  9.         $pref = "";
  10.         //Indico la cantidad de caracteres a utilizar en el prefijo
  11.         $l=10;
  12.         //Genero el Prefijo
  13.         for($i=0; $i<$l; $i++){
  14.             $pref .= $lets[rand($l,(count($lets)-1))];
  15.         };
  16.        
  17.         //Genero la clave
  18.         $clave = $pref.$num;
  19.         //Retorno la Clave Generada
  20.         return $clave;
  21. }
  22.  
  23. echo clave();

Esta funcion la realice yo, puede que haya maneras mas optimizadas, pero esta te genera una clave alfanumerica unica ya que implica la fecha y hora del momento, puedes ver una muestra aqui:

http://sandbox.onlinephpfunctions.co...a1898f6adf4c2d

Incluso si varias peticiones se realizan exactamente al mismo tiempo, esta variara por la cadena de texto a la cual le puedes anexar simbolos
__________________
[email protected]
HITCEL

Etiquetas: clave, tabla, unica
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 11:03.