2016-04-25 9 views
0

私は現在、ページの管理者が注文に応じて特定の量の新規ユーザーを生成できるWebページを作成しています。今では、新しいユーザー、1-manyを追加する機能が働いています。新しいメンバーを作成するときには、独自の「ランダム」なライセンスはありません。同じgenerateの下で作成されたすべてのユーザーは同じです。ループごとに一意のLicenseIDとパスワードを作成

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これは毎秒新しい値を生成するだけです。 1秒に何回も呼び出された場合、同じ値になります。それは決してランダムではありません。任意の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'は複数の時間を1秒間に実行する場合にこれを修正します – urfusion

+0

関数が特定のマイクロ秒で複数回実行されるとどうなりますか?これは良い解決策ではありません。 –

関連する問題