Create different random password for each loop record

1

I have a loop that should enter a random password for each record, and when I finish loop (have created the different password for each record), list the results by viewing the password.

 <?php
ob_start();
session_start();

//conexão com banco
include ("conn.php");

//definição de variáveis
$tabela = "chatoperator";
$campos = "operatorid, vclogin, dtmlastvisited, istatus, vcpassword"; 
$quant = 10; //número de ações que será realizada de cada vez 
$sec = 10; //tempo entre o envio de um pacote e outro (em segundos) 
$ok = 0;
$inicio = 0;
$fim = $inicio + $quant; 
$acentos = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";

//verifica se a senha confere com a da sessão
echo $acentos;

$sql = "select $campos from $tabela where istatus = 0 limit $inicio,$fim" or die (mysql_error($sql)); 
$query = mysql_query($sql,$conexao); 
$registros = mysql_num_rows($query); 

if($registros==0){
    mysql_query("update $tabela set istatus = 0" or die (mysql_error($conexao))); 
        echo("<font face=’tahoma’>todas as senhas foram alteradas!</font>"); 
    $ok = 1;
}else{
    while($result = mysql_fetch_array($query)) {
        $operatorid = $result[0]; //operatorid
        $vclogin = $result[1]; //vclogin
        $dtmlastvisited = $result[2]; //dtmlastvisited
        $istatus = $result[3]; //istatus
        $vcpassword = $result[4]; //vcpassword

        //gera senha aleatória
        function geraSenha(){
        //caracteres que serão usados na senha randomica
            $chars = 'abcdxyswzABCDZYWSZ0123456789';
            //ve o tamnha maximo que a senha pode ter
            $max = strlen($chars) - 1;
        //declara $senha
            $senha = null;

        //loop que gerará a senha de 8 caracteres
            for($i=0;$i < 8; $i++){
            $senha .= $chars{mt_rand(0,$max)};
    }
    return $senha;          
}
$senha_randomica   =  geraSenha();
$senha = md5($senha_randomica);

mysql_query("update $tabela set istatus = 1 AND vcpassword = '$senha_randomica' where    operatorid = $operatorid") or die (mysql_error($conexao));
    echo("
<table width='100%' border='1'>
    <tr>
        <th>Identificador do Usuário</th>
        <th>Login do Usuário</th>
        <th>Data do Último Acesso</th>
        <th>Status do Acesso</th>
        <th>Senha do Usuário</th>
   </tr>
   <tr>
        <td> $operatorid </td>
        <td> $vclogin </td>
        <td> $dtmlastvisited </td>
        <td> $istatus </td>
        <td> $senha_randomica </td>
  </tr>
 </table>");
      }
   }
    mysql_free_result($query); 
    mysql_close($conexao);

    if(!$ok){
        echo("<meta http-equiv=\"refresh\" content=\"" . $sec . "\">"); 
}
?>
    
asked by anonymous 02.04.2015 / 14:07

1 answer

3

The problem seems to be just that the geraSenha function is inside the loop. Put it first of all.

See running on ideone .

The question clearly speaks to problem to create the password and in fact without the above change I have tested and only generates one. Now in the comments the problem seems to be another. There is also an error in writing the data. It would have to be like this (if I understood the intention).

mysql_query("update $tabela set istatus = 1, vcpassword = '$senha_randomica' where    operatorid = $operatorid") or die (mysql_error($conexao));

So you'd be like this (I can not test a code that does not follow the MVCE .

<?php
function geraSenha(){
    $chars = 'abcdxyswzABCDZYWSZ0123456789';
    $max = strlen($chars) - 1;
    $senha = "";
    for($i=0;$i < 8; $i++){
        $senha .= $chars{mt_rand(0,$max)};
    }
    return $senha;          
}

ob_start();
session_start();

//conexão com banco
include ("conn.php");

//definição de variáveis
$tabela = "chatoperator";
$campos = "operatorid, vclogin, dtmlastvisited, istatus, vcpassword"; 
$quant = 10; //número de ações que será realizada de cada vez 
$sec = 10; //tempo entre o envio de um pacote e outro (em segundos) 
$ok = 0;
$inicio = 0;
$fim = $inicio + $quant; 
$acentos = "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";

//verifica se a senha confere com a da sessão
echo $acentos;

$sql = "select $campos from $tabela where istatus = 0 limit $inicio,$fim" or die (mysql_error($sql)); 
$query = mysql_query($sql,$conexao); 
$registros = mysql_num_rows($query); 

if($registros==0){
    mysql_query("update $tabela set istatus = 0" or die (mysql_error($conexao))); 
        echo("<font face=’tahoma’>todas as senhas foram alteradas!</font>"); 
    $ok = 1;
}else{
    while($result = mysql_fetch_array($query)) {
        $operatorid = $result[0]; //operatorid
        $vclogin = $result[1]; //vclogin
        $dtmlastvisited = $result[2]; //dtmlastvisited
        $istatus = $result[3]; //istatus
        $vcpassword = $result[4]; //vcpassword

        $senha_randomica   =  geraSenha();
        $senha = md5($senha_randomica);

        mysql_query("update $tabela set istatus = 1, vcpassword = '$senha_randomica' where    operatorid = $operatorid") or die (mysql_error($conexao));
        echo("
<table width='100%' border='1'>
    <tr>
        <th>Identificador do Usuário</th>
        <th>Login do Usuário</th>
        <th>Data do Último Acesso</th>
        <th>Status do Acesso</th>
        <th>Senha do Usuário</th>
    </tr>
    <tr>
        <td> $operatorid </td>
        <td> $vclogin </td>
        <td> $dtmlastvisited </td>
        <td> $istatus </td>
        <td> $senha_randomica </td>
    </tr>
</table>"
        );
    }
}
mysql_free_result($query); 
mysql_close($conexao);

if(!$ok){
    echo("<meta http-equiv=\"refresh\" content=\"" . $sec . "\">"); 
}
?>
    
02.04.2015 / 15:00