【问题标题】:Better way of mapping _POST parameters to variables将 _POST 参数映射到变量的更好方法
【发布时间】:2011-12-18 21:31:34
【问题描述】:

我确信有更好的方法将所有 _POST 参数映射到具有相同名称的变量。有人知道如何更好地做到这一点吗?

$ownerName = $_POST["ownerName"];
$ownerEmail = $_POST["ownerEmail"];
$ownerPhone = $_POST["ownerPhone"];
$ownerAddress = $_POST["ownerAddress"];
$buyerName = $_POST["buyerName"];
$buyerEmail = $_POST["buyerEmail"];
$buyerPhone = $_POST["buyerPhone"];
$buyerAddress = $_POST["buyerAddress"];
$propertyAddress = $_POST["propertyAddress"];
$parcelNumber = $_POST["parcelNumber"];

非常感谢。

【问题讨论】:

    标签: php post dry url-parameters


    【解决方案1】:

    您可以通过这种方式使用 foreach(与 extract 不同,您可以操作/检查变量名称或值

    <?php
    foreach($_POST as $key => $value) 
       $$key = $value;
    ?>
    

    【讨论】:

      【解决方案2】:

      如果你使用 php > 5,我建议你看看这个:

      http://www.php.net/manual/en/function.filter-input-array.php

      过滤器输入函数允许您轻松应用一些您可能想要的验证和清理。

      【讨论】:

        【解决方案3】:

        PHP 中有一个函数可以将 extract 的值传递给 vars:

        <?php
        extract($_POST, EXTR_SKIP);
        ?>
        

        【讨论】:

        • 哇,我今天学到了新东西。好奇这到底有多安全?例如,如果我有一个布尔值 '$authorized' 并且有人使用 authorized=true 发帖,它会覆盖该值。
        • 哇!非常感谢您提供完美的答案,并帮助 n00b。 =D
        • @Amir 使用第二个参数可以避免这种情况。我放“EXTR_SKIP”的那个就可以做到这一点。如果 var 已经存在,请不要覆盖。
        • 阿米尔,这就是EXTR_SKIP的作用,如果变量已经存在,它不会覆盖它。
        • 这是一个非常酷的功能,但它在页面上显示,警告 - 不要对不受信任的数据使用 extract(),例如用户输入(即 $_GET、$_FILES 等)。如果这样做,例如,如果您想临时运行依赖于 register_globals 的旧代码,请确保使用不可覆盖的 extract_type 值之一,例如 EXTR_SKIP 并注意您应该按照 variables_order 中定义的相同顺序进行提取php.ini.
        猜你喜欢
        • 2013-10-30
        • 2021-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多