На самом деле я выполнял забытую часть аутентификации с помощью angularjs и restfullapis.i отправил ключ на почту потерянного пользователя для получения панели сброса пароля. Пользователь нажимает на ссылку подтверждения от почты ( Http: // безработный / услуги / пользователь / reset_pwd_confirm verification_id = 72e03c6aa3268cd37067243945ac69aa?&идентификатор_пользователь = 5) следующий apis-вызов.
private function reset_pwd_confirm(){
if($this->get_request_method() != "GET"){
$this->response('',406);
}
$verification_id = $this->_request['verification_id'];
$user_id = $this->_request['user_id'];
if(!empty($verification_id) && !empty($user_id) && $user_id > 0){
$tm=time()-86400;
$query = "SELECT user_id FROM user_pwd_reset WHERE user_id='".$user_id."' AND act_key='".$verification_id."' AND time > ".$tm."";
$get_user = $this->db->get_row($query);
if($this->db->num_rows == 1){
$curl = curl_init('http://localhost:3000/#/reset');
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, 'user_id='.$user_id);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_exec($curl);
}else{
$success = array('status' => "Failed", "msg" => "key and user are not match.");
$this->response($this->json($success),404);
}
}else{
$success = array('status' => "Failed", "msg" => "Invaild verification or user id.");
$this->response($this->json($success),404);
}
}
здесь мне нужно переместить угловую страницу, называемую HTTP: // локальный: 3000 / # / сброс с постом user_id, для этой цели я использовал curl, как я упоминал выше, но он возвращает ошибку как «Не могу POST /».
в чем была проблема?? скажи пожалуйста.
я думал, что проблема заключается в запросе от http получить метод, не так ли?
пожалуйста, дайте мне решения …
Если я правильно понял, что вы хотите достичь, это:
Пользователь щелкает ссылку в электронном письме (то есть запрос GET), и он должен вызвать другой запрос POST. Правильно?
Я был бы удивлен, если бы это было достигнуто через перенаправление на стороне сервера. Вы можете обойти это на клиенте через JavaScript.
но: вам действительно нужен запрос POST для этого?
У вас уже есть verification_id
в URL. Поэтому, когда пользователь щелкает его, сервер может сбросить пароль или перенаправить пользователя в «форму сброса пароля» и сделать недействительным verification_id
, Так verification_id
можно использовать максимум 1 раз.
это было бы хорошо?
Но если вам действительно нужно выполнить этот запрос POST, вот как.
Когда пользователь нажимает на эту ссылку, он ведет его на пользовательскую веб-страницу с чем-то вроде этого
HTML:
<body onload="onLoad()">
<form style="display:none" method="POST" action="some_url" id="myform">
<input type="hidden" name="user_id" value="your_user_id">
</form>
</body>
JavaScript:
function onLoad() {
var form = document.getElementById('myform');
form.submit();
}
Других решений пока нет …