日期:2014-05-16  浏览次数:20526 次

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;         
}       
?>


 

一个通用的操作提示类的编写

在设计一些系统的时候,经常需要给用户进行操作提示。这种提示很重要,友好的提示能够提升用户对系统的好感度。操作提示有很多设计,下面是我的一个简陋的方案,仅抛砖引玉。

 

<?php

class Tips{

	private $tips;
	static private $_instance;
	
	private function __construct($string, $url)
	{
		$this->tips = "
<meta http-equiv=refresh content=4;url=$url>
<div style='border:1px solid #B4D8F4; width:320px; height:120px; margin:0 auto; font-size:12px;'>
	<div style='background-color:#CDE6F9; height:20px;'></div>
	<div align='center' style='font-size:14px; font-weight:bold; margin:20px 0 20px 0;'>$string</div>
	<div align='center'><a href='$url'>返回</a> (4秒后自动返回)</div>
</div>
	";
		return $this->tips;
	}

	public function __toString(){
        return $this->tips;
    }
	
	private function __clone(){}
	
	public static function get_tips($string, $url)
	{
		
		if( FALSE == (self::$_instance instanceof self) )
		{
			self::$_instance = new self($string, $url);
		}
		return self::$_instance;
    }
}

?>

这个类功能很简单,就是实现了4秒后跳转到某个链接,或者点击跳到那个链接。

__toString()这个函数很重要,它可以实现类对象的字符串输出。

如何使用这个类呢?

include_once("./tips_class.php");
$hit = "错误:两次输入的密码不一致";
$jump = "../login.php";
echo $tips = Tips::get_tips($hit, $jump);