$\u POST在PHP7.2.0中不起作用
我试图使用POST方法将表单数据发送到PHP函数,但它不起作用 这是我的表格:$\u POST在PHP7.2.0中不起作用,php,forms,Php,Forms,我试图使用POST方法将表单数据发送到PHP函数,但它不起作用 这是我的表格: <form action="<?php echo $proc; ?>?function=edit" method="POST" enctype="multipart/form-data"> <div class="form-group"> <label>Name</lab
<form action="<?php echo $proc; ?>?function=edit" method="POST"
enctype="multipart/form-data">
<div class="form-group">
<label>Name</label>
<input type="text" name="firstName">
</div>
<input type="hidden" name="id" class="id">
<button class="btn btn-default btn-block" type="submit">Save</button>
</form>
这是数据库类:
<?php
class Database {
private static $db;
private $connection;
private function __construct() {
$this->connection = new mysqli("localhost","root","","my_db");
}
function __destruct() {
$this->connection->close();
}
public static function getConnection() {
if (self::$db == null) {
self::$db = new Database();
}
return self::$db->connection;
}
}
?>
奇怪的是,我没有收到任何错误消息。对于get参数的作用似乎有些困惑,除非您有某种内部处理程序,它接受$\u get['function']值并调用相同名称的函数。如果这是你正在做的,就不要那样做 如果表单保持原样,可以通过以下操作在PHP中调用edit:
if(isset($_GET['function']) && $_GET['function'] == 'edit')
{
edit();
}
此外,编辑函数将返回值。这取决于你如何利用这些价值观
$res = edit();
if($res){
//do something
}
else
{
// do something else
}
有很多方法可以更好地实现您正在做的事情,但是为了简单起见,让我们只说在url中放置“function=edit”不会调用相同名称的函数。据我所知,PHP从来没有这样做过。what calls
edit()
@smith这不是真的。它将设置$\u GET
值。警告:您完全可以使用,并且应该真正使用,而不是像那样手动生成查询。特别是因为你根本没有逃避用户的输入!由于action=“?function=edit”
,表单数据将被发送到那里进行处理,这不是globals的工作方式。如果您想在函数内部使用$connection
,您仍然需要使用global$connection导入它代码>函数内部(无论如何,使用global
是不好的做法),或者您需要将其传递给您的函数(function edit($connection)
)我有一个内部处理程序,它接受$GET['function']值并调用相同名称的函数,这样做不对吗?很抱歉回复太晚了,所以只要它是一个故意的公共功能,并且不能被利用,那么我想如果有人审计过代码,它不会损害任何东西,除了你的声誉。没有合理的理由这样做,除非你的代码效率太低,有数千个函数,而且你不想为所有函数编写isset案例。所以,你是说最好为每个函数编写isset案例。我试过这样做,但是编辑功能仍然不能工作,“更好”是一个视角问题。您可以保护您的代码,无论它是如何编写的。理想情况下,您不会采用冗长而奇怪的方式来处理常见的实用程序。如果没有看到你的代码,我就不知道你的处理程序有多合乎逻辑。至于编辑函数,请使用var_dump()和die()。杀死中间的过程,看看它是否击中功能。确保您的php错误设置为显示等。常见的调试实践
$res = edit();
if($res){
//do something
}
else
{
// do something else
}