2016-12-16 128 views
-1

我一直在尝试使用php窗体来更改密码。如果我将密码字段留空并仍然单击提交,它会将密码更新为空值。PHP窗体更新为空值

// define variables and set to empty values 
$mypassword = $passwordErr = $fid = $fidErr = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 

if(empty($_POST["fid"])) 
{ 
    $fidErr="ID is required"; 
} 
else 
{ 
    $fid=test_input($_POST["fid"]); 
} 

if(empty($_POST["mypassword"])) 
{ 
    $passwordErr="Password is required"; 
} 
else 
{ 
    $mypassword=test_input($_POST["mypassword"]); 
} 

} 
else 
{ 
echo "plz enter details"; 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 

<body> 

<p><span class="error">* required field.</span></p> 

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 

<br>Change password<br> 

ID: 
<input type="number" name="fid" value="<?php echo $fid; ?>"> 
<span class="error">*<?php echo $fidErr ?></span> 
<br> 
Password: 
<input type="password" name="mypassword" value="<?php echo $mypassword; ?>"> 
<span class="error">*<?php echo $passwordErr ?></span> 
<br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

<?php 
echo "<h2>Your Input:</h2>"; 
echo $fid; 
echo "<br>"; 
echo $mypassword; 


$sql = "update faculty set passwd='$mypassword' where fid=$fid"; 
$result=$conn->query($sql); 

if($result==TRUE) 
{ 

    echo "<br> $fid password updated successfully"; 
} 
else 
{ 
    echo "error".$conn->error(); 
} 

即使我已经把表单验证代码,它仍然更新值为空。

+0

即使您的输入为空,您也总是“更新”它。 – Federkun

+0

为什么你在下面写代码,在成功条件下写更新代码 – rahulsm

+0

认证系统*真的*我的意思*真的*不是你应该从头开发的系统。使用一个久经考验的 – e4c5

回答

0

据我所知,如果密码值为空,则需要忽略密码值。试试这段代码:

<?php 
echo "<h2>Your Input:</h2>"; 
echo $fid; 
echo "<br>"; 
echo $mypassword; 

if (empty($passwordErr)) { 
    $sql = "update faculty set passwd='$mypassword' where fid=$fid"; 
    $result=$conn->query($sql); 

    if($result==TRUE) 
    { 
     echo "<br> $fid password updated successfully"; 
    } 
    else 
    { 
     echo "error".$conn->error(); 
    } 
} else { 
    echo "The password is not saved because it is empty." 
} 

UPD:改变了条件,所以它依赖于$ passwordErr值。现在密码空白检查不重复。

+0

谢谢。但是这个说法呢? –

+0

if(empty($ _POST [“mypassword”]))//这一个 { $ passwordErr =“需要密码”; } –

+0

我刚刚更新了我的答案。你是对的,你提到的条件已经做了检查。顺便说一句,如果您尝试将零或一组零作为密码保存,代码将无法按预期工作。 –