安卓使用Volley对接PHP后台时Postman调用API报缺少必填参数如何解决
你收到的required parameters are not available报错是由代码里的isTheseParametersAvailable参数校验函数触发的,校验不通过就会返回这个报错,排查方向和修改方案如下:
- Postman配置校验
- 请求方法必须设置为POST,不能用GET请求
- 先在URL后拼接GET参数:调用注册接口格式为
你的接口地址?apicall=signup,调用登录接口格式为你的接口地址?apicall=login,不能漏掉apicall参数 - POST body选择
x-www-form-urlencoded格式,按接口要求填入对应参数:注册需要填username、email、password三个参数,登录需要填username、password两个参数,参数名必须和要求完全一致,不要有拼写错误或者多余空格
- 修正PHP代码的语法错误
你的现有代码存在多处语法错误,会导致逻辑异常,修改点如下:- 移除signup分支参数校验数组的多余逗号
原代码:
修改为:if(isTheseParametersAvailable(array('username','email','password',))){if(isTheseParametersAvailable(array('username','email','password'))){ - 修复INSERT语句的语法错误,删除字段末尾的多余逗号,修正占位符数量和绑定参数对应关系
原代码:
修改为(如果$stmt = $conn->prepare("INSERT INTO ci_users (username, email, password,) VALUES (?, ?, ?, ?)"); $stmt->bind_param("ssss", $username, $email, $password);mobile_no是表中非必填字段):
如果$stmt = $conn->prepare("INSERT INTO ci_users (username, email, password) VALUES (?, ?, ?)"); $stmt->bind_param("sss", $username, $email, $password);mobile_no是必填字段,需要额外补充mobile参数的校验、接收和传值逻辑。 - 修复注册成功后的查询语句错误,删除字段末尾逗号,修正表名
原代码:
修改为:$stmt = $conn->prepare("SELECT user_id,id, username, email, FROM users WHERE username = ?");$stmt = $conn->prepare("SELECT user_id, id, username, email FROM ci_users WHERE username = ?"); - 修复登录分支的错误标识逻辑,登录失败时error字段应该为true
原代码:
修改为:else{ $response['error'] = false; $response['message'] = 'Invalid username or password'; }else{ $response['error'] = true; $response['message'] = 'Invalid username or password'; }
- 移除signup分支参数校验数组的多余逗号
- 额外安全提示:不要用md5做密码加密,安全性极低,建议改用PHP内置的
password_hash()函数做加密,password_verify()做校验。
内容的提问来源于stack exchange,提问作者Nilesh Singh Dahiya
相关产品推荐
相关产品推荐

