我已经尝试了许多在堆栈溢出时发布的解决方案,但没有一个起作用。
可能只是我,但是我在一个单独的文件上尝试了它,但是它可以正常工作,但是如果我将当前站点与漂亮的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>
答案 0 :(得分:0)
将表单发送到浏览器时,变量$send
为null
;当浏览器发布表单时,变量为空字符串(""
“)。在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.';
}
}
?>