【发布时间】:2017-01-23 13:45:57
【问题描述】:
我在我的 HTML 表单的“操作”字段中使用了一个外部 php 文件,以便在单击“提交”按钮时执行 php 文件中提到的操作。
为此,我在 php 文件中使用了 isset() 函数。
但是,我发现 isset 函数总是返回 FALSE,从而导致执行 else 语句(如控制台日志中所示)。
如果我删除 isset() 函数(以及 if-else 语句),那么代码运行良好。
您能检查一下我的代码中的问题吗?
另外,我在其他帖子中看到我需要使用其他参数以及isset(),例如,
if(isset($_POST['submit']) && !empty($_POST["xyz"]))
这是必需的吗?
P.S.:我仍处于页面开发的初始阶段,因此我请求您忽略我的代码的安全问题,我承认它存在。 :)
我的子代码:
我的 HTML 表单:
<form id="info-form" method="POST" action="form-submit.php">
<label for="Name">What is your Name? </label>
<input required type="text" name="name" placeholder="Enter your full name here." />
<label for="Email">What is your email ID? </label>
<input required type="email" name="email" placeholder="your.name@email.com" />
<label for="mobile">What is your 10-Digit Mobile Number? </label>
<input required type="text" name="mobile" maxlength="10" />
<button name="submit-form" type="submit" class="btn btn-lg btn-success"><i class="fa fa-paper-plane" aria-hidden="true"></i>
Submit
</button>
<button type="reset" class="btn btn-lg btn-warning"><i class="fa fa-undo" aria-hidden="true"></i>
Reset
</button>
</form>
我的 form-submit.php 文件:
<?php
if(isset($_POST['submit-form']))
{
require("database-connect.php");
$name = $_POST['name'];
$email = $_POST['email'];
$mobile = $_POST['mobile'];
$sql = "INSERT INTO tbl_details ".
"(name,email_id,mobile_number) ".
"VALUES ".
"('$name','$email','$mobile')";
mysql_select_db('db_info');
$return = mysql_query( $sql, $connect );
if(! $return )
{
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($connect);
}
else
{
echo "Not Set\n";
}
?>
【问题讨论】:
-
submit!=submit-form(您的提交按钮的名称)。所以你想在你的声明中使用isset($_POST['submit'-form'])。 -
另外,关于安全和编程标准的旁注:
mysql_*函数自 PHP 5.5 起已弃用(在 PHP 7 中完全删除),您应该 @987654322 @ 如果你可以的话。您应该选择另一个允许您使用预准备语句的 API(在处理用户输入时确实应该),例如mysqli_*或 PDO - 请参阅 choosing an API。基本上,您对 SQL 注入持开放态度 - 请阅读 How can I prevent SQL-injection in PHP? -
首先检查 isset 中的按钮名称,如果仍然有效,然后尝试输入 type='submit',因为按钮类型提交在任何地方都不起作用
-
var_dump($_POST);看到了什么?isset($_POST['submit-form'])应该适用于您拥有的表格。不要检查!empty($_POST['submit-form']),因为它当前是作为空白值提交的。