是把每一行的拼接结果字符串打印出来看? 我没怎么明白!
都试过了,csrf也关掉了,就是不行 我都试过了 百度过了 没办法了 才来问的!
因为他是在方法里面再次触发http请求的,也没有给我什么报错信息,日志也没有!
所以我一脸懵逼,我也不知道要怎么调试这个拼接的http请求是否可行
当我执行
Route::get('/forsockopen', "TestController@ForFsockopen");
这个路由的时候,进入方法中,执行我拼接的http请求,这个时候拼接的是一个post请求,但是请求一直发送不成功,但是当我拼接的http换成get请求时候(注释掉的那段) 这个请求就可以执行成功,执行
// Route::get('/testfsock', "TestController@TestFsock");
里面的操作
业务:访问一个url,触发一个方法,这个方法中自己拼接了一个http请求,利用php的fsockopen函数、以及fwrite函数,再次发起一个get或者post请求,实现php的多线程(这个应该是多线程吧)
问题:用这样的方式,拼接get请求可以成功访问,但是拼接post请求一直不能成功(我再次触发的方法中是忘一个文件中写入东西,get可以成功写入,post不行).
访问的代码如下
public function ForFsockopen () {
$host = '127.0.0.1:8000';
$port = 80;
$errno = '';
$errstr = '';
$timeout = 30;
$url = '/testfsock';
$param = array(
'name' => 'fdipzone',
'gender' => 'man'
);
$data = http_build_query($param);
// create connect
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
// $out = "GET $url HTTP/1.1\r\n";
// $out .= "Host: $host\r\n";
// $out .= "Connection:close\r\n\r\n";
$out = "POST $url HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: ".strlen($data)."\r\n";
$out .= "Referer: http://".$host.$url."\r\n";
$out .= "X-CSRF-TOKEN:csrf_token()\r\n";
$out .= "Cookie: username=admin;uid=200\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fclose($fp);
}
}
再次发起请求触发的代码如下
public function TestFsock () {
$fp = fopen('file/test.txt', 'a');
for ($i = 0; $i < 1000; $i ++ ) {
fwrite($fp, '888888');
}
fclose($fp);
}
路由如下
Route::get('/forsockopen', "TestController@ForFsockopen");
Route::post('/testfsock', "TestController@TestFsock");
// Route::get('/testfsock', "TestController@TestFsock");
我可以找到这个事件类,但是我找不到她的处理类。
所以我不明白这个事件到底做了什么事情。。。
按我的理解 应该是有一个事件类,一个事件处理类?
我可以实现啊!
RegistersUsers 这个trait中的register方法
public function register(Request $request)
{
$this->validator($request->all())->validate();
**event(new Registered($user = $this->create($request->all())));**
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
这个事件触发的处理类在哪里,@JellyBool
谢谢老大!我越来越喜欢@ 你了 哈哈
这个上面有解决方法
laravel5.5可以直接发送不用重写!