作者ql4au04 (泡面)
看板PHP
标题[请益] post被连续触发了两次
时间Sat Sep 6 04:49:47 2014
各位前辈大家好
小弟最近用laravel做寄发认证信的时候
发现同一个post会同时被触发两次
所以导致使用者会一次收到两封认证信
以前写都觉得没关系 只要有寄出就好
可是现在觉得这样很容易造成问题
所以来请教各位前辈 该如何解决
--------以下为简略程式码-----------
controller :
class Forget extends BaseController{
public function forget(){
$input = Input::all();
$user = User::where('account',$input['account'])->get()->first();
if($user->count()){
//产生token 存进database
Mail::send('reminder',array('url'=>'www.example.com','name'=>$user->name),
function($message) use ($user){
$message->from('
[email protected]','ql4au04');
$message->to($user->email,$user->name)->subject('reminder');
});
return Redirect::to('/');
}else{
return Redirect::to('/')->withErrors();
}
}
}
router:
Route::get('/','User@index');
Route::post('/forget',array('as'=>'forget','uses'=>'forget@forget'));
--
Sent from my CASIO fx-991es .
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.142.3.25
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1409950193.A.3B8.html
1F:推 shadowjohn: 真猛,用vim编code耶,程式码里还夹杂 :wq ... 09/06 09:02
2F:→ MOONRAKER: 楼上真内行 09/06 09:20
ptt 的界面vim太像 不小心就用了...
用vim也没比较强 还不是一直有问题XD
目前解决了 感觉是我命名的方式有问题
把 public function forget 改成 public function remind
就不会同时被触发两次了 这是我目前的猜测和解决办法
不知道是不是还有潜藏其他问题
※ 编辑: ql4au04 (223.142.34.31), 09/06/2014 14:38:56
3F:→ chrisQQ: 同名 function 被当 constructor ? 09/07 00:12
4F:→ ql4au04: 对XD 感谢指出问题! 09/07 00:42
5F:→ MOONRAKER: 可是php不是早就改成用__construct()了吗 09/07 01:33
6F:→ MOONRAKER: 你Laravel至少要php5.4 不会再把同名函式当ctor了 09/07 01:34
我php的版本是5.5.3 测试的结果是 如果有construct 则同名函式不会有问题
可是如果没有 同名函式一样会被视为construct诶
※ 编辑: ql4au04 (223.142.114.155), 09/08/2014 03:22:20
7F:→ MOONRAKER: 妙哉 以前改过一个别人的plugin就是用同名函式当ctor 09/08 16:42
8F:→ MOONRAKER: 帮他改成 __construct 才能正常执行 o_O 09/08 16:42
9F:推 Kenqr: 没__construct也没继承时会用同名method当constructor 09/08 20:23
11F:→ ql4au04: 感谢ken大补充!! 09/17 22:49