Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Até alguns dias atrás eu usava a LocaWeb e tive que trocar de servidor, pois iriam desativar a maquina que eu usava
e com o trecho do código abaixo, os números quase não se repetiam.
Ao alterar para um servidor na redehost com centos 6, os números começaram a se repetir MUITAS VEZES.
ex: de 120 registros, as vezes duplica 10.
$cod_cadastro = addslashes($_GET["cod_cadastro"]);
// gera o codigo de barras
for($i=0; $i<20; $i++)
{
$cod_barras = $cod_cadastro;
$n = strlen($cod_barras);
for ($j=0; $j<5-$n; $j++)
$cod_barras = "0".$cod_barras;
// gera numero randomico
$n_rand = mt_rand(1000000,9999999);
$cod_barras = $n_rand."".$cod_barras;
}
Versão do PHP 5.3.3
Servidor CentOs 6 X64
Zpanel
>
Você pode adicionar a função uniqid()
uniqid();
http://www.w3schools.com/php/func_misc_uniqid.asp
Ou você pode fazer uma verificação antes para ver se o número já existe.
Alarte, obrigado;
acho que resolveu meu problema.
Ficou assim.
function soNumero($str) {
return preg_replace("/[^0-9]/", "", $str);
}
$codigo_completo= soNumero(uniqid(rand(), true));
$codigo = substr($codigo_completo,0,12);
Cadastrei um milhão de registros e eles se repetiram 20 vezes, totalmente aceitável.
Você pode adicionar a função uniqid()
uniqid();
http://www.w3schools.com/php/func_misc_uniqid.asp
Ou você pode fazer uma verificação antes para ver se o número já existe.