我正在为我的 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 端。