立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 163|回复: 0
打印 上一主题 下一主题

laravel控制器中,如何调用自建方法

[复制链接]

184

主题

438

帖子

3615

积分

论坛元老

积分
3615
在controller中,写上自建的function,并在本类中调用是常见的。在laravel中不能直使用方法调用,需要加上$this->才可以。

  1. namespace App\Http\Controllers;

  2. use Illuminate\Http\Request;
  3. use Illuminate\Database\Migrations\Migration;
  4. use Illuminate\Support\Facades\DB;
  5. use Encore\Admin\Widgets\Form;
  6. use App\Models\youerModel;
  7. use Encore\Admin\Show;
  8. use App\Models\JxjyModel;

  9. class JxjygjController extends Controller
  10. {

  11. //江西教师继续教育挂机
  12. ? ? ? ? public function index()
  13. ? ? ? ? {
  14. ? ?? ???return view('home/jxjy/index');
  15. ? ? }
  16. ??
  17. ? ? public function login(Request $request)
  18. ? ? {
  19. ? ? ? ? ? ? ? ? $data = $request->all();
  20. ? ? ? ? ? ? ? ? //dd($data);
  21. ? ? ? ? ? ? ? ? //用户登录提交的内容
  22. ? ? ? ? ? ? ? ? $username = $request['username'];
  23. ? ? ? ? ? ? ? ? $password = $request['password'];
  24. ? ? ? ? ? ? ? ? //判断是否存在记录
  25. ? ? ? ? ? ? ? ? $sfcz = DB::table('jxjy_gj')->where('username',$username)->count();
  26. ? ? ? ? ? ? ? ? if($sfcz > 0){
  27. ? ? ? ? ? ? ? ? ? ? ? ? //存在记录,则获取数据库密码,如果匹配就进入控制台,否则报错返回
  28. ? ? ? ? ? ? ? ? ? ? ? ? $dbpas = DB::table('jxjy_gj')->where('username',$username)->value('password');
  29. ? ? ? ? ? ? ? ? ? ? ? ? if($password == $dbpas){
  30. ? ? ? ? ? ? ? ? ? ? ? ? $cxjgs = JxjyModel::where('username',$username)->first();
  31. ? ? ? ? ? ? ? ? ? ? ? ? dd($cxjg);
  32. ? ? ? ? ? ? ? ? ? ? ? ? return view('home/jxjy/yhmb', compact('cxjgs'));//传递数组到查询用户面板视图
  33. ? ? ? ? ? ? ? ? ? ? ? ? }else{
  34. ? ? ? ? ? ? ? ? ? ? ? ? echo "";? ? ? ?
  35. ? ? ? ? ? ? ? ? ? ? ? ? }
  36. ? ? ? ? ? ? ? ? }else{
  37. ? ? ? ? ? ? ? ? ? ? ? ? //不存在记录,则查询官网获取CAS_SID,如果获取到就创建新记录,否则提示登录失败
  38. ? ? ? ? ? ? ? ? ? ? ? ? $CAS_SID = $this->getcas($username,$password);
  39. ? ? ? ? ? ? ? ? ? ? ? ? //dd($CAS_SID);
  40. ? ? ? ? ? ? ? ? ? ? ? ? if ($CAS_SID == '登录失败'){
  41. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //没获取到CAS_SID
  42. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? echo "";
  43. ? ? ? ? ? ? ? ? ? ? ? ? }else{
  44. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $cjsz = $this->getcjd($CAS_SID);
  45. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(count($cjsz) == 0){
  46. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //没有查询到成绩
  47. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? echo "";
  48. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
  49. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $users = JxjyModel::create(['username' => $username],['password' => $password],['CAS_SID' => $CAS_SID],['name' => $cjsz[0]],
  50. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ['chengji' => $cjsz[1]],['xueshi' => $cjsz[2]]);
  51. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return view('home/jxjy/yhmb', compact('users'));//传递数组到查询用户面板视图
  52. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
  53. ? ? ? ? ? ? ? ? ? ? ? ? }
  54. ? ? ? ? ? ? ? ? }
  55. ? ? }
  56. ? ?
  57. ? ? //官网获取CAS_SID
  58. ? ? ? ? ? ? public function getcas($username,$password)
  59. ? ? ? ? {
  60. ? ? ? ? ? ? ? ? $i = 0;//避免死循环
  61. ? ? ? ? ? ? ? ? do {
  62. ? ? ? ? ? ? ? ? $url = "http://study.teacheredu.cn/loginPre";
  63. ? ? ? ? ? ? ? ? $post1 = "pid=4955&projectId=4955&mainLogin=yes&autoLogin=&autoLoginIdcard=&username=$username&pwd=$password";
  64. ? ? ? ? ? ? ? ? $ch = curl_init();
  65. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_URL, $url);
  66. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_HEADER, 1);
  67. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_POST, 1);//post方式
  68. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_POSTFIELDS, $post1);
  69. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);//超时10秒中止访问,防止卡住
  70. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//阻止302重定向,不然获取不到完整cookie
  71. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置为0,只返回成功或失败,设置为1则返回网页源码
  72. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_COOKIE, "_const_cas_assertion_id_=1306979;");//CURLOPT_COOKIE提交cookie
  73. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  74. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  75. ? ? ? ? ? ? ? ? $content = curl_exec($ch);
  76. ? ? ? ? ? ? ? ? dd($content);
  77. ? ? ? ? ? ? ? ? $CAS_SID = "CAS_SID=".(trim($this->getSubstr($content,"CAS_SID=","Domain=")));//getSubstr取中间文本,trim删除两边空格
  78. ? ? ? ? ? ? ? ? $zfs = strlen($CAS_SID);//获取字符长度,59位的才是正确的
  79. ? ? ? ? ? ? ? ? $i++;
  80. ? ? ? ? ? ? ? ? unset($url);//解决curl在循环体中只执行一次问题
  81. ? ? ? ? ? ? ? ? unset($post1);
  82. ? ? ? ? ? ? ? ? if ($i >10){
  83. ? ? ? ? ? ? ? ? ? ? ? ? return '登录失败';
  84. ? ? ? ? ? ? ? ? ? ? ? ? break;}//避免死循环
  85. ? ? ? ? ? ? ? ? }while ($zfs != 59);
  86. ? ? ? ? ? ? ? ? curl_close($ch);//循环体外关闭
  87. ? ? ? ? ? ? ? ? return $CAS_SID;
  88. ? ? ? ? ? ? ? ? }
  89. ? ? ? ? ? ? ? ?
  90. ? ? //官网获取chengji,name,xueshi
  91. ? ? ? ? ? ? public function getcjd($CAS_SID)
  92. ? ? ? ? {
  93. ? ? ? ? ? ? ? ? $i = 0;//避免死循环
  94. ? ? ? ? ? ? ? ? do {
  95. ? ? ? ? ? ? ? ? $url = "http://study.teacheredu.cn/proj/studentwork/gradeViewNew.vm";
  96. ? ? ? ? ? ? ? ? $ch = curl_init();
  97. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_URL, $url);
  98. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_POST, 1);
  99. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_HEADER, 0);
  100. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);//超时10秒中止访问,防止卡住
  101. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//阻止302重定向
  102. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置为0,只返回成功或失败,设置为1则返回网页源码
  103. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_POSTFIELDS, "");
  104. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_COOKIE, $CAS_SID);
  105. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  106. ? ? ? ? ? ? ? ? curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  107. ? ? ? ? ? ? ? ? $result=curl_exec($ch);
  108. ? ? ? ? ? ? ? ? curl_close($ch);
  109. ? ? ? ? ? ? ? ? $name = trim(getSubstr($result,'personal">',' '));//获取姓名
  110. ? ? ? ? ? ? ? ? $chengji = trim(getSubstr($result,'class="add">','分'));//获取总分
  111. ? ? ? ? ? ? ? ? $xueshi = trim(getSubstr($result,'

    ','

    '));//获取总学习时间
  112. ? ? ? ? ? ? ? ? unset($url);//解决curl在循环体中只执行一次问题
  113. ? ? ? ? ? ? ? ? $i++;
  114. ? ? ? ? ? ? ? ? if ($i >10){
  115. ? ? ? ? ? ? ? ? ? ? ? ? return array();
  116. ? ? ? ? ? ? ? ? ? ? ? ? break;}//避免死循环
  117. ? ? ? ? ? ? ? ? } while ($name == '');
  118. ? ? ? ? ? ? ? ? curl_close($ch);//循环体外关闭
  119. ? ? ? ? ? ? ? ? return array($name,$chengji,$xueshi);
  120. ? ? ? ? ? ? ? ? }
  121. ? ? ? ? ? ? ? ?
  122. ? ? ? ? //取字符中间文字
  123. ? ? ? ? ? ? ? ? public function getSubstr($str, $leftStr, $rightStr)
  124. ? ? ? ? {
  125. ? ? ? ? ? ? ? ? preg_match("|$leftStr([^^]*?)$rightStr|u", $str, $matches);
  126. ? ? ? ? ? ? ? ? return $matches[1];
  127. ? ? ? ? }
  128. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|梦飞文学网 ( 赣ICP备15004458号-1 )???

GMT+8, 2019-11-4 16:07365在线滚球程序 , Processed in 0.070749 second(s), 25 queries .

Powered by Discuz! X3.4 ? 2001-2013 Comsenz Inc & yjwx

快速回复 返回顶部 返回列表