Когда я заполняю правильный ответ на CAPTCHA, все работает нормально. После неправильного ответа выдается предупреждающее сообщение, а затем поле CAPTCHA отображается пустым.
<?php
session_start();
$math='';
if(!isset($_POST['submit1']))
{
$digit1 = mt_rand(1,20);
$digit2 = mt_rand(1,20);
if( mt_rand(0,1) === 1 ) {
$math = "$digit1 + $digit2";
$_SESSION['ccanswer'] = $digit1 + $digit2;
} else {
$math = "$digit1 - $digit2";
$_SESSION['ccanswer'] = $digit1 - $digit2;
}
}
include('inc/subheader.php');
require "connection.php";
if(isset($_POST['submit1']))
{
$xyzname=$_SESSION['XYZname'];
$correct_answer=$_SESSION['ccanswer'];
$answerRR=$_POST['answer1'];
if($correct_answer==$answerRR){
$sql="SELECT pwd FROM logins WHERE username = '".$xyzname."' and encrypt_pwd='".$_POST['opwd']."'";
$result1 = pg_query($pgcon,$sql);
$num=pg_num_rows($result1);
if($num>0)
{
$updatephoto ="UPDATE xyz set encrypt_pwd='".$_POST['npwd']."' where username='".$xyzname."'";
pg_query($updatephoto);
echo "<script>alert('Your password has been reset successfully!');</script>";
}
else
{
echo "<script>alert('Sorry, there is no match for that password.');</script>";
}
}else{
echo "<script>alert('Invalid captcha');</script>";
$_SESSION['ccanswer']='';
}
}
?>
<form name="chngpwd" action="" method="post" id="demo">
<div class="form-group">
<label for="exampleInputPassword1">Old Password</label>
<input type="password" class="form-control" id="opwd" required placeholder="Old Password" name="opwd" onkeypress="return blockSpecialChar(event)">
</div>
<div class="form-group">
<label for="exampleInputPassword1">New Password</label>
<input type="password" class="form-control" id="npwd" name="npwd" required placeholder="New Password" onkeypress="return blockSpecialChar(event)">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Confirm Password</label>
<input type="password" class="form-control" data-rules-equalTo="#npwd" required id="cpwd" placeholder="Confirm Password" onkeypress="return blockSpecialChar(event)">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Captcha</label>
<input id="answer1" name="answer1" type="text" placeholder="<?php echo $math; ?>" class="form-control" required="required" data-validation-required-message="Please enter Captcha Code."/>
<p class="help-block text-danger"><?php if(isset($_GET['msg'])) { echo "Invalid Captcha Code.";}?></p>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary" name="submit1" value="Change Passowrd" >Submit</button>
</div>
</form>
Я хочу, чтобы поле CAPTCHA не было пустым после сообщения об ошибке.
Я не нашел ошибку, но поле показывает пустое под CAPTCHA.
Я попытался перезагрузить страницу, после чего она работает нормально, но форма, которая была заполнена ранее, не показывает значения.