Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, preciso fazer um sistema de login onde o nome de login e a senha sejam criados aleatoriamente, no caso do nome de login um código, algo tipo assim, 123456 sendo campo único.
A senha pode ser normal, mas o nome de login terá que ser único.
Alguém já fez algo parecido?
Obrigado.
>
16 minutos atrás, Omar~ disse:
Essa classe possui métodos para geração aleatória de string, veja se algum lhe é útil:
Mostrar conteúdo oculto
<?php
/**
* ********************************************
@copyright (c) Spell master
@version 1.0
Cria códigos aletórios
* ********************************************
*/
class CreateCode {
private $lengths;
private $chars;
private $code;
/**
* ****************************************
* Cria um código de string aleatório
* ****************************************
* @param {INT} $len
* Quandidade de caracteres no código, se
* não informado o valor será 5.
* @return
* Código alfabético com quantidade de
* caracteres informados pelo $len.
* ****************************************
*/
public function strCode($len = null) {
$this->lengths = (isset($len) ? (int) $len : 5);
$this->chars = 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ';
$this->setCode();
return ($this->code);
}
/**
* ****************************************
* Cria um código de string aleatório
* ****************************************
* @param {INT} $len
* Quandidade de caracteres no código, se
* não informado o valor será 5.
* @return
* Código numérico com quantidade de
* caracteres informados pelo $len.
* ****************************************
*/
public function intCode($len = null) {
$this->lengths = (isset($len) ? (int) $len : 5);
$this->chars = '0123456789';
$this->setCode();
return ($this->code);
}
/**
* ****************************************
* Cria um código de string aleatório
* ****************************************
* @param {INT} $len
* Quandidade de caracteres no código, se
* não informado o valor será 10.
* @return
* Código numérico e alfabético misturados
* com quantidade de caracteres informados
* pelo $len.
* ****************************************
*/
public function defCode($len = null) {
$this->lengths = (isset($len) ? (int) $len : 10);
$this->chars = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ0123456789';
$this->setCode();
return ($this->code);
}
/**
* ****************************************
* Cria o código baseado nas informações
* dos métodos públicos.
* ****************************************
*/
private function setCode() {
$this->code = "";
$chars = str_split($this->chars);
for ($i = 0; $i < $this->lengths; $i++) {
$this->code .= $chars[array_rand($chars)];
}
}
}
Exemplo:
$codigo = new CreateCode();
$resultado = $codigo->defCode(10) . time();
var_dump($resultado); // string única, ou seja jamais será gerada outra igual
Rodei aqui mas deu erro diz que a classe não foi encontrada.
Poste o erro....
A propósito fez o requerimento/inclusão do arquivo que contém a classe?
Existe alguma função para auto carregamento de classes?
>
14 horas atrás, Omar~ disse:
Poste o erro....
A propósito fez o requerimento/inclusão do arquivo que contém a classe?
Existe alguma função para auto carregamento de classes?
Não, copiei e colei o código e rodei no php
>
Em 31/08/2023 at 16:09, Omar~ disse:
Mostrar conteúdo oculto
<?php
/**
* ********************************************
@copyright (c) Spell master
@version 1.0
Cria códigos aletórios
* ********************************************
*/
class CreateCode {
private $lengths;
private $chars;
private $code;
/**
* ****************************************
* Cria um código de string aleatório
* ****************************************
* @param {INT} $len
* Quandidade de caracteres no código, se
* não informado o valor será 5.
* @return
* Código alfabético com quantidade de
* caracteres informados pelo $len.
* ****************************************
*/
public function strCode($len = null) {
$this->lengths = (isset($len) ? (int) $len : 5);
$this->chars = 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ';
$this->setCode();
return ($this->code);
}
/**
* ****************************************
* Cria um código de string aleatório
* ****************************************
* @param {INT} $len
* Quandidade de caracteres no código, se
* não informado o valor será 5.
* @return
* Código numérico com quantidade de
* caracteres informados pelo $len.
* ****************************************
*/
public function intCode($len = null) {
$this->lengths = (isset($len) ? (int) $len : 5);
$this->chars = '0123456789';
$this->setCode();
return ($this->code);
}
/**
* ****************************************
* Cria um código de string aleatório
* ****************************************
* @param {INT} $len
* Quandidade de caracteres no código, se
* não informado o valor será 10.
* @return
* Código numérico e alfabético misturados
* com quantidade de caracteres informados
* pelo $len.
* ****************************************
*/
public function defCode($len = null) {
$this->lengths = (isset($len) ? (int) $len : 10);
$this->chars = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ0123456789';
$this->setCode();
return ($this->code);
}
/**
* ****************************************
* Cria o código baseado nas informações
* dos métodos públicos.
* ****************************************
*/
private function setCode() {
$this->code = "";
$chars = str_split($this->chars);
for ($i = 0; $i < $this->lengths; $i++) {
$this->code .= $chars[array_rand($chars)];
}
}
}
@rogerblower, você precisa da classe sugerida.>
15 horas atrás, tetsuo disse:
@rogerblower, você precisa da classe sugerida.
Entendi, já procurei na internet mas não encontrei, volto a estaca zero...
@rogerblower Veja que na minha postagem existe um spoiler onde está escrito "Mostrar conteúdo oculto"
Pois bem clique para mostrar, verá então o código da classe.
Copie todo o código dentro do spoiler.
Como você está usando o wamppserver então dentro da pasta www crie um novo arquivo .php e cole o código da classe.
Veja que o nome da classe é CreateCode então salve o arquivo com o mesmo nome.
Agora crie outro arquivo .php esse você pode nomear como quiser.
Nesse novo arquivo escreva isso:
<?php
require('CreateCode.php'); // Requisitando o arquivo da classe.
$codigo = new CreateCode(); // Instanciando a classe, assim o objeto de orientação será $codigo
$resultado = $codigo->defCode(10) . time(); // defCode é um dos métodos públicos da classe
var_dump($resultado); // $resultado é o retorno do método
Sugiro que estude sobre orientação ao objeto pois isso é o mais vital no php
>
1 hora atrás, Omar~ disse:
@rogerblower Veja que na minha postagem existe um spoiler onde está escrito "Mostrar conteúdo oculto"
Pois bem clique para mostrar, verá então o código da classe.
Copie todo o código dentro do spoiler.
Como você está usando o wamppserver então dentro da pasta www crie um novo arquivo .php e cole o código da classe.
Veja que o nome da classe é CreateCode então salve o arquivo com o mesmo nome.
Agora crie outro arquivo .php esse você pode nomear como quiser.
Nesse novo arquivo escreva isso:
<?php
require('CreateCode.php'); // Requisitando o arquivo da classe.
$codigo = new CreateCode(); // Instanciando a classe, assim o objeto de orientação será $codigo
$resultado = $codigo->defCode(10) . time(); // defCode é um dos métodos públicos da classe
var_dump($resultado); // $resultado é o retorno do método
Sugiro que estude sobre orientação ao objeto pois isso é o mais vital no php
Foi vacilo meu, não prestei atenção no post, mas é verdade preciso sim estudar OO, vou procurar sobre, muito obrigado.
basicamente seria isso
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nome_login VARCHAR(10) UNIQUE,
senha VARCHAR(255)
);
cadastrar.php
<?php
try {
$pdo = new PDO("mysql:host=seu_host;dbname=sua_base_de_dados", "seu_usuario", "sua_senha");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Gerar um nome de login aleatório
$nomeLogin = mt_rand(100000, 999999); // Números aleatórios de 100000 a 999999
// Gerar uma senha aleatória (você pode personalizar isso)
$senha = password_hash("senha_aleatoria", PASSWORD_DEFAULT);
// Inserir o novo usuário no banco de dados
$stmt = $pdo->prepare("INSERT INTO usuarios (nome_login, senha) VALUES (:nome_login, :senha)");
$stmt->bindParam(":nome_login", $nomeLogin);
$stmt->bindParam(":senha", $senha);
$stmt->execute();
echo "Usuário criado com sucesso. Nome de login: $nomeLogin";
} catch (PDOException $e) {
echo "Erro: " . $e->getMessage();
}
?>
Essa classe possui métodos para geração aleatória de string, veja se algum lhe é útil:
Spoiler
<?php
/**
* ********************************************
@copyright (c) Spell master
@version 1.0
Cria códigos aletórios
* ********************************************
*/
class CreateCode {
var_dump($resultado); // string única, ou seja jamais será gerada outra igual