2014-05-10 54 views
0

我有2個PHP文件「source.php」和「target.php」。在source.php部分我有,客戶端表單驗證點擊SUBMIT

<form method="POST" id="form1" action="target.php"> 
... 
<input type="submit" name="submit" value="Submit"/> 
</form> 

當我點擊提交轉移到「target.php」(即使我有形式錯誤),但我想的是,只有所有表單後字段進行驗證後會轉到目標頁面,否則會顯示某種警告消息並保留在同一頁面上。請幫忙!也許這對某些人來說是一個愚蠢的問題,但我是一個初學者。 (我知道如何做所有的現場驗證和它的工作正常)。

+2

您需要使用Javascript驗證它們。請閱讀http://www.thesitewizard.com/archive/validation.shtml –

+0

'type =「submit」'no'type =「sumbit」' –

+0

如果您將表單提交到另一個文件,您需要驗證表單在JavaScript和防止錯誤提交,否則你的表單將被定向到第二個文件。 – MSadura

回答

0

重複問題重複。請在下次發帖之前進行徹底搜索。

通常使用javascripts進行驗證。但有些情況下,javascripts變得效率低下,例如,當您需要驗證國家及其狀態時。將實際發送到客戶端的國家和州的完整列表不切實際。在這種情況下,使用AJAX。通過使用AJAX,客戶端在用戶輸入數據後立即將數據發送到服務器,然後僅提取所需的數據。它在客戶端和服務器之間同時進行雙向通信,例如,如果用戶輸入國家名稱爲INDIA,使用INDIA的AJAX狀態進行驗證,從而節省帶寬。 JavaScript和AJAX是不容易學,你必須研究試用無誤不同codes.Just谷歌「的JavaScript表單驗證」 ......

這是W3Schools的...

必填項 下面的函數檢查一個字段是否被留空。如果該字段爲空,一個警告框提醒消息,該函數返回false,並在窗體不會被提交:

function validateForm() 
{ 
    var x=document.forms["myForm"]["fname"].value; 
    if (x==null || x=="") 
    { 
     alert("First name must be filled out"); 
     return false; 
    } 
} 

當表單提交的以上功能可以被稱爲:

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> 
First name: <input type="text" name="fname"> 
<input type="submit" value="Submit"> 
</form> 

這裏是更基本的例子http://www.w3schools.com/js/js_form_validation.asp

好運

0

您可以使用AJAX來驗證您的表單。 JavaScript不推薦用於表單驗證。 對AJAX驗證一個簡單的教程,請here

但要知道,即使你是驗證您的表單提交之前target.php,始終確保您檢查數據target.php了。這是因爲JavaScript可以在瀏覽器中改變(感謝現代DOM解釋器)。可以這樣做,以便表單在未經AJAX驗證的情況下提交。所以你應該在提交之前和之後檢查兩次。

此外請確保轉義數據,因爲用戶輸入永遠不會被信任。 您還應該使用strip_tags($string)以防止使用插入php代碼。

+1

不,在您真正發佈表單之前使用ajax驗證表單是個壞主意。這意味着你實際上正在向服務器做兩次往返發佈表單,其中第一個已經發送了所有數據。使用JavaScript進行客戶端驗證就好了。但是否使用客戶端驗證,您**總是**必須使用服務器端驗證。 – Arjan

+1

@Arjan通過ajax驗證,我的意思是檢查用戶名可用性,正確的電子郵件格式等。但是,我們必須始終使用服務器端驗證,因爲我們不知道數據是什麼。它可能是任何東西,php代碼,SQL注入技術等。 –

+0

確實,您可以使用ajax來檢查用戶名是否可用。但是,當用戶輸入用戶名時,應該這樣做,而不是在他提交表單時。 (並且存在一些安全問題,因爲通過用戶名列表很容易找出哪些是用戶名。)另外,您還需要在提交表單時驗證用戶名。我也忘了提及'strip_tags()'是潛在問題的錯誤解決方案。 (如果使用'eval()',插入php代碼只是一個問題。)'echo strip_tags('foo Arjan

0

JavaScript很可能是最簡單的方法(閱讀其他文章)。

但是,如果你不想使用JavaScript,你可以隨時檢查,如果一切形式使用set isset()或類似的東西,然後通過對$_POST變量在URL中使用$_GET抓住那些。當然,請確保URL中沒有任何敏感信息。另外:你總是可以使用全局變量。

另一種不使用JavaScript的方法是在經過多次檢查(例如轉義字符串等)後提交給數據庫,甚至可能是加密的,但我不建議這樣做,因爲這是漫長的。