0

我是新手,所以我不知道技术术语:(

所以,我的代码过程:

  1. 读出作为字符串接收的 FormValues

  2. 从收到的字符串生成“变量”(具有相应值的 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';
    }
}

问题/问题: 此代码正在运行 soso

  1. 通用:处理这样的表格是否是一种安全且智能的方式?
  2. 当我以字符串形式接收所有数据时,它对安全性或进程有影响吗?例如。注册、插入密码或年龄(整数)

3.另外,向DB插入数据还需要Prepared Statements吗?

可能有人可以告诉我一个解决方案,或者在哪里注意:) 非常感谢。

4

1 回答 1

0

回答你的第一个问题:如果它是安全的,取决于你打算用它做什么,但是由于你想把它保存到数据库中,目前它是不安全的。你用第三个问题自己回答了你的问题。始终使用准备好的语句。

我还要说这不是那么聪明。当然,它在某种程度上很聪明,您不需要关心任何新变量等,但是如果

  • 你正在重新设计你的数据库?然后,你不知道某些字段在哪里使用
  • 用户只需从 POST 请求中添加更多字段(或删除字段)(通过更改表单或手动发送请求?)然后一切都会失败,因为您将尝试将未知字段插入数据库
  • 重构时,您无法在 IDE 中搜索自动生成的变量的用法。(这也是我不喜欢通过字符串连接或类似方式调用方法的原因)

简单地说:我会避免创建变量、方法或其他任何东西的“魔法”。不要考虑什么是容易编程的。想想什么是易于维护和以后易于阅读的!没有人会仅仅通过阅读它就知道这段代码中发生了什么,这应该始终是第一要务


回答您的第二个问题:字符串与任何其他数据类型相比并不或多或少不安全。密码应始终加密(我不再积极开发 PHP,所以不知道这是否是当前标准,但请查看:https ://www.php.net/manual/de/function.password-哈希.php )


我喜欢为您要实现的目标做的是序列化/反序列化

symfony 框架为此提供了一个很好的图形

序列化器图形

来源:https ://symfony.com/doc/current/components/serializer.html

所以,既然你已经有一个数组,对你来说这将是 denomrlization。您可以编写一个 denormlalizer,除了将数组转换为模型之外什么都不做。

我不知道这是否已经太高级了,但你可以看看

于 2020-06-30T14:13:28.523 回答