【发布时间】:2018-08-14 05:33:31
【问题描述】:
这是我的注册代码,当我在 android 中点击 api 时,我总是收到 400 个错误请求作为响应,但在邮递员中,我收到 200 个响应,这是我的问题。请帮忙。这是我的控制器代码。
验证注册数据并保存。
public function register_user_get()
{
$user_data = $_GET['user_details'];
$user_details_arr = array();
$user_details_arr = json_decode($user_data);
$username_exist = $this->apilogin_model->check_username_exists($user_details_arr->username);
if(!empty($username_exist))
{
$response = array(
'message'=>'Username is already exist',
'status'=>false
);
$this->response($response,200);
}
$referred_by = $user_details_arr->referred_by; //'company';
if($referred_by == 'company')
{
$referral_code = ROOT_REFERRAL_CODE;
$user = $this->apilogin_model->get_user_details_by_referral_code($referral_code);
if(empty($user))
{
// if referral code in invalid
$response = array(
'message'=>'Invalid Referral code',
'status'=>false
);
$this->response($response,200);
}
}
else if($referred_by == "manual")
{
$referral_code = $user_details_arr->referral_code;
$user = $this->apilogin_model->get_user_details_by_referral_code($referral_code);
if(empty($user))
{
$response = array(
'message'=>'Invalid Referral code',
'status'=>false
);
$this->response($response,200);
}
}
else
{
}
$parent_id = $user[0]->id;
$data = array(
'name' => $user_details_arr->name,
'username' => $user_details_arr->username,
'password' => md5($user_details_arr->password),
'paytm_no' => $user_details_arr->paytm_no,
'mobile_no' => $user_details_arr->mobile_no,
'email_id' => $user_details_arr->email_id,
'parent_id' => $parent_id,
'referral_code' => $this->generate_code(), // for generate 10 digit unique referral code
'is_deleted' => 'N',
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
);
$res = $this->apilogin_model->save_affiliate_data($data);
$transaction_data = $this->parent_get($res,$parent_id,LEVEL_FOR_HELP);
$child_arr = array(
'sender_id' =>$res,
'receiver_id' =>COMPANY_ID,
'status'=>0,
'created_at' =>date('Y-m_d H:i:s')
);
array_push($transaction_data,$child_arr);
//$this->db->set($transaction_data);
$this->db->insert_batch(DB_PREFIX.'_transaction', $transaction_data);
if($res > 0)
{
// if data saved successfully
$response = array(
'message'=>'Registered Successfully',
'status'=>true
);
$this->response($response,200);
}
else
{
// if data doesn't saved successfully
$response = array(
'message'=>'Registration Failed',
'status'=>false
);
$this->response($response,200);
}
}
虽然我在邮递员中调用相同的函数,但它工作正常,但在尝试使用 android 时,我收到 400 个错误请求,即使我在代码中的任何地方都没有响应 400。
【问题讨论】:
-
旁注: 看起来您正在使用
md5()进行密码散列。不要那样做!这是非常不安全的。请改用 PHP 的password_hash()和password_verify()。如果您运行的 PHP 版本低于 5.5(我真的希望您不是),您可以使用 password_compat library 来获得相同的功能。 -
我还建议在向服务器发送数据时使用
POST,并且仅在要获取数据时使用GET。 -
好的,谢谢你的建议
-
响应的可能是 Web 服务器,而不是您的代码。您是否调试过代码以查看您的 android 代码实际尝试调用的 URL?但正如我所建议的,如果您改用 POST,则不会遇到错误编码的 URL 数据的问题,因此这应该是第一个行动方案。
-
@vijendrachouhan 检查我的更新答案
标签: php rest codeigniter android-studio