這是我的PHP驗證碼!驗證用戶名和密碼
<?php //------------------------------------------------------------------------------>PHP VALIDATION
$user="";
$pass="";
$nameErr="";
$passErr="";
//$pattern='/^[[email protected]_ ]*$/';
if($_SERVER['REQUEST_METHOD']=='POST')
{
if(empty($_POST['uname']))
{
$nameErr='Enter Your Name!';
}
else
{
$user = test_input($_POST['uname']);
if(!preg_match('/^[[email protected]_]*$/',$user))
{
$nameErr=' Re-Enter Your Name! Format Inccorrect!(only alpha, numbers,@_ are allowed)';
}
}
if(empty($_POST['pas']))
{
$passErr='Enter Your Password!';
}
else
{
$user = test_input($_POST['pas']);
if(!preg_match('/^[[email protected]_]*$/',$pass))
{
$passErr='Invalid Format! Re-Enter Password!';
}
}
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
HTML:
<html>
<body>
<div id='shw'><?php echo $user;?></div>
<fieldset id='fld'>
<form method='post' name='f1' action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>'>
<table>
<tr>
<td>
User Name:<input type='text' id='uname' name='uname' class='uname' placeholder='USERNAME' autocomplete='off' autofocus maxlength='25'><span class='error'>*</span>
Password:<input type='password' id='pass' class='pass' name='pas' placeholder='PASSWORD' autocomplete='off'>
<input type='submit' name='submit' id='loggin' value='LOGIN' class='login' onclick='val()'>
</td>
</tr>
</table>
</form>
</fieldset>
<div class='errormsg' id='errmsg'><?php echo $nameErr;?></div>
</div>
</body>
</html>
iam在驗證中有problm我想提交後顯示用戶名。 問題是,我的用戶名如果其他運行良好,但它跳過密碼部分。如果它不寒而慄也驗證通行證字段,然後只顯示用戶名! 請幫忙!
在檢查開始處添加'var_dump($ _ POST);'以查看發送的內容。因爲test_input不做測試;) –
你可以混合post和定義的變量,比如要求空($ _ POST ['pas']),然後用$ user = test_input($ _POST [ 'PAS']);但是在preg_match中檢查$ pass,並且$ pass在頂部被定義爲非值「」。 – Tom
無需清理密碼,因爲您要使用適當的散列函數來存儲密碼,請參閱函數[password_hash()](http://php.net/manual/en/function.password-hash .PHP)。 – martinstoeckli