Ir para conteúdo

Arquivado

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

karina pereira refacho

gerador de resultados hash 512

Recommended Posts

ola pessoal não entendo muito sobre php estou tentando juntar 2 script em php mas não tenho a minima ideia por onde começar se alguem puder me dar uma luz eu agradeço, vamos tenho esse script abaixo onde ele me gera todas as hash de 1 a 3000 

<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
foreach (range(1, 3000) as $number) {
    echo hash('sha512', $number).'<br>'; 
} fim do script


eu preciso fazer com que ele junte com esse segundo script aqui abaixo


$seed = "HASH SERA INSERIDA AQUI-123456-1";
do {
     $seed = sha1($seed);
     $lucky = hexdec(substr($seed,0,8));
} while ($lucky > 4294960000);

$luckyNumber = ($lucky % 10000) / 100;

if ($luckyNumber < 0)
     $luckyNumber = -$luckyNumber;


echo $luckyNumber ;

FIM DO SCRIPT

 

se voce copiar esse segundo script e rodar no servidor vai me gerar esse resultado 18.65

eu preciso fazer com que ele gere todas as 3000 hash com o resultado na frente de cada hash exemplo abaixo

c3fc4fd56f773728a0421980c587dce13ea89992c5005f245e971a9a78966f590611c1eb0c89e3de9515ee917297c980fa4544f2b211f9e4a9d9f88b48ca5e62   3.48

e0e725f004f61cdae9017eb715a22d2bf60e9db2da81ced94da8c49b01c802600cfebfb5b5d04430824918b5f70a773f980b42192ec0e054bd655d7d084a6a69  15.68

 

 

desde ja agradeço a ajuda e atenção de todos

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente boa madrugada!

 

Gerar 3.000 linhas de resultado e exibir numa só página sem paginação seria exaustivo pro leitor, quem quer que ele seja, além de bastante desorganizado. Sem contar que geraria um "peso" grande na renderização da página e facilmente travaria o navegador num PC mais modesto.

 

Sabendo disso, você precisa entender como e o que são as variáveis, precisa aprender sobre a estruturação da linguagem. Vamos começar. Vou explicar linha por linha do seu código.

 

foreach(){} é um loop, um laço de repetição específico para trabalhar com arrays (sabe o que são arrays? se não, pergunte). for = para, each = cada. Leia o foreach assim: para cada($índice_do_meu_array como $string_que_armazenará_o_valor_do_índice_atual){processe este código}. Existem muitos laços de repetição, estude-os.

 

echo hash('sha512', $number).'<br>'; Leia: imprima na tela este número criptografado em sha512 e gere uma quebra de linha HTML ao final.

 

$seed é uma variável onde você deve armazenar o valor gerado pelo código acima. Pelo que entendi do script você deveria escolher um hash exclusivo e inseri-lo neste campo. Para definir um valor a uma variável, comumente utiliza-se o seguinte método: $variavel = "valor"; ou $variavel = false; ou $variavel = true; ou $variavel = 123456789; etc.

 

do{}while() é outro laço de repetição. Leia: faça{este código}enquanto(esta condição for verdadeira); Esse trecho do seu cógido gera um número aleatório e o insere na variável $lucky. A função hexdec($variavel) retorna o decimal equivalente do número hexadecimal enviado via $variavel e converte uma string hexadecimal para um número decimal, ignorando qualquer caracter não hexadecimal que encontrar em $variavel.

 

$luckyNumber = ($lucky % 10000) / 100; essa é uma operação matemática. Ela resulta no módulo (resto da divisão) de $lucky por 10.000 e divide o resultado por 100. Por exemplo, 10 % 8 é o mesmo que 10 /8 = 1 com resto 2, portanto 10 % 8 retornaria 2.

 

if ($luckyNumber < 0) $luckyNumber = -$luckyNumber; Esse trecho diz o seguinte: se $luckyNumber for menor que 0, então $luckyNumber é igual a -$luckyNumber (o mesmo número com o indicador de negativo).

 

