提交页面 shorten.php:

<form method="post" action="show.php"><input type="text" name="url" value="" style="width:800px;padding:3px 7px;" /> <input type="submit" name="submit" value="Shorten Url" />
</form>

处理页面 show.php:

<?php
include 'functions.php';
include 'shorturls.php';$entry = $_POST['submit'];
$url = $_POST['url'];
$output = '';if($entry == 'Shorten Url' AND $url)
{if(!in_array($url,$shortUrls)){$uif = alphaID(count($shortUrls),false,6);if(!array_key_exists($uif,$shortUrls)){$shortUrls[$uif] = $url;$file = fopen('shorturls.php','w'); fwrite($file,'<?php $shortUrls = ' . var_export($shortUrls,true) . ';?>');fclose($file);$output = 'Original Url : '.$url.'<br> Shorten Ulr : <a href="http://www.yourdomain.com/api/s='.$uif.'" target="_blank">http://www.yourdomain.com/api/s='.$uif.'</a>';}else $output = 'access error';}else{$uif = array_search($url,$shortUrls);$output =  'Original Url : '.$url.'<br> Shorten Ulr : <a href="http://www.yourdomain.com/api/s='.$uif.'" target="_blank">http://www.yourdomain.com/api/s='.$uif.'</a>';}echo $output.'<br><br> <a href="shorten.php">Back</a>';}
?>

关联页面 functions.php

<?php
function alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
{$index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";if ($passKey !== null) {// Although this function's purpose is to just make the// ID short - and not so much secure,// with this patch by Simon Franz (http://blog.snaky.org/)// you can optionally supply a password to make it harder// to calculate the corresponding numeric IDfor ($n = 0; $n<strlen($index); $n++) $i[] = substr( $index,$n ,1);$passhash = hash('sha256',$passKey);$passhash = (strlen($passhash) < strlen($index))? hash('sha512',$passKey): $passhash;for ($n=0; $n < strlen($index); $n++) $p[] =  substr($passhash, $n ,1);array_multisort($p,  SORT_DESC, $i);$index = implode($i);}$base  = strlen($index);if ($to_num) {// Digital number  <<--  alphabet letter code$in  = strrev($in);$out = 0;$len = strlen($in) - 1;for ($t = 0; $t <= $len; $t++) {$bcpow = bcpow($base, $len - $t);$out   = $out + strpos($index, substr($in, $t, 1)) * $bcpow;}if (is_numeric($pad_up)) {$pad_up--;if ($pad_up > 0) $out -= pow($base, $pad_up);}$out = sprintf('%F', $out);$out = substr($out, 0, strpos($out, '.'));} else {// Digital number  -->>  alphabet letter codeif (is_numeric($pad_up)) {$pad_up--;if ($pad_up > 0) $in += pow($base, $pad_up);}$out = "";for ($t = floor(log($in, $base)); $t >= 0; $t--) {$bcp = bcpow($base, $t);$a   = floor($in / $bcp) % $base;$out = $out . substr($index, $a, 1);$in  = $in - ($a * $bcp);}$out = strrev($out); // reverse}return $out;
}
?>

关联页面 shorturls.php

<?php $shortUrls = array ();?>

原理: 将提交的网址存放数组里面,同时为之产生一个唯一的键,之后将该数组存放文本中,当然你也可以存放到数据库中,此实例为存放到文本中。

一些函数的解释:

1. array_search() 函数

array_search(value,array,strict)

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。

2. var_export() 函数

此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。

您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

比较 var_export() 和 var_dump().

最后是 接受页面 redirect.php

<?php
include 'shorturls.php';
$uid = $_GET['uid'];
$addr = ($uid AND array_key_exists($uid,$shortUrls)) ? $shortUrls[$uid]: '/';
header('location:'.$addr);

此页面需要结合 .htaccess or .waccess 使用

RewriteEngine On
RewriteRule ^s=(.*)$ /redirect.php?uid=$1 [R=301,L]

关联:

php创建短ID Create short IDs with PHP - Like Youtube or TinyURL

如果问题,敬请留言~

