使php数组适应WordPress

时间:2014-04-22 作者:NetMonkey

另一家Stackoverflow的人说我应该把这个贴在这里。我已经阅读和调整代码三天了,但我想不出这一点,因为我是php新手。编写这个php登录脚本到远程服务器的开发人员没有为WordPress编码,也没有为我需要的自动登录编码。我想我已经找到了我没有在这里发布的代码末尾的自动登录。

他为自己的数组创建了这段代码,该数组将为三个永远不会更改的api字符串设置值,但我需要将登录WordPress用户的用户名和密码包含在他的数组中。数组信息稍后在脚本中通过xml传递。这是用于自动登录到另一台服务器的SSL,当单击图像时,它会运行php代码。

这是我刚从他那里得到的代码,但我不相信这是正确的,因为当我插入记事本时,记事本++中的所有颜色都发生了变化:

// Set the Query POST parameters - array    
$query_vals = array(
\'api_username\' => \'api-username-goes-here\',
\'api_password\' => \'password-here\', 
\'api_key\' => \'api-key-here’,
\'username\' => $current_user[‘user_login’],
\'password\' => $current_user[‘user_pass’]        
);
我从Stackoverflow的同事那里得到的建议是:

您需要首先在代码中的某个地方调用此函数:

global $current_user;
get_currentuserinfo();
然后,您需要将数组更改为以下内容:

\'username\' => $current_user->user_login
然后有人发布了我发布的更正代码示例:

// Set the Query POST parameters
$query_vals = array(
    \'api_username\' => \'api-username-goes-here\',
    \'api_password\' => \'password-here\', 
    \'api_key\' => \'api-key-here\',
    \'username\' => $current_user[\'user_login\'],
    \'password\' => $current_user[\'user_pass\']
);
所以现在我真的很困惑该怎么办,因为我不知道该怎么搞砸开发人员的阵列。所以我想我的问题是,如何调整传递三个不变api字符串的代码,以及WP当前登录的用户用户名和密码?

我正在使用文件副本,以便原始代码不会被破坏。

这是onclick事件调用的整个php文件:

error_reporting(E_ERROR);
ini_set(‘display_errors’,true);

// Set the Query POST parameters
$query_vals = array(
\'api_username\' => \'website-api-username\',
\'api_password\' => \'api-password\', 
\'api_key\' => \'api-key goes here\',
\'username\' => $current_user[\'user_login\'],
\'password\' => $current_user[\'user_pass\']

);

// Generate the POST string
$postdata = \'\';
foreach($query_vals as $key => $value) {
$postdata .= $key.\'=\'.urlencode($value).\'&\';
}

// Chop off the trailing ampersand
$postdata = rtrim($postdata, \'&\');

// create a new cURL resource
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, \'https://third-party-provider.com/encrypt_login.xml\');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

// Save response to a string
$response = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($response);

// post the user data
$xml"&encrypted_username=".$encrypted_username"&encrypted_password=".$encrypted_password\';
if ($xml = FALSE)
$url = (\'https://website-that-is-originating-the-array.com/error\')
;

// Save response to a string
//var_dump($xml);
echo "Status: ".$xml->status;
这是除了结束标记之外的整个php文件。

1 个回复
SO网友:Douglas.Sesar

下面是一些代码;你需要看到$current_user 变量实际上是一个对象而不是数组(使用$current_user->user_login 而不是$current_user[\'user_login\'] ).

我还添加了一个简单的检查,以确保用户已登录。

// Set the Query POST parameters - array    
$query_vals = array(
\'api_username\' => \'api-username-goes-here\',
\'api_password\' => \'password-here\', 
\'api_key\' => \'api-key-here\'
);


//if( is_user_logged_in() ):

global $current_user;
get_currentuserinfo();

$query_vals[\'username\'] = $current_user->user_login;
$query_vals[\'password\'] = $current_user->user_pass;

//else:

//wp_die(\'You must be logged in\');

//endif;

结束