[英]Validate form with PHP + does not refresh if error is present
我試圖在按下提交時用php驗證我的表單,我想要以下內容:
用戶按提交,如果沒有發現錯誤,則處理注冊表格並將數據發送到數據庫。
如果存在錯誤,則頁面不會刷新,並顯示錯誤控制台。
每次用戶單擊提交時,如果發現錯誤,則將刪除舊消息,並將新消息發布到錯誤控制台div中。
我寫了表單(validation(php),Error console div&CSS)的所有代碼。 我只是不知道如何將它們整合在一起
就像是:
if ( ($username && $email) != 0 ) { error console + remain on same page } else {send to db};
(來源: 1.ii.gl )
PHP驗證碼
$username = 0;
$uservar = $_POST['username'];
if (empty($uservar))
{
$username = 1;
}
else if (!preg_match("/^\w{5,20}$/",$uservar))
{
$username = 2;
}
if ( ($username) != 0 ) {
echo "<h4 class='error2'><img src='http://s28.postimg.org/ql0x06555/warning6.png' alt='Error'> Error Console</h4> </br>";
switch ($username) {
case 1:
echo "<img src='http://s27.postimg.org/vjxntq073/sign5.png' alt='Error'>";
echo " The Field 'Username' cannot be left blank";
break;
case 2:
echo "<img src='http://s27.postimg.org/vjxntq073/sign5.png' alt='Error'>";
echo " Invalid 'Username' Format - Please use Letters & Numbers only (5-20 Characters)";
break;
}}
</div>
形成:
<form id="registration-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="username" id="username" placeholder="Username">
<button type="submit" name="submit" id="submit" class="button-submit">Submit</button>
</form>
從您的html拆分您的主要php
html中的php僅處理簡單的邏輯和顯示結果
作為快速解答,請檢查以下代碼:
<?php
function valiation(){
$aryMsg = array();
$aryExport = array();
if( !isset( $_POST['_submit'] ) ){
//no submit
return array( $aryMsg, $aryExport );
}
$aryPostFieldWhiteList = array( 'username' );
//1. post content filter
//make sure pass all the field you need from $_POST to $aryExport
foreach( $aryPostFieldWhiteList as $strField ){
$aryExport[$strField] = htmlentities( $_POST[$strField], ENT_QUOTES );
}
//2. post content filter
//...
//if username is wrong fill $aryMsg['username'] ... etc
//3. check validation result
if( sizeof($aryMsg) ){
//means not pass the validation, return error message and filtered data
return array( $aryMsg, $aryExport );
}
//4. past validation
//4.1 all db, to insert result
//db insert ...etc
//4.2 page redirect to thank you page
header( 'Location: /thankyou.php' );
die();
}
list( $aryMsg, $aryPost ) = valiation();
?>
<html>
<head>
...
</head>
<body>
<?php if( is_array( $aryMsg ) && sizeof( $aryMsg ) ):?>
<h4 class='error2'><img src='http://s28.postimg.org/ql0x06555/warning6.png' alt='Error'> Error Console</h4>
<ul class="error_msg">
<?php foreach( $aryMsg as $strMsg ):?>
<li><?php echo $strMsg;?></li>
<?php endforeach;?>
</ul>
<?php endif;?>
<form id="registration-form" action="" method="post">
<input type="text" name="username" id="username" placeholder="Username" value="<?php echo $aryPost['username'];?>">
<button type="submit" name="_submit" id="submit" class="button-submit">Submit</button>
</form>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.