echo $luckyNumber; Leia: imprima minha variável chamada $luckyNumber.

 

Você poe exibir o resultado do jeito que deseja concatenando (juntando) as variáveis que contenham o hash e o resultado. No entanto no seu código, o hash sha512 não está sendo armazenado em local algum. Você precisa armazená--lo ou envia-lo para a página que gerará o $luckyNumber. Você pode fazer isso de duas formas: randomizando completamente o código, deixando de exibir os hashes na tela e sim armazenando um aleatório numa variável (substitua o echo por $variavel = ), mas não bastaria simplesmente fazer isso, pois, faça o teste, o resultado seria SEMPRE um hash do número 3000. Neste caso, recomendo que utilize a função rand(1, 3000) para gerar um número aleatório e então encripte-o com hash("sha512", $numeroAleatorio). Lembre de armazenar o valor do rand() numa variável para encriptá-la depois. Dessa forma já resolveria sua questão imprimindo algo similar a $luckyNumber.' '.$numeroAleatorio; Para concatenar strings utilize o PONTO . entre elas. Você pode concatenar uma variável a uma string explícita também, como fiz no exemplo acima em .' '., que é uma string com um espaço como sendo o seu valor.

 

Outra opção seria gerar os hashes, como é feito atualmente, numa página e utilizar um formulário HTML para enviá-lo à página que gera o $luckyNumber. Neste caso, capture o valor do seu <input> que terá a hash escolhida pelo usuário da página utilizando as variáveis  reservadas $_GET["nome do campo no formulário"] ou $_POST["nome do campo no formulário"], a depender o ditpo de postagem realizada através deste formulário. Após capturado o valor, adicione-o à variável $seed e o resto ocorrerá normalmente, gerando seu $luckyNumber.

 

Se ainda tiver dúvidas, pergunte.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo muito obrigada pela dica, vou estudar os codigos aqui e ver se consigo vou tentar fazer a segunda opção que voce me passou, utilizar um formulário HTML e  $_GET["nome do campo no formulário"]

mais uma vez muito obrigada tenha uma otima semana

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 08/08/2017 at 10:30, karina pereira refacho disse:

amigo muito obrigada pela dica, vou estudar os codigos aqui e ver se consigo vou tentar fazer a segunda opção que voce me passou, utilizar um formulário HTML e  $_GET["nome do campo no formulário"]

mais uma vez muito obrigada tenha uma otima semana

 

amigo se voce puder me dar uma luz não consegui fazer estou meio perdida pois não entendo nada sobre php desde ja muito obrigada pela atenção tenha uma otima semana

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 minutos atrás, karina pereira refacho disse:

 

amigo se voce puder me dar uma luz não consegui fazer estou meio perdida pois não entendo nada sobre php desde ja muito obrigada pela atenção tenha uma otima semana

em vez de gerar 3000 hash poderia ser menor exemplo 100 hash so que queria facilitar o resultado par não ficar adicionado uma por uma por exemplo o script deveria mostrar as 100 hash com o resultado luckyNumber na frente exemplo abaixo de hash + resultado no final

 

4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a = 13.7

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola acho que estou chegando lá consegui fazer com que ele gere a hash com o resultado so que ele so esta gerando uma hash com um resultado na parte foreach (range(1, 100) as $number) esta setado para gerar 100 hash com 100 resultados o que sera que fiz de errado ?

<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
foreach (range(1, 100) as $number) {
    $variavel = hash('sha512', $number).'-12345-1'; 
} 

do {
     $variavel = sha1($variavel);
     $lucky = hexdec(substr($variavel,0,8));
} while ($lucky > 4294960000);

$luckyNumber = ($lucky % 10000) / 100;

if ($luckyNumber < 0)
     $luckyNumber = -$luckyNumber;

