nknk 3 Denunciar post Postado Agosto 12, 2007 Gostaria de saber se é possível colocar uma váriavel no nome de uma função porque no código abaixo não funciona.$i=1; do {function função$i(...) {}i++;}while (...)A idéia seria criar uma nova função a cada vez que se executa o do: função1...função2...função3...função4 Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 12, 2007 Use call_user_func(). Abraços, Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Agosto 12, 2007 Eu não entendi direito. Vou explicar: Estou querendo atualizar uma tabela da seguinte forma: $sql = mysql_query("SELECT * FROM tabela");$contar = mysql_num_rows($sql);echo $contar;$id="1";function RandomPass($numchar){ $letras = "1,2,3,4,5,6,7,8,9,0"; $array = explode(",", $letras); shuffle($array); $senha = implode($array, ""); return substr($senha, 0, $numchar); } do {$sql3 = mysql_query("SELECT * FROM tabela WHERE id='$id'");$senha = RandomPass(6);$sql2 = "UPDATE tabela SET senha='$senha'";$resultado = mysql_query($sql2) or die("Erro: ".mysql_error());echo $resultado;$id++;}while($id < $contar) O problema é que todas a senhas estão iguais Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 13, 2007 Acho que entendi errado. Pensei que você queria usar o valor de uma variável no nome de uma função. O erro está nos argumentos de implode(). O elemento que servirá como elo dos elementos deve ser o primeiro: $string = implode("", $array); Abraços, Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Agosto 13, 2007 Não funcionou.Eu importei uma tabela com 100 cadastros(usuários), só que nela tem o campo senha. Eu preciso criar uma senha diferente para cada registro dessa tabela. Só que ele coloca a mesma senha para cada registro, por ex.: id - nome - senha1 - usuario1 - 3053f2 - usuario2 - 3053f3 - usuario3 - 3053f Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Agosto 13, 2007 Testei seu código e ele gerou senhas diferentes. Veja como fiz: function RandomPass($numchar){ $letras = "1,2,3,4,5,6,7,8,9,0"; $array = explode(",", $letras); shuffle($array); $senha = implode("", $array); return substr($senha, 0, $numchar); } $i = 0; do { $senha = RandomPass(6); echo $senha . "<br />"; $i++;} while($i < 10) Veja a função range(). Ela lhe será útil para criar o array com as letras e números para a senha. Abraços, Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
Eduardo Dantas Correia 0 Denunciar post Postado Abril 1, 2015 Pessoal, apesar de velho este post é justamente o que eu estou procurando para resolver a mesma questão, porém com um código um pouco diferente (segue abaixo) onde, apesar do loop, todas as senhas são geradas iguais e não uma diferente para cada registro, alguém pode ajudar? Obrigado ----------- PHP --------------------- <?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))); printf("<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 . "\">"); } ?> -------------/ PHP ------------------ Compartilhar este post Link para o post Compartilhar em outros sites