Ir para conteúdo

POWERED BY:

Arquivado

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

nknk

Nome de Função c/ variavel dentro de um loop

Recommended Posts

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

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

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

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

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

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

×

Informação importante

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