【问题标题】:php change post data to variablephp将帖子数据更改为变量
【发布时间】:2014-08-23 20:20:36
【问题描述】:

我正在尝试将给定的 $_POST 数据更改为可变格式,这是我的代码:

<?php
$_POST["abc"]=2;
$post = array("abc");

foreach($post as $field) {
    global $field;
    $field = $_POST[$field];
}

echo $abc;
?>

但是当我尝试运行这段代码时,我只得到:

PHP 注意:未定义变量:第 8 行 /var/www/ 中的 abc

如何将循环中选择的 POST 变量更改为普通变量? (例如,$_POST["abc"] 到 $abc)

【问题讨论】:

标签: php arrays post foreach global


【解决方案1】:

使用extract 函数

extract($_POST)

【讨论】:

  • 这是非常不安全的,因为它会将任何已发布的变量转换为局部变量。您可以添加选项 EXTR_SKIP 但您仍然必须记住,任何人都可以在您的代码中插入他们想要的变量。我不会将此推荐给任何安全重要的脚本
  • 这是对的,但也是 OP 问题所固有的。
【解决方案2】:

您可以尝试使用PHP variable variable

<?php
$_POST["abc"]=2;
$post = array("abc");

foreach($post as $field) {
     global $$field;
     $$field = $_POST[$field];
}

echo $abc;

?>

【讨论】:

    【解决方案3】:

    如果您想将 $_POST 键作为直接变量转换,您可以使用以下脚本。

    <?php
    
    $_POST["abc"]=2;
    $_POST["xyz"]=5;
    
    $post = $_POST;
    foreach($post as $key=>$field) {
        $$key = $field;
    }
    
    echo $abc . "<br/>";  //2
    echo $xyz;  //5
    
    ?>
    

    这里的“$$”用于从另一个字符串输出以动态方式创建变量。

    此处提供工作示例:http://sugunan.net/demo/fof.php

    【讨论】:

      【解决方案4】:

      我的做法是:

       $abc = $_POST['abc'];
      

       list($abc,$def,$etc) = array($_POST['abc'],$_POST['abc'],$_POST['def'],$_POST['etc']);
      

        $postNeeded = array("abc","def","etc");
        foreach($postNeeded as $variable){ 
               if(isset($_POST[$variable])){
                   ${$variable} = $_POST[$variable]; 
        }}
      

      对于我需要来自 $_POST 的每个变量,等等,如果 $_POST 没有被清理,你的方法将使你容易受到代码注入的影响。 随着时间的推移,我最终只使用了 $_POST['var'] 而不是额外的变量,但这当然取决于项目。 我希望我的回答有帮助。总账。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-09
        • 2019-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多