【问题标题】:Showing Error Message显示错误信息
【发布时间】:2022-01-31 03:00:54
【问题描述】:

当我运行这个程序并在其中输入 Dan Dan 时,它就可以工作了。现在,当我输入 http://sftpgamblerlotteryclub/www 时,它不起作用。我想让它捕获 sftp、/、www 并返回表单并通知用户“这不是用户名,请重新提交”。谢谢你。

<?php
// define variables and set to empty values
$nameErr = $emailErr = "";
$name = $email = $subject = "";
if ($_SERVER["REQUEST_METHOD"] == "POST"){
        if (empty($_POST["name"])) {
           $nameErr = "Name is required";
        } else {
         $name = test_input($_POST["name"]);
        // check if name only contains letters and whitespace
        if (preg_match("/^[a-zA-Z-']*$/",$name)) {
        $nameErr = "Only letters and white space allowed";
            }
        }
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
    }
?>
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Contact Form</title>
</head>
<body>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name:
    <input type="text" name="name">
    <span class="error">* <?php echo $nameErr; ?> </span>
    <br><br>
<input name="submit_btn" type="submit" id="submit-btn" value="Send Mail">
        </form>
    </div>
</body>
</html>
<?php
echo $name;
?>

【问题讨论】:

    标签: linux networking ssh html


    【解决方案1】:

    您的 test_input 函数正在剥离 / 以便在您进行 preg_match 之前将其删除。因此,您将永远无法捕捉到 /。

    如果我理解您的问题,您想确保用户名不在禁止名称列表中。为此,我将创建一个禁止名称数组,然后在 if 条件下对数组的 json_encoded 输出进行条带处理。这使得扩展禁止名称列表变得容易。

    这是基于您的代码 snip-it。

    $array = ["sftp", "http", "www"];
    if (stripos(json_encode($array),$name) !== false) {
      $nameErr = "This is not a valid user name"
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2013-08-20
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多