欢迎光临杨雨的个人博客站!

杨雨个人网站-杨雨个人博客-杨照佳

杨雨个人博客网站

关注互联网和搜索引擎的个人博客网站

首页 > WEB开发 > PHP >

行使PHP天生短网址的方案

发布时间:2016-11-26  编辑:杨雨个人博客网站   点击:   

正常的网址带上参数的那种也许会很长,尤其是我们在印刷纸质品如企业宣传册中要印上某个长的url的话很是丢脸,并且也没几小我私人会去记这个网址,固然此刻可以用扫二维码的方法打开长网址。可是人们可以行使短网址来实现美妙的链接,尤其是有字数限定的应用如微博。

短网址的实现道理就是有一个数据表会设置文件将短网址和现实网址举办对应,当哀求某个短网址时,措施跳转到对应的现实网址上去,从而实现网址的会见。

方案1:PHP+MySQl实现短网址的天生和读取

通例的方案我们将天生好的短网址和原网址对应到一张数据表中,然后供读取行使。我们先来看怎样天生独一的短网址。

//天生短网址
function code62($x){
	$show='';
	while($x>0){
		$s=$x % 62;
		if ($s>35){
			$s=chr($s+61);
		}elseif($s>9&&$s<=35){
			$s=chr($s+55);
		}
		$show.=$s;
		$x=floor($x/62);
	}
	return $show;
}
function shorturl($url){
	$url=crc32($url);
	$result=sprintf("%u",$url);
	return code62($result);
}
echo shorturl('http://www.helloweba.com/');
//1EeIv2

行使以上PHP代码可以天生独一的6位的短网址,然后我们将天生的短网址与原网址一路写入到MySQL表中,插入数据库的代码这里我就不写了,这是PHP基本。

接着,我们有一个link.php用来吸取读取url并实现真实跳转。

include_once('connect.php'); //毗连数据库
$url = $_GET['url'];
if(isset($url) && !empty($url)){
	$sql = "select url from shorturl where codeid='$url'";
	$query = mysql_query($sql);
	if($row=mysql_fetch_array($query)){
		$real_url = $row['url'];
		header('Location: ' . $real_url);
	}else{
		header('HTTP/1.0 404 Not Found');
		echo 'Unknown link.';
	}
}else{
	header('HTTP/1.0 404 Not Found');
	echo 'Unknown link.';
}

代码中,假如获得短网址对应的真实url,会行使header跳转到真实的页面上去,不然返回404代码。这样我们可以行使如: http://yourdomain/link.php?url=xxx来实现短网址会见。

继承,我们行使URL rewrite即重写成果来实现诸如可以通过地点:http://yourdomain/xxx 来会见。

以下是rewrite法则:

#Apache法则:
RewriteRule ^/(.*)$ /link.php?url=$1 [L]

#假如行使nginx,法则这样写:
rewrite ^/(.*)$ /link.php?url=$1 last;

方案2:PHP+ini实现短网址技能

对付方案1行使数据库的做法甜头就是操纵利便,而大量短网址查询必要做优化。而方案2则放弃数据库,行使ini设置,我们将短网址和真实网址设置在ini文件中,PHP直接通过parse_ini_file()读取ini文件,几行代码就可以实现短网址的跳转。

links.ini文件像这样设置:

baidu	= https://www.baidu.com/
qq		= http://www.qq.com/
hw		= http://www.helloweba.com/
dm		= http://www.helloweba.com/view-blog-362.Html

而index.php的代码可以这样写:

$links = parse_ini_file('links.ini');

if(isset($_GET['l']) && array_key_exists($_GET['l'], $links)){
	header('Location: ' . $links[$_GET['l']]);
}
else{
	header('HTTP/1.0 404 Not Found');
	echo 'Unknown link.';
}

虽然,我们还必要设置下rewrite法则。

#Apache法则:
RewriteRule ^/(.*)$ /index.php?l=$1 [L]

#假如行使nginx,法则这样写:
rewrite ^/(.*)$ /index.php?l=$1 last;

好了,我们此刻会见网址:http://demo.helloweba.net/dm,它直接跳转到现实网址:http://www.helloweba.com/view-blog-362.Html。

对比来说,第二种方案得当小型的应用,你还可以把url地点做成数组情势生涯,还可以做一个打点界面专门维护这些短网址。

本文地址:http://itbyc.com/php/13354.html
转载请注明出处。
分享是一种快乐,也是一种美德:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
博客首页 | WEB开发 | 网站运营 | CMS使用教程 滇ICP备14002061号-1