如何将代码检查到我的提交表单中

How to implement code checking into my submit form

我有以下表格

    <form action="/wp-content/themes/wallstreet/welcome.php" method="post" class="basic-grey">
<h1>Form
<span>Please fill all the texts in the fields.</span>
</h1>
<label>
<span>Your Nickname* :</span>
<input id="name" type="text" name="name" placeholder="It will appear in the text" />
</label>

<label>
<span>Your Email* :</span>
<input id="email" type="email" name="email" placeholder="Valid Email Address" />
</label>

<label>
<span>Message* :</span>
<textarea id="messagebook" name="messagebook" placeholder="The text that will appear" maxlength="80"></textarea>
</label>
<label>
<span>Code* :</span>
<input id="code" type="text" name="code" placeholder="The Code That we sent to your email" maxlength="8" />
</label>
<label>
<span> </span>
<input type="submit" class="button" value="Send" />
</label>
</form>

它使用下面的 php,这个 php 基本上将消息值发布到一个 txt 文件中

<?php
$var = $_POST['messagebook'];
file_put_contents("/var/www/wordpress/wp-content/themes/wallstreet/data.txt", $var . "\n", FILE_APPEND);
exit();
?>

但我希望提交按钮仅在我的代码字段与存储在这样的 txt 文件中的代码匹配时才有效

zACHAS5r
rKUzob3X
omqYjVQZ
BeF375BG
rFKQomMX
y8EVBTGH
Z7icxNoD
wnZ5qBvK
ftbPiCZa
sXJKDETK
wYDVLDPd
AjURjBdZ
LZR4fbtk
gmFY89TV
BAWDxpZ2
bGLLd9Az
qg4C93wN
YJnrDh2c
jwH6hV9h
tm3S4f5j
MU2ikfbu
ZXnUpfmY
hijZPTk4
C2oWha3T
irTg9oUA
jmjLDvL3
jUbiBtJo
gCCAQx6Z

理论上我可以使用这段代码让它工作,但我不知道在哪里实现它

    function is_valid($code)
{
return in_array($code , explode(' ',file_get_contents('coderoute')));
} 

EDIT1:目前我有这个,但我得到了这个错误

 <?php
    function is_valid($code)
    {
    return in_array($code , explode(' ',file_get_contents("/wp-content/themes/wallstreet/codes.txt")));
    } 
    $code = $_POST['code'];
    if (is_valid($code)) { 
        $var = $_POST['messagebook'];
        file_put_contents("/var/www/wordpress/wp-content/themes/wallstreet/data.txt", $var . "\n", FILE_APPEND);
    }
    exit();
?>

PHP Warning: file_get_contents(/wp-content/themes/wallstreet/codes.txt): failed to open stream: No such file or directory in /var/www/wordpress/wp-content/themes/wallstreet/welcome.php on line 4,

您需要检查的代码在 $_POST['code'].

所以将它作为参数传递给 is_valid 函数:

<?php
    $code = $_POST['code'];
    if (is_valid($code)) { 
        $var = $_POST['messagebook'];
        file_put_contents("/var/www/wordpress/wp-content/themes/wallstreet/data.txt", $var . "\n", FILE_APPEND);
    }
    exit();
?>

您可以使用 JavaScript 数组来输入代码,如果输入的代码不在数组中,此数组将填充 PHP , 提交按钮不会提交表单。

将下一个代码复制并粘贴到 PHP 文件中,然后在浏览器中打开它:

<html>
  <head>
    <script type="text/javascript">
function check_code () // ◄■ FUNCTION CALLED FROM THE FORM.
{ var arr = [ <?php // ▼ FILL JAVASCRIPT ARRAY WITH CODES FROM FILE ▼
              $arr = explode( PHP_EOL,file_get_contents('coderoute.txt') );
              echo "'" . implode( "','",$arr ) . "'";
              ?> ];
  var code = document.getElementById("code"); // ◄■ FIELD IN FORM.
  if ( arr.indexOf( code.value ) == -1 ) // ◄■ SEARCH CODE IN ARRAY.
       { alert("Code not found.");
         return false; // ◄■ FORM WILL NOT BE SUBMITTED.
       }
  return true; // ◄■ FORM WILL BE SUBMITTED.
}
    </script>
  </head>
  <body>
    <form action="somescript.php" onsubmit="return check_code()"> <!-- ◄■ JS FUNCTION -->
      <input type="text" id="code" name="code"/> <!-- ◄■ CODE FIELD -->
      <br/>
      <input type="submit" value="Submit"/>
    </form>
  </body>
</html>

注意 JavaScript 数组是如何用 PHP 填充的,PHP 脚本从文件中读取代码并将它们作为 JavaScript 的数组项回显大批。 右键单击页面查看源代码并观察JavaScript数组是如何填充的。

$code = $_POST['code'];
$message_book = $_POST['messagebook'];

if(is_valid($code)) {
    file_put_contents('/var/www/wordpress/wp-content/themes/wallstreet/data.txt', "{$message_book}\n", FILE_APPEND);
    exit();
}

function is_valid($code) {
    $codes = file('/var/www/wordpress/wp-content/themes/wallstreet/codes.txt', FILE_IGNORE_NEW_LINES);
    return in_array($code, $codes);
}

您提到了 PHP WarningNo such file exists。您可以提供 codes.txt 的绝对路径来检查它是否正常工作。