處理頁面show.php:
-
-
include 'functions.php';
- 包含'shorturls.php';
-
- $entry = $_POST['提交'];
- $url = $_POST['url'];
- $output = '';
-
- if($entry == '縮短網址' AND $url )
- {
- if(!in_array($url,$shortUrls))
- {
- $uif = alphaID (數($shortUrls),假,6);
-
- if (!array_key_exists($uif,$shortUrls))
- {
- $shortUrls[$uif] = $url;
-
- $file = fopen('shorturls.php','w');
- fwrite($file,'');
- fclose($file);
- $output = '原始網址:'.$url.'
;縮短Ulr : http:// www.yourdomain.com/api/s ='.$uif.'';
- }
- else $output = '存取錯誤';
- }
- else
- {
- $uif = array_search($url,$shortUrls);
- $output = '原始網址:'.$url.'
;縮短Ulr : http://www.yourdomain.com/api/s ='.$uif.'';
- }
-
- echo $output.'
回傳';
- }
- ?>
複製程式碼
關聯頁面functions.php
-
-
function alphaID($in, $to_num = false, $pad_up = false, $passKey 🎜> $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- if ($passKey !== null) {
- // 雖然此函數的目的只是使 ID y> // > // 使用此補丁Simon Franz (http://blog.snaky.org/)
- // 您可以選擇提供密碼以使其變得更加困難
- // 計算相應的數字ID
-
- for ($n = 0; $n
- $passhash = hash('sha256',$ passKey);
- $passhash = (strlen($passhash) ? hash('sha512',$passKey)
- : $passhash;
-
- for (🎜> : $passhash;
-
- for ( $n=0; $n
- array_multisort($p, SORT_DESC, $i);
- $index = 內爆($i);
- }
-
- $base = strlen($index);
-
- if ($to_num) {
- // 數字 $in = strrev($in);
- $out = 0;
- $len = strlen($in) - 1;
- for ($t = 0; $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
- {
- // 數字-->> 字母代碼
- if (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 = 下限($in / $bcp) % $base ;
- $out = $out 。 substr($index, $a, 1);
- $in = $in - ($a * $bcp);
- }
- $out = strrev($out); // 反轉
- }
-
- return $out;
- }
- ?>
-
複製程式碼
關聯頁shorturls.php
原則:將搭建的倉庫倉庫裡面,同時為產生之一個最後的鍵,之後把倉庫倉庫文本中,當然你也可以搭建到數據庫中,此搭建為搭建到文本中。
有關的函數
1. array_search() 函數
array_search(值,數組,嚴格)
array_search() 函數與 in_array() 一樣,在記憶體中尋找一個鍵值。如果找到了該值,則符合元素的鍵名會被傳回。如果沒找到,則傳回 false。
2. var_export() 函數
此函數傳回關於傳遞給函數的變數的結構訊息,它和var_dump()類似,不同其傳回的表示是合法的PHP程式碼。
您可以將函數的第二個參數設為TRUE,從而傳回變數的表示。
比較 var_export() 和 var_dump().
最後是接受頁面redirect.php
include 'shorturls.php'; - $uid = $_GET['uid'];
- $addr = ($uid AND array_key_exists($uid,$shortUrls)) ? $shortUrls[$uid]: '/';
- header('位置:'.$addr);
- ?>
-
-
複製程式碼
此頁需結合.htaccess 或.waccess 使用:
RewriteEngine 開啟- RewriteRule ^s=(.*)$ /redirect.php?uid=$1 [R=301,L]
-
-
複製程式碼
|