使用php定义带变量的数组值

时间:2012-05-07 02:36:13

标签: php arrays variables

我正在使用$_POST将数据发布到php文件中。在那个php文件中,我有以下内容。

$params = array(
        'name' => "$fname",
        'email' => "$email",
        'ad_tracking' => 'test',
        'ip_address' => '$_SERVER["REMOTE_ADDR"]',
    );
    $subscribers = $list->subscribers;
    $new_subscriber = $subscribers->create($params);

使用$_POST数据定义数组中每个键的值的最佳方法是什么? $_SERVER["REMOTE_ADDR"]的使用也没有达到希望的效果。

2 个答案:

答案 0 :(得分:1)

POST变量通过PHP中的超级全局数组$_POST传递。所以在你的情况下,这在技术上会起作用:

$params = array(
    'name' => $_POST['fname'],
    'email' => $_POST['email'],
    'ad_tracking' => 'test',
    'ip_address' => $_SERVER['REMOTE_ADDR'],
);

$_SERVER["REMOTE_ADDR"]的代码用单引号括起来,在PHP中表示逐字字符串(即没有变量插值)。

不过,您应该考虑输入过滤 - http://www.php.net/filter

举个例子,这将在您当前的情况下执行输入过滤:

$filtered = filter_input_array(INPUT_POST, array(
    'fname' => FILTER_SANITIZE_STRING,
    'email' => FILTER_VALIDATE_EMAIL,
);

$filtered中的每个值都会有一个值(有效),NULL(不存在)或false(无效)。

答案 1 :(得分:0)

关于“使用$ _SERVER [”REMOTE_ADDR“]也没有按预期工作。”: 单引号不评估php变量

$params = array(
    'name' => $_POST["fname"],
    'email' => $_POST["email"],
    'ad_tracking' => 'test',
    'ip_address' => $_SERVER["REMOTE_ADDR"],
);
$subscribers = $list->subscribers;
$new_subscriber = $subscribers->create($params);