问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Thinkphp怎么实现异砦蟠

发布网友 发布时间:2022-04-29 05:42

我来回答

2个回答

懂视网 时间:2022-04-29 10:04

ThinkPHP提供了自带的错误提示页面,但是并不美观,提示信息显示如下:

1.jpg

我们如果想要更换提示页面应该怎么做呢?

以ThinkPHP3.2为例:

在应用配置文件(应用文件目录/Common/Conf/config.php)中添加:

/* 错误页面模板 */
'TMPL_ACTION_ERROR' => 'Public/dispatch_jump.html', // 默认错误跳转对应的模板文件'
'TMPL_ACTION_SUCCESS' => 'Public/dispatch_jump.html', // 默认成功跳转对应的模板文件'
//'TMPL_EXCEPTION_FILE' => 'Public/exception.html',// 异常页面的模板文件

然后我是在项目公共文件(项目目录/Public)中新建了dispatch_jump.html,模板内容如下:

<!DOCTYPE html>
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>跳转提示</title>
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <style type="text/css">
  *{box-sizing:border-box;margin:0;padding:0;font-family:Lantinghei SC,Open Sans,Arial,Hiragino Sans GB,Microsoft YaHei,"微软雅黑",STHeiti,WenQuanYi Micro Hei,SimSun,sans-serif;-webkit-font-smoothing:antialiased}
  body{padding:70px 0;background:#edf1f4;font-weight:400;font-size:1pc;-webkit-text-size-adjust:none;color:#333}
  a{outline:0;color:#3498db;text-decoration:none;cursor:pointer}
  .system-message{margin:20px 5%;padding:40px 20px;background:#fff;box-shadow:1px 1px 1px hsla(0,0%,39%,.1);text-align:center}
  .system-message h1{margin:0;margin-bottom:9pt;color:#444;font-weight:400;font-size:40px}
  .system-message .jump,.system-message .image{margin:20px 0;padding:0;padding:10px 0;font-weight:400}
  .system-message .jump{font-size:14px}
  .system-message .jump a{color:#333}
  .system-message p{font-size:9pt;line-height:20px}
  .system-message .btn{display:inline-block;margin-right:10px;width:138px;height:2pc;border:1px solid #44a0e8;border-radius:30px;color:#44a0e8;text-align:center;font-size:1pc;line-height:2pc;margin-bottom:5px;}
  .success .btn{border-color:#69bf4e;color:#69bf4e}
  .error .btn{border-color:#ff8992;color:#ff8992}
  .info .btn{border-color:#3498db;color:#3498db}
  .copyright p{width:100%;color:#919191;text-align:center;font-size:10px}
  .system-message .btn-grey{border-color:#bbb;color:#bbb}
  .clearfix:after{clear:both;display:block;visibility:hidden;height:0;content:"."}
  @media (max-width:768px){body {padding:20px 0;}}
  @media (max-width:480px){.system-message h1{font-size:30px;}}
 </style>
 </head>
 <body>
 <div class="system-message error">
  <?php
  if(isset($message)){
  ?>
  <div class="image">
  <img src="http://cdn.demo.fastadmin.net/assets/img/success.svg" alt="" width="150" />
  </div>
  <h1>
  <?php
  echo $message;
  }else{
  ?>
  <div class="image">
  <img src="http://cdn.demo.fastadmin.net/assets/img/error.svg" alt="" width="150" />
  </div>
  <h1>
  <?php
  echo $error;
  }?></h1>
  <p class="jump">
  页面将在 <span id="wait"><?php echo($waitSecond); ?></span><!-- <span id="wait">3</span> -->秒后自动<a id="href" href="<?php echo($jumpUrl); ?>">跳转</a>
  </p>
  <p class="clearfix">
  <a href="javascript:history.go(-1);" class="btn btn-grey">返回上一步</a>
  <a href="<?php echo($jumpUrl); ?>" class="btn btn-primary">立即跳转</a>
  </p>
 </div>
 <script type="text/javascript">
  (function () {
  var wait = document.getElementById('wait'),
   href = document.getElementById('href').href;
  var interval = setInterval(function () {
   var time = --wait.innerHTML;
   if (time <= 0) {
   location.href = href;
   clearInterval(interval);
   }
  }, 1000);
  })();
 </script>
 </body>
</html>

效果如下:

2.jpg

推荐教程:《TP5》

热心网友 时间:2022-04-29 07:12

解决方法:找Thinkphp3.2.3手册,内容如下!
和PHP默认的异常处理不同,ThinkPHP抛出的不是单纯的错误信息,而是一个人性化的错误页面,如下图所示:
错误页面
只有在调试模式下面才能显示具体的错误信息,如果在部署模式下面,你可能看到的是一个简单的提示文字,例如:
错误页面
一旦关闭调试模式,发生错误后不会提示具体的错误信息,如果你仍然希望看到具体的错误信息,那么可以如下设置:
ThinkPHP/Conf/convention.php里设置
'SHOW_ERROR_MSG'        =>  true,    // 显示错误信息
如果你试图在部署模式下访问一个不存在的模块或者操作,会发送404错误。
调试模式下面一旦系统发生严重错误会自动抛出异常,也可以用ThinkPHP内置的E方法手动抛出异常。
E('新增失败');
也可以支持异常代码(默认为0),例如:
E('信息录入错误',25);
同样也可以使用throw 关键字来抛出异常,下面的写法是等效的:
throw new ThinkException('新增失败');
我们可以自定义异常页面的显示,系统内置的异常模板在系统目录的Thinkphp/Tpl/think_exception.tpl,可以通过修改系统模板来修改异常页面的显示。
也通过设置TMPL_EXCEPTION_FILE配置参数来修改系统默认的异常模板文件, 例如:
ThinkPHP/Conf/convention.php里设置
'TMPL_EXCEPTION_FILE' => APP_PATH.'/Public/exception.tpl'
异常模板中可以使用的异常变量有:
$e['file']异常文件名
$e['line'] 异常发生的文件行数
$e['message'] 异常信息
$e['trace'] 异常的详细Trace信息
因为异常模板使用的是原生PHP代码,所以还可以支持任何的PHP方法和系统变量使用。
抛出异常后通常会显示具体的错误信息,如果不想让用户看到具体的错误信息,可以设置关闭错误信息的显示并设置统一的错误提示信息,例如:
ThinkPHP/Conf/convention.php里设置
'SHOW_ERROR_MSG' =>    false,
'ERROR_MESSAGE'  =>    '发生错误!'
设置之后,所有的异常页面只会显示“发生错误!”这样的提示信息,但是日志文件中仍然可以查看具体的错误信息。
系统的默认情况下,调试模式是开启错误信息显示的,部署模式则关闭错误信息显示。
另外一种方式是配置ERROR_PAGE参数,把所有异常和错误都指向一个统一页面,从而避免让用户看到异常信息,通常在部署模式下面使用。ERROR_PAGE参数必须是一个完整的URL地址,例如:
ThinkPHP/Conf/convention.php里设置
'ERROR_PAGE' =>'/Public/error.html'     系统默认为空
如果不在当前域名,还可以指定域名:
'ERROR_PAGE' =>'http://www.myDomain.com/Public/error.html'
注意ERROR_PAGE所指向的页面不能再使用异常的模板变量了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
荣耀v20杀后台严重? 聊天时哪些回复让人感觉不舒服? 货物运输保险案例分析 卞和泣玉注释 求解,卞和泣玉没学过,在线等解。 葛加走之底读什么 在等腰三角形ABC中,AB=AC=5,BC=6,求角B的三角函数值 ...人开走一架战斗机,在一架客机下面飞,好几个飞机来拦截, ...话是三架飞机 机型各不同 在山区飞行发现恐怖分子用驴车运核弹 用AK... ...的成为战斗机飞行员。战争结束回国继续抢银 ppt里面的图片上我想弄出米字格怎么设置啊!附图 2001年有大型的什么流星雨 好奇,为什么好多人要申请5-6张甚至更多张信用卡? 101教育ppt里面的课件怎样制好的田字格移动后就变了? 一个人有9张信用卡算不算多? 坦普勒-塔特尔彗星和狮子座到底啥关系呀? 怎样在ppt中打出带米字格的字 狮子座流星雨是由哪一彗星引起的? 坦普尔-塔特尔彗星的介绍 坦普尔—塔特尔彗星多少年一次? 有五张信用卡算多吗 一个普通厂里职员,办有六张信用卡算多吗? 为什么好多人都是弄了好几张银行卡的?有什么好处吗?只用一张卡不好吗? 上官婉儿怎么飞 高中如何如何选择文理科。 想学心理学高中怎么选科? 学文学理科心理测试 我不知道自己应该选文科还是理科.有没有什么心理测试来帮我判断? 心理测试 高中学文学理 不了解英国云服务器要怎么选择?多少钱? 狮子座流星雨来自于坦普尔-塔特尔彗星,慧星的碎屑高速运行并与地球相遇,部分落入地球大气层,这些碎屑 信用卡6张,不要太多,要留几张下来 坦普尔-塔特尔彗星会消失么? 狮子座流星雨的“妈妈”是什么彗星 固定时间到达地球的彗星有哪些,最好注明周期性 大家推荐外国电影阿。最好是欧美的。 识字游戏做在PPT上怎样让它想出示哪个出示哪个? 最新欧美校园电影 谁能说一下狮子座流星雨的情况? 为什么狮子座流星雨叫狮子座流星雨? 什么欧美动作电影,越多越好 流星雨有什么特殊的含义呢?拜托各位了 3Q 坦普尔-塔特尔彗星是哪个星座流星雨的母体彗星 今天狮子座流星雨! 自考毕业证丢失了可以补吗 自学考试毕业证丢了能补办吗,我该怎么办 自考毕业证丢失怎么补办? 自考毕业证遗失了,是否可以补办? 2021年度 自考毕业证丢失怎么补? 怎么辨别口红的真假