2011-03-24 86 views
2

我是新來的PHP和Web的東西。我有一個任務,通過PHP在JavaScript和服務器上驗證客戶端的註冊表單。我不明白這意味着什麼。驗證註冊表客戶端與JavaScript和服務器端與PHP

我提出的寄存器形式,並且驗證所有字段與JavaScript

<form name="register" onSubmit="return validateForm()"> 
//...code display form here... 
<input type="submit" name="Submit" value="Submit"> 
</form> 

<script language="javascript"> 
//...validate function here... 
function validateForm() { 
//... 
} 
</script> 

我把上面的代碼中register.php。現在我該如何在PHP服務器端進行驗證?我需要創建一個新的php文件並使用post方法將數據從這個register.php傳遞到新的?並在驗證後,我發佈數據返回註冊錯誤,如果有?

我知道如何在PHP中進行驗證表單,但我不知道如何將一個javascript驗證的客戶端表單連接到php驗證服務器表單。

另外需要的是,如果出現問題,重新加載頁面並顯示錯誤給用戶,所有輸入的數據都必須保留。

這也是我不知道該怎麼做的。你能告訴我怎麼做,或者一些非常簡單的代碼片段?幫助真的很感激。提前致謝。

回答

0

的所有功能於一身的文件格式處理程序將是這個樣子:

myfile.php:

<?php 

$errors = array() 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (isset($_POST['name']) && !empty($_POST['name'])) { 
     $name = $_POST['name']; 
    } else { 
     $errors[] = "Please provide your name"; 
    } 
} 
?> 

<html> 

<head> 
    <title>Name Form</title> 
</head> 

<body> 
<?php if (count($errors) > 0) { ?> 
<ul> 
    <li><?php echo implode("</li>\n\t", $errors); ?></li> 
</ul> 
<?php } else { ?> 
<p>Pleased to meet you, <?php echo htmlspecialchars($name) ?></p> 
<? } ?> 

<form method="POST" action=""> 
<p>Please enter your name: <input type="text" size="20" name="name" value="<?php echo htmlspecialchars($name) ?>" /></p> 

<input type="submit" value="Submit" /> 

</form> 

當然,這違反了所有爲設計Web應用程序提供了一些「最佳實踐」,但它確實展示了呈現表單和進行數據驗證服務器端的每個階段。

+0

您的詳細代碼幫了我很多。謝謝馬克。我能夠連接JavaScript客戶端與PHP服務器端,但我必須弄清楚如何保持提交後的形式和東西......無論如何感謝很多馬克。 – PeteMerry 2011-03-25 12:09:01

0

我相信你可以只輸入數據。顯然,這僅僅是僞代碼:

validateForm() { 

    if (typeof formData === 'duck') 
     // do logic here 
} 
+0

你是什麼意思的鴨型數據?我已經在客戶端用javascript做了驗證部分。現在我被困在如何連接客戶端JavaScript到服務器端的PHP。你能否進一步解釋你的答案?提前致謝。 – PeteMerry 2011-03-24 19:39:09

0

那麼我最初的想法是從表單刪除的onsubmit方法和調用方法=「POST」或方法=「GET」。然後,我會使用onBlur爲每個表單字段調用一個javascript函數來驗證該特定字段。最後你設置action ='validate.php'或其他一些包含PHP驗證代碼的文件名。成功後重定向到你想去的地方。失敗時,刷新頁面並暫時將其設置爲$ _SESSION變量,從而繼承$ _POST或$ _GET變量。

相關問題