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


Define Array Values with Variables with php

我正在使用$_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"]的使用也没有按预期工作。

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(无效(。

关于"$_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);