2015-04-18 49 views
1

我似乎無法找到任何東西,我也不能在嘗試幾個小時後修復它我自己!循環不斷得到相同的字符串

的代碼是這樣的:

function generatecode() 
{ 
    $token = md5(uniqid(rand(), true)); 
    return $token; 
} 


$number = $_POST['number']; 
$service = $_POST['service']; 
$token = generatecode(); 
if ($service == ""){ 

} 
else { 
    for ($x = 0; $x <= $number; $x++) { 
     $con = mysql_connect($host,$username,$password); 
     mysql_select_db("$db_name", $con); 
     mysql_query("INSERT INTO tokens (id, token, service, used, usedby) VALUES(NULL, '$token','$service','0','')"); 
    } 
} 

上述代碼是假設作爲要與一個簡單的整數[POST],以產生一個字符串隨機多次。

當循環這一切它出來只有1唯一的ID時,他們應該已經(5),

和1號將成爲所有字符串(31a66b9885dba85316d399d6e898b308)是相同的,所以它看起來是這樣的:

- 31a66b9885dba85316d399d6e898b308 
- 31a66b9885dba85316d399d6e898b308 
- 31a66b9885dba85316d399d6e898b308 
- 31a66b9885dba85316d399d6e898b308 
- 31a66b9885dba85316d399d6e898b308 

如果有人明白我想說,請你離開,就如何解決這樣的評論,謝謝!

回答

2

你應該調用該函數在每次迭代中得到另一種:

function generatecode() { 
    $token = md5(uniqid(rand(), true)); 
    return $token; 
} 

$number = $_POST['number']; 
$service = $_POST['service']; 
if ($service == ""){ 

} 
else { 
    for ($x = 0; $x <= $number; $x++) { 
     $con = mysql_connect($host,$username,$password); 
     // instead of outside, put it inside the loop 
     $token = generatecode(); 
     mysql_select_db("$db_name", $con); 
     mysql_query("INSERT INTO tokens (id, token, service, used, usedby) VALUES(NULL, '$token','$service','0','')"); 
    } 
} 

我建議用預處理語句使用PDO。在本次修訂中,您不需要每次調用/連接,也可以在外部進行連接,並準備語句,這也會使您的查詢更安全地進行SQL注入。

if (!empty($_POST['service'])){ 

    $number = $_POST['number']; 
    $service = $_POST['service']; 

    $db = new PDO("mysql:host={$host};dbname={$dbname}", $username, $password); 
    $insert = $db->prepare("INSERT INTO `tokens` (id, token, service, used, usedby) VALUES(NULL, :token, :service, '0', '')"); 
    for ($x = 0; $x <= $number; $x++) { 
     $token = generatecode(); 
     $insert->execute(array(
      ':token' => $token, 
      ':service' => $service, 
     )); 
    } 
} 
else { 
    // do something else 
} 
+0

謝謝,它的工作,你是我的救星! – Melternet

+0

肯定@Melternet我很高興這有助於 – Ghost

相關問題