php 创建短地址 (var_export)相关推荐

  1. bit.ly 短地址转换_使用PHP创建Bit.ly短URL

    bit.ly 短地址转换 One of the more popular URL shortening services is Bit.ly. I've showed you how to creat ...

  2. solidity 安全 合约的短地址攻击——这个锅谁来背

    前一段时间,有个用户用说发交易的时候提示地址错误,后来发现发送的地址少了一字节:所以钱包检测发送地址时,会提示错误.当时也没当回事,以为是用户自己搞错了.最近研究solidity的时候,才明白了当时是 ...

  3. Mysql如何创建短索引(前缀索引)

    Mysql如何创建短索引 为什么要用短索引 有时需要索引很长的字符列,它会使索引变大并且变慢.一个策略就是模拟哈希索引.但是有时这也不够好,那么应该怎么办呢? 通常可以索引开始的几个字符,而不是全部值 ...

  4. 开源短地址_如何在短短5分钟内完成您的第一个开源贡献

    开源短地址 by Roshan Jossey 罗珊·乔西(Roshan Jossey) 如何在短短5分钟内完成您的第一个开源贡献 (How to make your first open source ...

  5. 创建主机地址 (A) DNS 记录

    项目列表描述 在 DNS 服务器上创建主机地址 (A) 记录. 有关在这段代码中使用的 CreateInstanceFromPropertyData 方法的更多信息,请单击此处. 支持平台 Windo ...

  6. 短地址短链接免费接口:缩短链接地址。可用于缩短链接场景,如:电子发票链接,促销活动链接,新闻文章链接等

    短地址短链接接口服务,申请后即可免费使用,提供全接口服务,缩短链接地址,广泛应用于缩短链接场景,如:电子发票链接,促销活动链接,新闻文章链接等. 使用说明: 1.以下短地址接口开发资料供开发技术人员参 ...

  7. 什么是短网址?如何调用接口生成短地址?

    随着网络应用的深入和普及,网址资源越来越少了,长尾网址也派上用场了,只是网址太长不方便识别与记录.因此,就有了短网址替代长网址的技术接口. 随着SEO的重要性越来越明显,在推广的时候如果把网页链接缩短 ...

  8. 微博URL短地址lua生成算法

    短地址(Short URL),或 叫短网址.短链接等等 ,就是比较短的URL地址. 借助短地址,可以将原来冗长的网址替换成简短的网址,让使用者可以更容易分享链接. 在Web 2.0的今天,不得不说,这 ...

  9. Java学习 - URL短地址压缩算法

    短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn.新郎的t.cn等.我们在新浪微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://t.cn/hrYnr0. ...

最新文章

  1. 刷手机被AI公开点名,比利时议员在议会上不能再「分心」了
  2. 你还以为,除了你自己就没有人懂你女朋友吗?
  3. win8看不到win7局域网计算机名,实现Win7旗舰版与win8.1系统局域网里文件共享的设置方法【图】...
  4. DIY人脸跟踪电风扇送女朋友(3)
  5. 公用ip地址查询_是什么使您无法更改公用IP地址并在Internet上造成严重破坏?
  6. socket网络编程ftp
  7. python autohotkey_PyAutoGUI-python版的autoit/AHK
  8. 计算机的硬盘 内存在哪查到,电脑硬盘内存怎么查看
  9. UCall能真正的免费打电话,爽
  10. RocketMQ 概述
  11. nodejs 模板引擎ejs的使用
  12. 基于微信会议室预约小程序毕业设计设计与实现 开题报告参考
  13. Julia最新windows版下载
  14. springboot自定义Servlet容器
  15. 矩阵求逆(JAVA)利用伴随矩阵
  16. 从打造“兴趣电商”到“完全闭环”,抖音电商之路
  17. HTB靶机01-Blue-WriteUp
  18. cocos creator制作微信抖音小游戏《黄金矿工》
  19. Java多线程游戏实例分享2-雷火(手把手教你做个超炫酷的星际争霸)
  20. 代码覆盖率 ——语句覆盖 Statement Coverage、分支覆盖 Branch Coverage、 路径覆盖 Path Coverage的区别

热门文章

  1. python登录界面实现密码在明文与星号间切换_两个API让星号密码框显示成明文
  2. python监控桌面捕捉_想要远程获取对方的桌面?Python教你一招搞定!
  3. python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法
  4. consul命令行查看服务_第三章 consul服务注册与服务查询
  5. 解决/usr/local/lib/libglog.so.0: error adding symbols: DSO missing from command line
  6. 2-2hadoop概述
  7. 计算机网络维护工具,一种计算机网络维护工具箱的制作方法
  8. VOC数据集将XML转为对应的train.txt,trainval.txt,val.txt,test.txt
  9. top-1和top-5正确率与错误率以及目标检测评价指标
  10. wordpress插件-really-simple-ssl插件解决网站开启ssl证书后,图片不能正常显示