Я хочу создать отправителя и контролера OTP.
Код выглядит так:
<?php
$Mail = "[email protected]";
$OTP = mt_rand();
$subject = "OTP from HelloBuddy.co.in";
$txt = "You have recieved OTP from HelloBuddy.co.in. The OTP is $OTP. Please enter the OTP in the website. Please note that the OTP will expire in 100 seconds.";
if (mail($Mail,$subject,$txt)){
echo "<p>OTP has been successfully sent<br>The OTP will expire in <span id='xpire'>100</span> seconds.<br>Please enter the OTP here:<input type='number' name ='OTP'></p>";
echo "<script>
var a = 99;
var x = setInterval(cdown, 1000);
function cdown(){
if (a>=0) {
document.getElementById('xpire').innerHTML = a;
a=a-1;
} else {
clearInterval(x);
clearOTP()
}
function clearOTP{
$OTP = '';
}
</script>";
}else{
die(ERROR);
}
?>
Вы не можете установить переменную php с помощью JavaScript.
PHP будет выполняться на стороне сервера, а JavaScript выполняется на стороне клиента. Таким образом, весь код PHP уже выполняется до вызова javascript.
Переменная $ OTP уже не сохранена. Поскольку код получает выполняется на стороне сервера и будет сборка мусора. Если вы хотите сохранить и удалить OTP, вы должны использовать какую-то базу данных.
использовать теги php перед скриптом, затем конкатенировать переменные php
попробуй это,
<?php
$Mail = "[email protected]";
$OTP = mt_rand();
$subject = "OTP from HelloBuddy.co.in";
$txt = "You have recieved OTP from HelloBuddy.co.in. The OTP is $OTP. Please enter the OTP in the website. Please note that the OTP will expire in 100 seconds.";
if (mail($Mail,$subject,$txt)){
echo "<p style='color:green; font-size:30px; text-align:center; text-decoration: underline;'>OTP has been successfully sent<br>The OTP will expire in <span id='xpire'>100</span> seconds.<br>Please enter the OTP here:<form method ='POST' action = '' style='text-align:center'><input style='color:green; font-size:30px; text-align:center;text-decoration: underline;'type='number' name ='OTP'><input style='color:white; background-color:#4CAF50;border:2px #4caf50 solid; font-size:30px; cursor:pointer;' type='submit' value='Check'></form></p>";
?><script>
var a = 99;
var x = setInterval(cdown, 1000);
function cdown(){
if (a>=0) {
document.getElementById('xpire').innerHTML = a;
a=a-1;
} else {
clearInterval(x);
clearOTP()
}
function clearOTP{<?=$OTP ='';?>}
</script>
<?
}
?>
Переменные Php можно использовать только в JS, ими нельзя манипулировать (инициализация / обновление).
Вышеуказанная задача может быть использована через ajax, сохраняя значение otp в js, а для сброса используйте ajax для выполнения некоторых других операций, таких как проверка OPT.