【问题标题】:Create Variables by FromSubmit (PHP)通过 FromSubmit (PHP) 创建变量
【发布时间】:2020-10-16 13:10:24
【问题描述】:

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

所以,我的代码流程:

  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吗?

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

【问题讨论】:

    标签: php arrays variables html-formhandler


    【解决方案1】:

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

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

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

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


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


    我喜欢做的是序列化/反序列化

    symfony 框架为此提供了漂亮的图形

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

    所以,既然您已经有了一个数组,那么对您来说,这就是去规范化。您可以编写一个 denormlalizer,除了将数组转换为模型之外什么也不做。

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

    【讨论】:

    • 不用担心@Carlson!您是否需要其他帮助或更多信息来解决您的问题或对特定主题的更多解释?
    • 不,谢谢你的建议,只是因为我能做到,并不意味着我必须这样做
    猜你喜欢
    • 2014-05-27
    • 1970-01-01
    • 2012-08-08
    • 2020-07-14
    • 2017-08-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多