随机刷新"令牌"

时间:2016-02-28 11:02:16

标签: php mysql

我的脚本从文件text.txt中读取电子邮件,我想为mySQL数据库中的每封电子邮件记录电子邮件和唯一的随机代码。所有工作都是正确的,但每次我得到相同的#34;随机代码"。

I get this:
example1@stack.com vsdggd
example2@stack.com vsdggd
example3@stack.com vsdggd
I want to get:
example1@stack.com bsgfdg
example2@stack.com jhngfv
example3@stack.com sdfasd

代码:

<?php
function generatePassword($length = 6){
  $chars = 'abcdefhiknrstyz';
  $numChars = strlen($chars);
  $string = '';
  for ($i = 0; $i < $length; $i++) {
    $string .= substr($chars, rand(1, $numChars) - 1, 1);
  }
  return $string;
}


include('../connect.php');
$query = 'insert into cc (email,token) values ("%s","'. generatePassword(6) .'");';

$lines = file('text.txt');//your filename
for($i=0; $i < count($lines); $i++){
mysql_query(sprintf($query, mysql_real_escape_string($lines[$i]))) or die(mysql_error() . '<br><br>' . '<b>Query:</b> ' . $query);
}
?>

1 个答案:

答案 0 :(得分:1)

您只需调用generatePassword()一次,按原样修复代码:

<?php
function generatePassword($length = 6){
  $chars = 'abcdefhiknrstyz';
  $numChars = strlen($chars);
  $string = '';
  for ($i = 0; $i < $length; $i++) {
    $string .= substr($chars, rand(1, $numChars) - 1, 1);
  }
  return $string;
}


include('../connect.php');
$query = 'insert into cc (email,token) values ("%s","%s");';

$lines = file('text.txt');//your filename
for($i=0; $i < count($lines); $i++){
    mysql_query(sprintf($query, mysql_real_escape_string($lines[$i]), generatePassword(6))) or die(mysql_error() . '<br><br>' . '<b>Query:</b> ' . $query);
}
?>

这样就可以为每一行调用generatePassword()。

此外,您应该使用较新的mysqli或理想的PDO,因为旧的mysql已被弃用且已从PHP7中删除。