zoukankan      html  css  js  c++  java
  • tp居然会输出 扩展配置文件的 内容?

    tp会在 每个网页/action 生成页面 的时候, 有一个执行过程, 加载过程:
    入口文件-> ...., -> 加载配置文件, .... -> 加载控制器 -> 加载action

    所以, 在任意一个 action的页面内容 显示之前 都会加载 配置文件中的内容, (是加载! ) 通常来说, 配置文件 是php的return数组语句, 所以是不会输出具体内容的

    但是, 如果你的 用户配置/扩展配置文件中, 比如 bala.php为了调试写入内容的时候, 你没有写 <?php return array(.... 而是随便写入什么内容的时候, 比如 "abc", 那么这个bala.php在加载的时候, 就会把它的内容 abc, 输出到后面的action页面中 , 所以,你会觉得很奇怪的是, 这个abc 哪里来的? action中没有写任何内容啊? 原来就是从 这个 非正常的 配置文件中来的, 输出来的/加载来的.

    当然如果你在配置文件中 , 写了 <?php....那么在此 标签之后的内容, 或者是任意写的内容不会被输出, 或者会报错; 但是 此 ?php标签之前写的内容 回被输出, 甚至如果是 有html标签的color等都会按html的内容格式输出!

    正是因为 配置文件在加载的时候, php标签会被浏览器所解析, 其中的内容 (如果有输出, 像echo, print_r, var_export之类的), 会被输出到浏览器中,所以, 配置文件中的语句, 都应该是 return array(....); 把配置项写在 array里面, 这样就不会有 输出了

    配置文件的格式要求, 通常是
    php标签顶格写, "return array( "顶格写, 配置项前面空4格, 最后的");" 顶格写.
    比如:

    <?php
    return array(
        'name' => 'jack',
        'address' => 'Chengdu',
    );
    

    =====================================================

    tp的页面跳转和重定向?

    • 跳转和重定向都可以实现类似的功能, 只是: 页面跳转包含的东西和功能 对于tp来说更多, tp对页面跳转提供了更多的支持和内容. 比如跳转 tp提供了 模板 , 是: 'Tpl > dispatch_jump.tpl', 跳转还支持 ajax,功能 跳转还支持默认的跳转地址 $_SERVER[HTTP_REFERER 和 history.back(-1)

    • 而重定向, tp支持的功能就要简单得多,支持的更少. 只有你自己输入参数.
      如果要使用 控制器/操作的方式 表示重定向, 就要用 类方法: $this ->redirect(....) 如果重定向的地址 不使用控制器的方式 , 使用纯粹的url地址,就用 全局函数redirect(..)

    • 其实 sucess 和 redirect的两种方式 实现结果和 效果上 都差不多, 你可以随意选择. 幸好! 在redirect跳转中, 也提供了 等待时间, 和 提示信息, 所以使用起来也是非常方便的!比如: this->redirect('jump_addr', array('传递参数'), jump_wait_time, 'tip_message');

    怎样禁止鼠标点击按钮的跳转页, 不能直接访问?

    • 感觉要实现不能直接在地址栏中输入网址直接访问, 的唯一方法就是 用 表单的 post方式来检查, 用 IS_POST来判断. 而不能用 IS_GET方式来判断. 因为很多跳转的方式, 都是 IS_GET.

    而且, 只要是 用 tp 的U 方法实现的 页面跳转, 不管你在 U 方法中 传不传递 参数, 其实都是 GET 方法, 所以 你用 if(!IS_GET) 来判断, 是不会有效的! 比如下面这个就可以直接访问这个页面,而不会跳转到index的

    {:U('to_addr')}, 或者:  {:U('to_addr?id=10')}
    echo $_SERVER['REQUEST_METHOD'].'<br>';    // 这个将显示 GET
        if(!IS_GET){
          $this->redirect('index');   /// 不会跳转
        }
    

    - 应该将按钮放在 form表单中. 因为表单可以设置为 post, 然后在跳转页面检查是否是 IS_POST, 这样如果不是由按钮点击而来的, 就不能直接在地址栏输入地址 而直接访问 - 虽然这样的方式, 并不是那么优雅 :inelegant "不优雅"的实现方式. 所幸的是: 表单form 还有一个target的属性(就像超链接a的属性), 可以指定 form提交表单后跳转的页面位置:_parent, _top, _self, 或者是某个名字, 如同 `iframe name="certain_form_jump_target">`, 而且可以实现表单提交不刷新页面. !默认的!target就是_self自身页面, 所以form提交到不新开的页面中, 即自身所在的窗口中.

  • 相关阅读:
    损失函数及经验风险和结构风险
    ML面试题网站及ML模型网站
    数据归一化
    逻辑回归
    什么是凸函数及如何判断一个函数是否是凸函数
    Feature Selection Can Reduce Overfitting And RF Show Feature Importance
    Python Machine Learning-Chapter4
    skywalking与pinpoint全链路追踪方案对比
    全)Java从单体到微服务打造房产销售平台 2018年慕课网 高清视频+源码
    CentOS7 通过YUM安装MySQL5.7
  • 原文地址:https://www.cnblogs.com/bkylee/p/13739853.html
Copyright © 2011-2022 走看看