我正在codeigniter網站上工作,客戶已要求隱藏數據表中的價格列,除非用戶輸入正確的密碼(他們會給出正確的密碼通過電話向客戶提供)。Codeigniter - 如何顯示通過ajax輸入密碼後的信息
顯而易見的方法是使用戶登錄,然後顯示包含價格的新表/頁面。
我可以通過AJAX實現嗎?即出現一個對話框,用戶輸入密碼,發送一個請求並添加一個包含價格的新表格?
我是Codeigniter的新手,但我每天都在學習,請有人指點我的方向?
感謝 丹
我正在codeigniter網站上工作,客戶已要求隱藏數據表中的價格列,除非用戶輸入正確的密碼(他們會給出正確的密碼通過電話向客戶提供)。Codeigniter - 如何顯示通過ajax輸入密碼後的信息
顯而易見的方法是使用戶登錄,然後顯示包含價格的新表/頁面。
我可以通過AJAX實現嗎?即出現一個對話框,用戶輸入密碼,發送一個請求並添加一個包含價格的新表格?
我是Codeigniter的新手,但我每天都在學習,請有人指點我的方向?
感謝 丹
其實它並不是真正的代碼點火器問題,更多的JavaScript。在ci中添加一個控制器函數,通過ajax調用(強烈推薦使用jquery這樣的javascript框架)。
爲了保持簡單,您可以將密碼添加到請求中。控制器功能檢查密碼,如果其正確,則迴應價格。
的JavaScript代碼可能看起來類似的東西:
$.ajax({
type: "POST",
url: 'controller/function',
data: {'password': $('#password').attr(value)},
success: function(data){
$('#price').html(data);
},
});
你可以通過AJAX實現它:它的工作是這樣的:
1)用戶在框中輸入密碼,然後點擊按鈕
2)點擊事件上按鈕觸發以下內容:
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'getPrices.php', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.readState == 200)
putPricesIntable(xmlhttp.responseXML)
}
}
xmlhttp.send('password=' + 'password');
這個問題對於特定的語言或框架確實很少,但更多的是關於如何最好地解決問題。這種情況下的問題是僅在正確輸入密碼的情況下顯示一列。所以首先你需要有一個允許網站用戶輸入密碼的方法。如何做到這一點再次是毫不相關的,它可能是一個頁面上的表單,或者它可能是一個單獨的頁面。
一旦提交密碼並發現密碼正確,就需要爲用戶創建一個會話。這個會話基本上會告訴頁面是否顯示該列。
您可能不想完全依賴ajax方法,就好像用戶禁用JavaScript一樣,他們將永遠無法看到該列,而只能使用JavaScript來增強網站的可用性。
阿賈克斯只是意味着你的登錄控制器將返回一些機器可讀(JSON/XML),而不是HTML。
你的控制器真的只需要設置一個會話變量。
class Login extends Controller {
function __construct() {
parent::Controller();
$this->load->model('user_m');
}
function json_login() {
$user = $this->user_m->get_user($_POST['username']);
if($user->password == md5($_POST['password'])) {
$this->session->set_userdata('username',$user->username);
print json_encode($this->user);
}
else {
print json_encode(FALSE);
}
return;
}
function logout() {
$this->session->destroy();
redirect('/theloginpage');
}
}
假設你正在使用jQuery的JavaScript的Ajax調用可以工作是這樣的:
$('#login_form').submit(function(event) {
event.preventDefault();
$.ajax({
type:"POST",
data:$(this).serialize(),
dataType:"json",
url:"/login/json_login",
success: function(data) {
if(data['username'] != null) {
$(this).append('<p>You are now logged in</p>');
reload_table_data();
}
else if(data == flase){
$(this).append('<p>Fail whale, wrong username or password</p>');
}
}
});
}
現在顯示的是數據檢查時,如果「用戶名」已在會議中設置。另外不要忘記創建銷燬會話的註銷方法。您可以將表格數據作爲html代碼片段返回,並直接將其插入到DOM或json/xml循環中。
登錄表單可以顯示在頁面上的任何地方,並有大量的jQuery的,道場,原型等庫,它會提供一個對話框。