PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数

PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能。这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScript实现跳转,等等。下面的跳转方法考虑到很多,并参数化,可以用到具体的项目当中。

<?php
/**
 * 重定向浏览器到指定的 URL
 *
 * @param string $url 要重定向的 url
 * @param int $delay 等待多少秒以后跳转
 * @param bool $js 指示是否返回用于跳转的 JavaScript 代码
 * @param bool $jsWrapped 指示返回 JavaScript 代码时是否使用 <mce:script type="text/javascript"><!--
 标签进行包装
 * @param bool $return 指示是否返回生成的 JavaScript 代码
 */
function redirect($url, $delay = 0, $js = false, $jsWrapped = true, $return = false)
{
  $delay = (int)$delay;
  if (!$js) {
    if (headers_sent() || $delay > 0) {
      echo <<<EOT
  <html>
  <head>
  <meta http-equiv="refresh" content="{$delay};URL={$url}" />
  </head>
  </html>
EOT;
      exit;
    } else {
      header("Location: {$url}");
      exit;
    }
  }     

  $out = '';
  if ($jsWrapped) {
    $out .= '<script language="JavaScript" type="text/javascript">';
  }
  $url = rawurlencode($url);
  if ($delay > 0) {
    $out .= "window.setTimeOut(function () { document.location='{$url}'; }, {$delay});";
  } else {
    $out .= "document.location='{$url}';";
  }
  if ($jsWrapped) {
    $out .= '
// --></mce:script>';
  }     

  if ($return) {
    return $out;
  }     

  echo $out;
  exit;
}
?>
(0)

