2012-12-03 50 views
-1

我想顯示一條消息(如jquery),如果我的表單的一些提交是空的。彈出窗口或其他東西。在我CONTROLER我有這樣的代碼片段:如何在Codeigniter中彈出驗證表單消息?

if($this->form_validation->run() == FALSE) 
    { 
     $this->load->view('registry_v'); 
     //Here I want to show some message, some popup or anything (not echo) 
     //Saying that some field is missing or empty. 
    } 
+0

是否有任何理由想要做這個服務器端?爲什麼不使用JavaScript來做到這一點? –

+0

@Aristos謝謝你指出,我不知道! –

+0

如何(服務器端與否)無關緊要,我想盡可能地做到這一點。 – user1822263

回答

1

這樣做服務器端將是相當痛苦的。你想爲這種事情使用JavaScript。但是,可能會在客戶端禁用JavaScript,因此您希望優雅地降級爲其他選項,如字段下面的簡單標籤或類似內容。

什麼是在服務器端雖然是呼應從PHP代碼一些JavaScript可能的,儘管這可能不是好的做法。我個人反對,但是你決定如何去做。

1

下面是一個例子,你應該如何爲你的任務做:

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function validateForm() 
{ 
var age = document.forms["myForm"]["age"].value; 

if (age == null || age == "") 
    { 
    alert("Enter your age."); 
    return false; 
    } 


} 
</script> 
</head> 

<body> 
<form name="myForm" action="age.php" onsubmit="return validateForm()" method="POST"> 
Age: <input type="text" name="age"> 
<input type="submit" value="Submit"> 
</form> 
</body> 

</html> 

像這是檢查客戶端的機器使用Javascript上輸入任務的常用方法。然而,客戶端的輸入不應該被信任(他可以犯錯誤,他可以嘗試提供不正確的數據,他可以嘗試執行像SQL注入這樣的攻擊),所以你應該總是再次檢查他的輸入,但是在服務器上已經。

基本邏輯:
1)。檢查客戶端機器上的客戶端輸入。如果有問題 - 給他一個警報/寫一個錯誤。如果檢查完成沒有任何錯誤 - 接受用戶輸入並將其發送到服務器。 (由Javascript/JQuery執行)
2)。在使用此輸入執行服務器邏輯之前,請再次在服務器端檢查用戶輸入(防止SQL注入和其他潛在危險的客戶端操作)。 (由後端語言執行,PHP就是你的情況)。

至於你的任務,你可以用你的提醒功能回顯腳本部分。但是,這種做法是完全錯誤的,因爲:

  • 它增加了服務器的負載,以及當編程網站正試圖減少用戶的請求到服務器,以最小你的主要目標。要做到這一點,你應該做盡可能多的客戶端計算和檢查儘可能(同時保持你的安全。不要忘記,用戶可以檢查腳本來源,看看他的方面如何計算數據。)
  • 它仍然使用JavaScript,那麼爲什麼不從客戶的網頁開始呢?
  • 它創造的代碼更爲複雜,更難讀,組織化程度較低

所以你只是進行不必要的服務器請求,並應避免。

基本上,檢查客戶端的輸入,執行您的業務邏輯(沒有人應該看到)和數據庫在服務器端的工作。

此外,我會建議你閱讀一些基本的PHP /網絡開發書籍,學習與用戶交互的基本邏輯,它將爲您節省很多時間。