echo hash('sha512', $number).' = ';
echo $luckyNumber .'<br>';

no script acima se testar no http://phptester.net/ so me gera uma hash + o resultado no final igual abaixo

643c30f73a3017050b287794fc8c5bb9ab06b9ce38a1fc58df402a8b66ff58f69bf0a606ae17585352a0306f0e9752de8c5c064aed7003f52808b43ff992a603 = 35.46

 

nesse caso preciso que gere 100 hash com 100 resultados no final

se possivel me de uma luz por favor obrigada pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, karina pereira refacho disse:

ola acho que estou chegando lá consegui fazer com que ele gere a hash com o resultado so que ele so esta gerando uma hash com um resultado na parte foreach (range(1, 100) as $number) esta setado para gerar 100 hash com 100 resultados o que sera que fiz de errado ?


<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
foreach (range(1, 100) as $number) {
    $variavel = hash('sha512', $number).'-12345-1'; 
} 

do {
     $variavel = sha1($variavel);
     $lucky = hexdec(substr($variavel,0,8));
} while ($lucky > 4294960000);

$luckyNumber = ($lucky % 10000) / 100;

if ($luckyNumber < 0)
     $luckyNumber = -$luckyNumber;

echo hash('sha512', $number).' = ';
echo $luckyNumber .'<br>';

no script acima se testar no http://phptester.net/ so me gera uma hash + o resultado no final igual abaixo

643c30f73a3017050b287794fc8c5bb9ab06b9ce38a1fc58df402a8b66ff58f69bf0a606ae17585352a0306f0e9752de8c5c064aed7003f52808b43ff992a603 = 35.46

 

nesse caso preciso que gere 100 hash com 100 resultados no final

se possivel me de uma luz por favor obrigada pela atenção

so lembrando que foi mencionado para fazer em número aleatório o problema são as repetiçoes acredito que não ira gerar as hash de 1 a 100 corretamente e sem repetir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde! Desculpa a demora a responder, fiquei sem conexão por conta de um poste que caiu aqui perto de casa.

 

Enfim, vamos la.

 

Se você quer gerar 100 resultados diferentes, poderia resolver facilmente alterando um pouco o seu código atual. Para tanto, bastaria mover parte do seu código e inseri-lo totalmente dentro do seu laço de repetição foreach(), que já é responsável por realizar um mesmo script N vezes, dessa forma:

<?php
// array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ..., 3000)
$n=1;
foreach (range(1, 100) as $number) {
    $variavel = hash('sha512', $number).'-12345-1';
	do {
		$variavel = sha1($variavel);
		$lucky = hexdec(substr($variavel,0,8));
	} while ($lucky > 4294960000);

	$luckyNumber = ($lucky % 10000) / 100;

	if ($luckyNumber < 0)
		 $luckyNumber = -$luckyNumber;

	echo "Resultado $n<br />\r\n".hash('sha512', $number).' = ';
	echo $luckyNumber .'<hr>';
	$n++;
}

OBS: A variável $n eu coloquei simplesmente pra facilitar sua visualização e pra que você possa perceber com mais facilidade que ele, de fato, gerou os 100 resultados, bem como o trecho "Resultado $n<br />\r\n". do código também é simplesmente para uma melhor visualização. Todos esses trechos de código devem ser removidos quando você for utilizá-lo para seu objetivo final, depois que aprender como fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E no caso de gerar um hash aleatório sem repetir nenhum deles nem mesmo uma única vez seria um pouco mais complicado... você teria de armazenar cada resultado num array e depois verificar a existência dele. Caso exista, remove faria com que seu laço de repetição fosse executado uma vez mais além do esperado.

 

Recomendo que você aprenda primeiro a fazer da forma como está agora, simplesmente gerando números aleatórios de 1 a 100 pra só depois passar pra essa outra parte mais complexa, um pouco (mas também não é um bicho de 7 cabeças).

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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