相关推荐

  • PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

    面象对向的三大特点:封装性.继承性.多态性 首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称为抽象一.封装性 封装就是把抽取出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有被授权的操作(方法)才能对数据进行操作. php提供了三种访问控制修饰符 public 表示全局,本类内部,类外部,子类都可以访问 protected 表示受保护的,只有本类或子类可以访问 private 表示

  • 解密ThinkPHP3.1.2版本之模板继承

    模板继承是ThinkPHP3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行重载. 因此,模板继承的优势其实是设计基础模板中的区块(block)和子模板中替换这些区块. 每个区块由<block></block>标签组成,并且不支持b

  • php的curl封装类用法实例

    本文实例讲述了两个php curl封装类的用法实例,这两个函数可以让我们非常的方便的使用php curl相关函数.分享给大家供大家参考.具体如下: 使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll) 开启php curl函数库的步骤 1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini

  • PHP实现的封装验证码类详解

    用PHP写一个验证码类,并进行封装.类名: validationcode.class.php代码如下: 复制代码 代码如下: <?php class ValidationCode {  private $width;  private $height;  private $codeNum;  private $image;   //图像资源  private $disturbColorNum;  private $checkCode;  function __construct($width=8

  • php图片水印添加,压缩,剪切的封装类实现

    php对图片文件的操作主要是利用GD库扩展.当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码.当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有了封装成类的想法. 操作图片主要历经四个步骤: 1.打开图片 2.操作图片 3.输出图片 4.销毁图片 1,3,4三个步骤每次都要写,每次又都差不多.真正需要变通的只有操作图片的这一步骤了.操作图片又往往通过1或多个主要的GD函数来完成. <?php class Image { private $i

  • php构造函数的继承方法

    本文实例讲述了php构造函数的继承方法.分享给大家供大家参考.具体如下: 第一种情况:子类没有定义构造函数时,默认继承.例子: <?php class A{ public $name; function __construct(){ echo $this->name="小强"; } } class B extends A{ } $bb = new B(); ?> 输出结果:小强 第二种情况:子类定义了构造函数,则不会被继承.实例: <?php class A{

  • php递归获取目录内文件(包含子目录)封装类分享

    代码如下: 复制代码 代码如下: function readFileFromDir($dir) {    if (!is_dir($dir)) {        return false;    }    //打开目录    $handle = opendir($dir);    while (($file = readdir($handle)) !== false) {        //排除掉当前目录和上一个目录        if ($file == "." || $file =

  • PHP类的封装与继承详解

    封装 把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节,通过public.protected.private等限定类成员的访问权限,数据被保护在内部,只通过被授权的成员方法才可以操作,尽可能的对成员进行封装. public:方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public. protected:本类和子类可以访问,外部对象不可以调用. private:只能在本类访问,子类与外部对象都不可能调用.经过private标记的方法或

  • thinkphp模板继承实例简述

    本文实例讲述了thinkphp模板继承的实现方法.分享给大家供大家参考.具体实现方法如下: 模板的继承: 复制代码 代码如下: <block name='top'></block><!--这是父级模板--> <div style='border:1px solid gray;background:#abcdef;height:100px;'>广告部分</div> <block name='body'></block> &l

  • PHP封装的Twitter访问类实例

    本文实例讲述了PHP封装的Twitter访问类.分享给大家供大家参考.具体如下: class Twitter { /** * Method to make twitter api call for the users timeline in XML * * @access private * @param $twitter_id, $num_of_tweets * @return $xml */ private function api_call($twitter_id, $num_of_twe

  • PHP类继承 extends使用介绍

    出来工作这么久了,项目经验倒是不少,但是当问及底层的东西时候,常常是一言不发了.现在项目设计底层的东西越来越少,可以说是真正用到的也就是那么一点,真正核心的东西都已经被框架封装好了.总感觉自己一直进步很慢,关于底层设计思想,常常也只可意会.随着时间的流逝,我们常常会感慨书到用时方恨少了,接下来一定要恶补设计思想了. 今天先来复习一下类继承. 类继承很重要,作为程序员也基本每天都会和他打交道,但是有些东西你真的都知道吗?下面是从官网上面看到的. 一个类可以在声明中用 extends,关键字继承另一

  • php类的扩展和继承用法实例

    本文实例讲述了php类的扩展和继承用法.分享给大家供大家参考.具体如下: <?php class Thread { var $topic; //帖子主题 var $body; //帖子内容 var $date; //帖子发布时间 var $author; //帖子作者 //函数Thread用于初始化变量等 function Thread() { //初始化变量 } //函数Send用于提交新帖子 function Send() { //检测变量的合法性后执行插入操作将变量存储到数据库中 } //

  • PHP封装的HttpClient类用法实例

    本文实例讲述了PHP封装的HttpClient类.分享给大家供大家参考.具体分析如下: 这是一段php封装的HttpClient类,可实现GET POST Cookie Session等简单的功能.原来做过,这两天重新修改了一下. <?php /* * Filename: httpclient.php * Created on 2012-12-21 * Created by RobinTang * To change the template for this generated file go

  • php继承中方法重载(覆盖)的应用场合

    本文实例分析了php继承中方法重载(覆盖)的应用场合.分享给大家供大家参考.具体分析如下: 方法重载(override)/覆盖--在什么情况下使用:当父类知道所有的子类都需要用到一个方法,但父类不知道怎么去写这个方法时,就需要用到方法的重载.这时候,可以让子类去重写,来覆盖这个方法. 通俗实例--父类(动物)知道其子类(猫和狗)都会叫,但它们的叫法都不一样,所以父类没法去写这个方法,只能让子类(猫和狗)去定义.代码如下: <?php class Animal{ public $name; pro

  • PHP封装CURL扩展类实例

    本文实例讲述了PHP封装CURL扩展类.分享给大家供大家参考.具体如下: <?php /** * @description: 封装CURL扩展 * @date: 2014-07-28 16:04 */ /** * @编码规范 * @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage * @variable 变量名小写, 变量名为多个单词, 每个单词小写,使用下划线_分割 eg: $curl_result * @func

  • PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)

    CSV大文件的读取已经在前面讲述过了(PHP按行读取.处理较大CSV文件的代码实例),但是如何快速完整的操作大文件仍然还存在一些问题. 1.如何快速获取CSV大文件的总行数? 办法一:直接获取文件内容,使用换行符进行拆分得出总行数,这种办法对小文件可行,处理大文件时不可行:办法二:使用fgets一行一行遍历,得出总行数,这种办法比办法一好一些,但大文件仍有超时的可能:办法三:借助SplFileObject类,直接将指针定位到文件末尾,通过SplFileObject::key方法获取总行数,这种办

  • php实现的Curl封装类Curl.class.php用法实例分析

    本文实例讲述了php实现的Curl封装类Curl.class.php用法.分享给大家供大家参考.具体如下: <?php //curl类 class Curl { function Curl(){ return true; } function execute($method, $url, $fields='', $userAgent='', $httpHeaders='', $username='', $password=''){ $ch = Curl::create(); if(false =

  • php实现mysql封装类示例

    php封装mysql类 复制代码 代码如下: <?php class Mysql { private $host; private $user; private $pwd; private $dbName; private $charset; private $conn = null; public function __construct() { $this->host = 'localhost';  $this->user = 'root';  $this->pwd = 'ro

  • php类的定义与继承用法实例

    本文实例讲述了php类的定义与继承用法.分享给大家供大家参考.具体如下: <?php /* * class */ class people { public $name; public $age; function __construct($namec,$agec) { $this->name = $namec; $this->age = $agec; } protected function getmessage() { return "姓名:".$this->

随机推荐