通过 FromSubmit 创建变量 (PHP)
Create Variables by FromSubmit (PHP)
我是新手,所以我不知道专业术语:(
所以,我的代码处理过程:
读出 FormValues,作为字符串接收
从接收到的字符串生成“变量”(HTML 具有相应值(表单输入)的表单 (id))
$variableX1 = "Value1";
$variableX2 = "Value2";
...
我的代码的目的:
不再需要手动编写 POST 变量来处理这些表单
generate variables & values: $loginmail = "email@gmail.com";
instead of write: $loginmail = $_POST['email']
我的代码示例:
class formHandler {
//Get FormInput, Read out Properties---------------------------------------------------------------------
function getVariables(){
$formString = $formArray = $value = $formInput = $variable = "";
$formString = $_POST['formInit']; //Get String from serverRequest.js
$formArray = explode('&', $formString); //Create Array from String > separate FormInput
foreach($formArray as $value) {
$formInput = explode('=', $value); //Create Array from every From Input
${$formInput[0]} = urldecode($formInput[1]); //Creates Variables & URLdecoded Values
}
include_once 'fileHandler.php';
}
}
问题/疑问:
此代码工作正常
- 一般:像这样处理表格是一种安全且明智的方法吗?
- 当我收到所有数据作为字符串时,它对安全或流程有影响吗?例如。注册、输入密码或年龄(整数)
3.Furthermore,还需要Prepared Statements才能往DB中插入数据?
请问有哪位大神可以告诉我解决办法,或者需要注意的地方:)
非常感谢。
回答你的第一个问题:它是否安全取决于你打算用它做什么,但既然你想把它保存到数据库中,那么目前它是不安全的。你用第三个问题自己回答了你的问题。始终使用准备好的语句。
我还要说它不是那么聪明。当然,它在某种程度上很聪明,您不需要关心任何新变量等。但是如果
会发生什么
- 您正在重新设计您的数据库?然后,你不知道有些字段用在什么地方
- 用户只需从 POST 请求中添加更多字段(或删除字段)(通过更改表单或手动发送请求?)然后一切都会失败,因为您将尝试插入未知字段进入数据库
- 重构时,您无法在 IDE 自动生成的变量中搜索用法。 (这也是我不喜欢通过字符串连接或类似方式调用方法的原因)
简单地说:我会避免使用“魔法”来创建变量、方法或其他任何东西。不要考虑什么是容易编程的。想想什么东西容易维护,方便以后阅读!没有人会仅仅通过阅读就知道这段代码中发生了什么,而这应该始终是#1 priority
回答您的第二个问题:字符串不比任何其他数据类型更不安全。密码应始终加密(我不再积极开发 PHP,所以不知道这是否是当前标准,但请查看:https://www.php.net/manual/de/function.password-hash.php)
我想为您想要实现的目标做的是 serialization/deserialization
symfony 框架对此有一个很好的图形
来源:https://symfony.com/doc/current/components/serializer.html
因此,既然您已经有了一个数组,那么对您来说这就是去名化。您可以编写一个非规范化器,它除了将数组转换为模型外什么都不做。
我不知道这是否已经太高级了,但你可以看看
我是新手,所以我不知道专业术语:(
所以,我的代码处理过程:
读出 FormValues,作为字符串接收
从接收到的字符串生成“变量”(HTML 具有相应值(表单输入)的表单 (id))
$variableX1 = "Value1"; $variableX2 = "Value2"; ...
我的代码的目的: 不再需要手动编写 POST 变量来处理这些表单
generate variables & values: $loginmail = "email@gmail.com";
instead of write: $loginmail = $_POST['email']
我的代码示例:
class formHandler {
//Get FormInput, Read out Properties---------------------------------------------------------------------
function getVariables(){
$formString = $formArray = $value = $formInput = $variable = "";
$formString = $_POST['formInit']; //Get String from serverRequest.js
$formArray = explode('&', $formString); //Create Array from String > separate FormInput
foreach($formArray as $value) {
$formInput = explode('=', $value); //Create Array from every From Input
${$formInput[0]} = urldecode($formInput[1]); //Creates Variables & URLdecoded Values
}
include_once 'fileHandler.php';
}
}
问题/疑问: 此代码工作正常
- 一般:像这样处理表格是一种安全且明智的方法吗?
- 当我收到所有数据作为字符串时,它对安全或流程有影响吗?例如。注册、输入密码或年龄(整数)
3.Furthermore,还需要Prepared Statements才能往DB中插入数据?
请问有哪位大神可以告诉我解决办法,或者需要注意的地方:) 非常感谢。
回答你的第一个问题:它是否安全取决于你打算用它做什么,但既然你想把它保存到数据库中,那么目前它是不安全的。你用第三个问题自己回答了你的问题。始终使用准备好的语句。
我还要说它不是那么聪明。当然,它在某种程度上很聪明,您不需要关心任何新变量等。但是如果
会发生什么- 您正在重新设计您的数据库?然后,你不知道有些字段用在什么地方
- 用户只需从 POST 请求中添加更多字段(或删除字段)(通过更改表单或手动发送请求?)然后一切都会失败,因为您将尝试插入未知字段进入数据库
- 重构时,您无法在 IDE 自动生成的变量中搜索用法。 (这也是我不喜欢通过字符串连接或类似方式调用方法的原因)
简单地说:我会避免使用“魔法”来创建变量、方法或其他任何东西。不要考虑什么是容易编程的。想想什么东西容易维护,方便以后阅读!没有人会仅仅通过阅读就知道这段代码中发生了什么,而这应该始终是#1 priority
回答您的第二个问题:字符串不比任何其他数据类型更不安全。密码应始终加密(我不再积极开发 PHP,所以不知道这是否是当前标准,但请查看:https://www.php.net/manual/de/function.password-hash.php)
我想为您想要实现的目标做的是 serialization/deserialization
symfony 框架对此有一个很好的图形
来源:https://symfony.com/doc/current/components/serializer.html
因此,既然您已经有了一个数组,那么对您来说这就是去名化。您可以编写一个非规范化器,它除了将数组转换为模型外什么都不做。
我不知道这是否已经太高级了,但你可以看看