Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno123

[Resolvido] Gerenciamento de fila

Recommended Posts

Boa noite, estou tentando desenvolver um sistema de gerenciamento de fila de banco, sou iniciante no php, então estou com um pouco de dificuldade. Fiz um gerador de senha, mas toda vez que gero uma nova senha a antiga some e fica nessa, eu gostaria que as senhas seguissem uma ordem de fila. Se alguém puder ajudar, agradeço. também gostaria de uma ajuda para criar um chamador para essas senhas seguindo uma fila.

<?php
echo "<form>";
echo "<button onclick='gerarSenha()'>Gerar Senha</button><br/>";
echo "<form/>";

    $letras = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'W', 'Y', 'Z');
    $numeros = array(-1, -2, -3, -4, -5, -6, -7, -8, -9);
    $arraysenha = array();
    $total_let = count($letras) - 1;
    $total_num = count($numeros) - 1;
    $senha = $letras[rand(0, $total_let)] . $letras[rand(0, $total_let)] . $letras[rand(0, $total_let)] . $numeros[rand(0, $total_num)];
    $arraysenha []= $senha;
    echo "<pre>";
    print_r($arraysenha);
    echo "<pre/>";

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
Creio que não entendi direito.

você precisa clicar num botão que te retorne senhas uma a uma, sequencialmente?

Do modo em que está, as senhas serão sempre geradas randomicamente.
Você precisa guardar as possíveis senhas geradas em algum lugar, se quiser usá-las uma a uma, sequencialmente.

 

P.S.:

O php tem a função range, que já gera intervalos alfabéticos|numéricos, veja:
 

<?php
  // define letras maiúsculas de A até Z
  $letras = range('A', 'Z');

  // define números inteiros de 1 até 9
  $numeros = range(1, 9);

  // embaralha as letras
  shuffle($letras);

  // embaralha os números
  shuffle($numeros);

  // cria uma senha com 3 letras - um número
  $senha = implode('', array_slice($letras, 3, 3)) . '-' . end($numeros);

  echo '<pre>';
  print_r($senha);
  echo '</pre>';

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, no caso eu quero que mostre na tela, pra toda vez que eu gerar uma nova senha ela fique aparecendo na tela, por exemplo: ABC-1 ,ABC-9,ABC-5. Sempre que eu gero uma nova senha a antiga desaparece, mas eu quero que ela fique aparecendo na tela seguindo uma fila, deu pra entender ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente guardá-las em algum lugar.
Veja esse exemplo guardando na sessão:

 <?php
  // inicia a sessão:
  session_start();

  // define letras maiúsculas de A até Z
  $letras = range('A', 'Z');

  // define números inteiros de 1 até 9
  $numeros = range(1, 9);

  // embaralha as letras
  shuffle($letras);

  // embaralha os números
  shuffle($numeros);

  // cria uma senha com 3 letras - um número
  $_SESSION['senhas'][] = implode('', array_slice($letras, 3, 3)) . '-' . end($numeros);

  echo '<pre>';
  print_r($_SESSION['senhas']);
  echo '</pre>';
?>

<a href="./">Gerar mais uma senha.</a>


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora veja esse exemplo, guardando em um arquivo .txt:
 

<?php
    
  // define letras maiúsculas de A até Z
  $letras = range('A', 'Z');

  // define números inteiros de 1 até 9
  $numeros = range(1, 9);

  // embaralha as letras
  shuffle($letras);

  // embaralha os números
  shuffle($numeros);

  // cria uma senha com 3 letras - um número
  $senha = implode('', array_slice($letras, 3, 3)) . '-' . end($numeros);


  //define um nome para o arquivo
  $file = 'senhas.txt';

  // se não puder criar/abrir o arquivo
  if (!$handleFile = fopen($file, "a+")) {
    // mostra mensagem na tela
    die("<p>Erro ao abrir/criar o arquivo: (<b>$file</b>)</p>");
  }
  // grava senha com uma quebra de linha no final
  fwrite($handleFile, $senha . "\r\n");

  // fecha o arquivo
  fclose($handleFile);

  // mostra o conteúdo do arquivo na tela:
  echo '<pre>';
  print_r(file_get_contents($file));
  echo '</pre>';
?>

<a href="./">Gerar nova senha.</a>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se precisam gerenciar prioridades, utilize DS\PriorityQueue ou SplPriorityQueue.

 

Em ambas, vocês conseguirão adicionar as senhas e gerenciar qual deve ter uma prioridade maior (tal qual idosos, gestantes, etc...) e quais devem seguir a prioridade normal.

 

No link abaixo há um artigo bem completo do criador das Data Structures do PHP:

https://medium.com/@rtheunissen/efficient-data-structures-for-php-7-9dda7af674cd

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.