试图通过按钮发布

时间:2019-04-01 14:27:29

标签: php html

我已经尝试了许多在堆栈溢出时发布的解决方案,但没有一个起作用。

可能只是我,但是我在一个单独的文件上尝试了它,但是它可以正常工作,但是如果我将当前站点与漂亮的CSS一起使用,它将无法正常工作

我已经在LAEPHP上尝试了确切的代码,并且可以正常工作,但是当我添加我的代码时(如您在下面看到的那样),当单击按钮时它不会显示任何内容,并且甚至在单击时也不会刷新页面/ p>

<form action="" method="post">
    <div class="form-group">
        <label>Username</label>
        <input class="au-input au-input--full" type="email" name="target" placeholder="Example">
    </div>

    <div class="form-group">
        <label>API key</label>
        <input class="au-input au-input--full" type="text" name="key" placeholder="X7UI-9H2D-IZAS">
    </div>

    <?php

        $key= $_POST['key'];
        $send= $_POST['send'];

        if ($send) {
            if (!empty($key)) {
                echo 'The key you entered is ' . $key;
            }
            else {
                echo 'You did not enter a key. Please enter a key into this form field.';
            }
        }
    ?>

    <button class="subscribe btn btn-primary btn-block" name="send" type="submit">Check Key</button>
</form>

2 个答案:

答案 0 :(得分:0)

将表单发送到浏览器时,变量$sendnull;当浏览器发布表单时,变量为空字符串(""“)。在PHP中,转换后转换为布尔值(如您的if ($send)语句中一样),这两个值均均为false,并且if语句中的代码无法运行。

快速解决方案是将其更改为:

if ($send !== null) // the `!==` is for preventing the type juggling that `!=` does

但是,更好的方法是使用isset()函数,该函数检查数组中是否存在变量或键,如:

if (isset($_POST['send']))

如果要启用完整的错误报告,则可能会注意到$_POST['key']$_POST['send']变量不存在。根据我使用isset()的建议,您将不再需要$send变量,并且在检查了{之后,如果将值分配给$key变量,则另一条通知将消失。设置了{1}}变量。

答案 1 :(得分:0)

我看到的问题是您正在检查按钮是否已发送且不是“虚假”。由于按钮上没有value属性,因此它将是一个空字符串,它是一个“虚假”值,这意味着第一个if语句永远不会评估为true。

尝试将您的代码更改为:

<?php
// isset() is better since it check if the key exists and isn't null.
if (isset($_POST['send'])) {
    // If you rather put the values in separate variables,
    // you should do it here, inside the if-statement (where we know we
    // got a POST request)

    if (!empty($_POST['key'])) {
        echo 'The key you entered is ' . $_POST['key'];
    }
    else {
        echo 'You did not enter a key. Please enter a key into this form field.';
    }
}
?>