通过一个操作存储的唯一随机密码和许可证号

时间:2016-04-04 12:10:42

标签: php mysql

我目前正在开展一个用户登录教育门户的项目。用户应该使用随机生成的许可证和密码登录。

为什么他们需要随机?

用户是工作场所的一部分,负责安全的人员决定雇用的每个人都需要参加“工作场所的火灾危险”教育。这是为了在工作空间中保持所需的安全水平。

安全负责人向二十名员工下订单。教育门户的管理员确认订单并生成20个许可证和密码。密钥在“user”下生成并存储在数据库中,然后发送给订购它们的公司。一旦员工收到登录信息,他们就可以将他们的名字附在许可证上,以证明他们已经通过了教育。

无论如何,我在创建和存储密钥时遇到了麻烦。这是我目前的代码。

{
function genRandomString($length = 10) {
    $characters = ‘0123456789abcdefghijklmnopqrstuvwxyz’;
    $string = ”;
    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters))];
    }

    return $string;

INSERT INTO user(email, company, courseID, no_licenses, password, licenseid)

    VALUES('{$_POST['email']}','{$_POST['company']}','{$_POST['courseID']}', '{$_POST['antal']}', '{genRandomString, . random_string(10)}',{'genRandomString, . random_string(10)'})

现在我用它来测试genRandomString。随机字符串只是“genRandomString”而不是随机字符串。有谁知道为什么这个功能不起作用?

这是我的第一个问题。如果我将其格式化错误或任何其他内容,我很抱歉。

提前致谢。

我尝试了一些答案的组合,我很感激。它现在似乎生成一个随机字符串,虽然没有插入数据。我得到了几个未定义的变量错误。我不确定是什么问题。

  Notice: Use of undefined constant ‘0123456789abcdefghijklmnopqrstuvwxyz’ - assumed '‘0123456789abcdefghijklmnopqrstuvwxyz’' in C:\xampp\htdocs\Webbprojekt\admin.php on line 15
”gim�ts2ymc
Notice: Undefined variable: pass in C:\xampp\htdocs\Webbprojekt\admin.php on line 28

Notice: Undefined variable: license in C:\xampp\htdocs\Webbprojekt\admin.php on line 29

Notice: Undefined variable: sql in C:\xampp\htdocs\Webbprojekt\admin.php on line 31

Notice: Undefined variable: pass in C:\xampp\htdocs\Webbprojekt\admin.php on line 32

Notice: Undefined variable: license in C:\xampp\htdocs\Webbprojekt\admin.php on line 34
Error, insert query failed

这是整个代码。

<head>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <title>Generera Licenser</title>
</head>

<?php
include('template.php');

if(isset($_POST['email']))

{
function genRandomString($length = 10) {
    $characters = ‘0123456789abcdefghijklmnopqrstuvwxyz’;
    $string = '”';
    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters))];
    }

    return $string;
}

echo genRandomString();

    $query = <<<END
     $pass = genRandomString();
     $license = genRandomString(); 
     $sql = "INSERT INTO
 user(email, company, courseID, antal, password, licenseid) 
 VALUES('{$_POST['email']}','{$_POST['company']}','{$_POST['courseID']}',  
        '{$_POST['antal']}', '$pass','$license')";


END;
    $mysqli->query($query) or die ('Error, insert query failed');

echo 'Nya licenser har lagts till i databasen';

}
 $content = <<<END
 <div class="row">
         <div class="container">
            <div class="jumbotron">

          <div class="container">

  <h2>Generera Licenser</h2>


            <form action="admin.php" method="post">
              <div class="form-group">
              <input type="text" class="form-control" aria-describedby="basic-addon1" name="company" placeholder="Företag">
              </div>
              <div class="form-group">
              <input type="text" class="form-control" aria-describedby="basic-addon1" name="email" placeholder="Email">
              </div>
              <div class="form-group">
              <input type="text" class="form-control" aria-describedby="basic-addon1" name="antal" placeholder="Antal licenser">
              </div>
              <div class="form-group">
                <div class="checkbox">
                    <label>
                        <input type="checkbox" aria-describedby="basic-addon1" name="courseID">Licenser till Webbutbildningen i Allmän brandskyddskunskap
                    </label>
                </div>

                 <div class="checkbox">
                    <label>
                        <input type="checkbox" aria-describedby="basic-addon1" name="role">Skapa en ny administrativ användare
                    </label>
                </div>
                </div>
              <input type="submit" class="btn btn-default" value="Beställ">
              </form>
            </div><!-- Stänger jumbotronen --> 
         </div><!-- Stänger container --> 
      </div><!-- Stänger row --> 
END;
  echo $navigation;
  echo $content;
  echo $header;
  ?>

2 个答案:

答案 0 :(得分:0)

function genRandomString($length = 10) {
   $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
   $string = "";
   for ($p = 0; $p < $length; $p++) {
      $string .= $characters[mt_rand(0, strlen($characters))];
   }
  return $string; 
}

echo genRandomString();

这是你的功能,检查它。

如果您在将其插入数据库时​​遇到问题。那么我认为创建变量然后在查询中使用这些变量,如下所示。

$email= //get your email
$company= //get your company
$courseId= //get your courseId
$company= //get your no_licenses
$password= //get your password
$licenseid= //get your licenseid

INSERT INTO user(email, company, courseID, no_licenses, password, licenseid)
values ($email,$company,$courseId,$no_licenses,$password,$licenseid)

答案 1 :(得分:0)

函数genRandomString似乎没问题。但是在sql创建过程中操作字符串的方式对我来说似乎很奇怪。

这个怎么样:

$pass = genRandomString();
$license = genRandomString(); 
$sql = "INSERT INTO
 user(email, company, courseID, no_licenses, password,    licenseid) 
 VALUES('{$_POST['email']}','{$_POST['company']}','{$_POST['courseID']}',  
        '{$_POST['antal']}', '$pass','$license')";