2016-04-25 5 views
0

В настоящее время я создаю веб-страницу, где администратор на странице может генерировать определенное количество новых пользователей (в зависимости от заказа). В настоящее время работает функция добавления новых пользователей - 1-много. Хотя, когда я создаю новых членов, у них нет уникальных «случайных» -лицензий. Все пользователи, созданные под одним и тем же генератором, имеют одинаковые имена.Создайте уникальные идентификаторы и пароль для каждого цикла

admin.php (код с формой и функциями)

<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> 

    <meta charset="UTF-8"> 

    <title>Generera licenser</title> 
<meta http-equiv="content-type" content="text/html" charset="ISO-8859-1" /> 



</head> 



<?php 
include('template.php'); 
if(isset($_POST['email']))   //inkluderar template och hämtar inlogg// 
{ 
$characters = "abcdefghijklmnopqrstuvwxyz"; 

function genRandomString($length = 10) { 
    $characters ='abcdefghijklmnopqrstuvwxyz'; 
    $string = ''; 
    for ($p = 0; $p < $length; $p++) { 
    $string .= $characters[mt_rand(0, strlen($characters))];  //funktion för slumpmässig kod// 
    } 
    return $string; 
} 
    $courseID = '1'; 
    $antal = $_POST['antal']; 
    $role = '3'; //Detta gör att användaren som skapas får rollvärdet 3//* 
    $password = genRandomString();//genererar slumpmässig kod för licens och lösenord// 
    $licenseID = genRandomString(); 



mysql_query('SET character_set_results=utf8'); 
mysql_query('SET names=utf8'); 
mysql_query('SET character_set_client=utf8'); 
mysql_query('SET character_set_connection=utf8');  //dessa löser åäö inmatningar till databasen.(Kan vara redundanta). 
mysql_query('SET character_set_results=utf8'); 
mysql_query('SET collation_connection=utf8_swedish_ci'); 

for($tmp = 1; $tmp <= $antal; $tmp++){ 
    $query = <<<END 

    INSERT INTO user(email, company, courseID, password, licenseID, role) 
    VALUES('{$_POST['email']}','{$_POST['company']}', '$courseID', '$password','$licenseID', '$role'); 


END; 

     //För in data från formuläret till databasen via poster.// 

    $mysqli->query($query) or die(mysql_error()); 
} 
header('Location:Bekraftat.php'); //När genereringen är genomförd skickas man till en bekräftelse sida. 

} 
$content = <<<END 
<div class="row"> 
     <div class="container"> 
     <div class="jumbotronadmin"> 
      <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="email" placeholder="Email" maxlength="40" pattern="[A-Za-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$" title="Ej en legitim emailadress" required> 
       </div> 
       <div class="form-group"> 
       <input type="text" class="form-control" aria-describedby="basic-addon1" name="company" placeholder="Företag" maxlength="40" patter="[A-Za-z0-9]+$" required> 
       </div> 
       <div class="form-group"> 
       <input type="text" class="form-control" aria-describedby="basic-addon1" name="antal" placeholder="Antal licenser" maxlength="3" pattern="[0-9]+$" title="OBS! Endast siffror" required> 
       </div> 
       <div class="form-group"> 
       <div class="checkbox"> 
        <label> 
         <input type="checkbox" aria-describedby="basic-addon1" name="courseID"><p>Webbutbildningen i brandskyddskunskap</p> 
        </label> 
       </div> 


       </div> 
       <br> 

       <input type="submit" class="btn btn-default" value="Generera"> 



       </form> 
      </div><!-- Stänger jumbotronen --> 
      </div><!-- Stänger jumbotronadmin --> 
     </div><!-- Stänger container --> 
     </div><!-- Stänger row --> 
END; 

    //innehållet på admin.php med formulär// 

    echo $navigation_admin; 
    echo $content; 
    echo $header; 
    // hämtar navigationsmenyn för admin, innehåll och logotyper.// 
    ?> 

Итак, мой вопрос, есть ли у вас какие-либо идеи, как сделать цикл, который создает уникальные лицензии и пароли?

+0

Регенерация случайные строки ('$ password' и' $ licenseID') внутри цикла. Вы генерируете его только один раз за пределами цикла. –

+0

как @ SverriM.Olsen говорят генерировать внутренний цикл и для более уникальной попытки генерировать с помощью 'md5 (time());'. – urfusion

+0

@urfusion Это будет генерировать только новое значение каждую секунду. Если вы вызываете несколько раз в секунду, вы получите то же значение. Это также не случайно. Для любой заданной отметки времени UNIX вы можете просто MD5 их, и вы получите хэш. –

ответ

-1

Согласно текущему коду, исправить это, вам нужно вызвать функцию genRandomString внутри вашего цикла.

for ($tmp = 1; $tmp <= $antal; $tmp++) { 
    $password = genRandomString(); 
    $licenseID = genRandomString(); 
    $query = <<<END 

    INSERT INTO user(email, company, courseID, password, licenseID, role) 
    VALUES('{$_POST['email']}','{$_POST['company']}', '$courseID', '$password','$licenseID', '$role'); 


END; 

    //För in data från formuläret till databasen via poster.// 

    $mysqli->query($query) or die(mysql_error()); 
} 

И если вы хотите когда-нибудь нон repitive строку попробуйте

function genRandomString($length = 10) { 

    $string = md5(microtime()); 

    return $string; 
} 
+0

Как помещать PHP-код внутри строки исправить что-нибудь? –

+0

'Microtime' исправит это, если работает несколько раз в секунду – urfusion

+0

Что делать, если функция запускается более одного раза на конкретную микросекунду? Это нехорошее решение. –

Смежные вопросы