2017-09-25 52 views
0

這裏我有代碼將在其中創建用戶,他們必須輸入由admin給出的一個訪問代碼。該訪問碼受限於某些用戶,如1020。之後,它顯示錯誤,如your accesscode is limited。所以到現在爲止,它工作正常。如果該特定內容不在數據庫中,則顯示錯誤消息

現在,如果用戶嘗試輸入admin未給出的訪問碼,它必須顯示錯誤消息,如your accesscode is wrong

這裏是我的代碼:

<?php 
require('../config.php'); 
require_once($CFG->dirroot . '/user/editlib.php'); 
$errorMessage = ''; 
$successMessage = ''; 
if(isset($_SESSION['successMessage'])) { 
    $successMessage = $_SESSION['successMessage']; 
    unset($_SESSION['successMessage']); 
} 

if (isset($_POST['register'])) { 
    $errors = array(); 
    $data = array(); 
    $chk_sql = "SELECT * FROM {user} u where username = ?"; 
    if (!empty($chk_sql)) { 
     $errorMessage = 'Username already taken'; 
    } 
    if(!$chk_username = $DB->get_record_sql($chk_sql, array($_POST['username']))) { 
     $secret = $_POST['secret']; 
     $access_code_sql = "SELECT * FROM {accesscode} WHERE random_no= ? and `number` > `used` and status=1"; 
     if($chk_secret = $DB->get_record_sql($access_code_sql, array($secret))) { 
      $cadminid = $chk_secret->cadmin_id; 
      $clientid = $chk_secret->clientid; 
      $DB->execute("UPDATE {accesscode} SET used = used+1 WHERE random_no = '$secret'"); 

      $insert_record = new stdClass(); 
      $insert_record->firstname = $_POST['firstname']; 
      $insert_record->lastname = $_POST['lastname']; 
      $insert_record->username = $_POST['username']; 
      $insert_record->secret = $secret; 
      $insert_record->password = password_hash($_POST['password'], PASSWORD_DEFAULT); 
      $insert_record->timecreated = time(); 
      $insert_record->maildigest = $cadminid; 
      $insert_record->maildisplay = $clientid; 
      $insert_record->idnumber = 1; 
      $insert_record->mnethostid = 1; 
      $insert_record->confirmed = 1; 
      $insert_record->email = $_POST['email']; 
      if ($result = $DB->insert_record('user', $insert_record)) { 
       $_SESSION['successMessage'] = "record created successfully"; 
       header('Location: register.php'); 
      } else 
       $errorMessage = "error! can you please try again"; 
     } else 
      $errorMessage = "your access code limit completed"; 
    } 
} 
?> 

回答

0

你能不能給我們介紹一下你的問題的更多信息?什麼不行?在你的循環中嘗試一些「var_dump()」來知道你是否通過了,所以你可以告訴我們問題在哪裏!

但我看到的第一件事是在這裏:

if(! $chk_username = $DB->get_record_sql($chk_sql, array($_POST['username']))) 

這裏:

if($result = $DB->insert_record('user', $insert_record)) 

你應該用 「==」 或 「===」,因爲使用 「=」 是指分配一個值爲「$ chk_username」和「結果」。

然後這裏是一些LIBRAIRIE,如果你想顯示提示信息,你可以使用,這僅僅是爲您的信息: https://github.com/plasticbrain/PhpFlashMessages

如果你想這樣做的JS,你可以使用:https://github.com/CodeSeven/toastr

希望它有幫助!

+0

沒有actually..i顯示此消息的errorMessage $ = 「您的訪問代碼限制完成」;一個條件..如果不是這種情況,我需要顯示另一個錯誤信息 – user200

+0

我明白,但問題是,你不能顯示錯誤信息,對不對?嘗試使用「==」而不是「=」,因爲如果使用帶「=」的「if」語句,它將在100%的時間內爲真,因爲您分配了值,所以您不會將它們進行比較 –

+0

ok ..如果我使用==我怎麼可以寫另一個這種條件..你可以請epxlain我.. – user200

0

我不變的情況類似這樣

<?php 
require('../config.php'); 
require_once($CFG->dirroot . '/user/editlib.php'); 

$errorMessage = ''; 
$successMessage = ''; 
if(isset($_SESSION['successMessage'])) 
{ 
$successMessage = $_SESSION['successMessage']; 
unset($_SESSION['successMessage']); 
} 

if (isset($_POST['register'])) { 
$errors = array(); 
$data = array(); 
$chk_sql = "SELECT * FROM {user} u where username = ?"; 
if (!empty($chk_sql)) { 
    $errorMessage='Username already taken'; 
    } 
if(!$chk_username = $DB->get_record_sql($chk_sql, array($_POST['username'])) 
) 
{ 
$secret = $_POST['secret']; 
$access_code_sql = "SELECT * FROM {accesscode} WHERE random_no= ? and 
status=1"; 
if($chk_secret = $DB->get_record_sql($access_code_sql, array($secret))) 
{ 

if ($chk_secret->used >= $chk_secret->number) { 
$errorMessage = "your access code limit completed.."; 
}else 
{ 
$cadminid = $chk_secret->cadmin_id; 
$clientid = $chk_secret->clientid; 
$DB->execute("UPDATE {accesscode} SET used = used+1 WHERE random_no = '$secret'"); 

$insert_record = new stdClass(); 
$insert_record->firstname = $_POST['firstname']; 
$insert_record->lastname = $_POST['lastname']; 
$insert_record->username = $_POST['username']; 
$insert_record->secret = $secret; 
$insert_record->password = password_hash($_POST['password'], 
PASSWORD_DEFAULT); 
$insert_record->timecreated = time(); 
$insert_record->maildigest = $cadminid; 
$insert_record->maildisplay = $clientid; 
$insert_record->idnumber = 1; 
$insert_record->mnethostid = 1; 
$insert_record->confirmed = 1; 
$insert_record->email = $_POST['email']; 
if($result = $DB->insert_record('user', $insert_record)) 
{ 
$_SESSION['successMessage'] = "record created successfully"; 
header('Location: register.php'); 
} 
else 
$errorMessage = "error! can you please try again"; 
} 
} 
else 
$errorMessage = "your access code is wrong.."; 
} 

} 
?> 

它的工作..

相關問題