我正在为我的WordPress会员网站创建一个iPhone应用程序。在我的应用程序中,用户面对登录屏幕,他们输入用户名和密码,这些通过POST发送到我存储在服务器上的外部php页面。
我要做的是在外部php页面中检查用户的凭据。如果用户在wp数据库上注册并输入了正确的凭据,则发回“成功”响应,否则不执行任何操作。
我的问题是这不起作用。我正在使用wp_signon函数但由于某种原因is_wp_error($ user_verify)一直返回1.这是我的代码到目前为止,我真的很感谢你的帮助。
<?php $parse_uri = explode('apple', $_SERVER['SCRIPT_FILENAME']); //makes this page part of wordpress
$wp_load = $parse_uri[0].'wp-load.php';
require_once($wp_load);
global $wpdb;
global $current_user;
//####### THIS CODE IS RESPONSIBLE FOR A SECURE LOG IN INTO THE iPhone APP #############
header('Content-Type: application/json'); //matches the json content type the app is expecting
//SQL escape all inputs
$username = $wpdb->escape($_POST['username']);
$password = $wpdb->escape($_POST['password']);
$login_data = array();
$login_data['user_login'] = $username;
$login_data['user_password'] = $password;
$login_data['remember'] = true;
$user_verify = wp_signon( $login_data, true);
if (is_wp_error($user_verify) )
{
//DENY ACCESS : FAILURE
exit();
} else {
//$user_verify contains WP_User object
//GRANT ACCESS : SUCCESS
echo '[{"success":"true"}]';
exit();
}
?>
更新
经过一些测试,我上面提供的代码实际上功能完备,问题出在iOS端。