ホームページ >バックエンド開発 >PHPチュートリアル >PHPで短縮アドレス(var_export)を作成する方法

PHPで短縮アドレス(var_export)を作成する方法

WBOY
WBOYオリジナル
2016-07-25 09:04:281182ブラウズ
复制代码

处理页面 show.php:

  1. include 'functions.php';
  2. 「shorturls.php」をインクルードします。
  3. $entry = $_POST['submit'];
  4. $url = $_POST['url'];
  5. $output = '';
  6. if($entry == '短縮 URL' AND $url)
  7. {
  8. if(!in_array($url,$shortUrls))
  9. {
  10. $uif = alphaID(count($shortUrls),false,6);
  11. if(!array_key_exists($uif,$shortUrls))
  12. {
  13. $shortUrls[$uif] = $url;
  14. $file = fopen('shorturls.php','w');
  15. fwrite($file,'');
  16. fclose($file);
  17. $output = '元の URL : '.$url.'
    Ulr を短縮: http://www.yourdomain.com/api/s ='.$uif.'';
  18. }
  19. else $output = 'アクセスエラー';
  20. }
  21. else
  22. {
  23. $uif = array_search($url,$shortUrls);
  24. $output = '元の URL : '.$url.'
    Ulr を短縮: http://www.yourdomain.com/api/s ='.$uif.'';
  25. }
  26. echo $output.'

    戻る';
  27. }
  28. ?>
复制牌

关联页面functions.php

  1. <?php
  2. 関数alphaid($ in、$ to_num = false、$ pad_up = false、$ passkey = null)
  3. {
  4. $ index = "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstubwxyz"
  5. if ($passKey !== null) {
  6. // この関数の目的は
  7. // ID を短くすることだけですが、それほど安全ではありません。
  8. // Simon Franz によるこのパッチ (http://blog .snaky.org/)
  9. // オプションでパスワードを指定して、より困難にすることができます
  10. // 対応する数値 ID を計算します
  11. for ($n = 0; $n
  12. $passhash = hash('sha256',$passKey);
  13. $passhash = (strlen($passhash) < strlen($index))
  14. ?ハッシュ('sha512',$passKey)
  15. : $passhash;
  16. for ($n=0; $n
  17. array_multisort($p, SORT_DESC, $i);
  18. $index = 爆破($i); $base = strlen($index);
  19. if ($to_num) {
  20. // デジタル数字 <<-- アルファベット文字コード
  21. $in = strrev($in);
  22. $out = 0;
  23. $len = strlen($in) - 1;
  24. for ($t = 0; $t <= $len; $t++) {
  25. $bcpow = bcpow($base, $len - $t);
  26. $out = $out + strpos($index, substr($in, $t, 1)) * $bcpow;
  27. }
  28. if (is_numeric($pad_up)) {
  29. $pad_up--;
  30. if ($pad_up > 0) $out -= pow($base, $pad_up);
  31. }
  32. $out = sprintf('%F', $out);
  33. $out = substr($out, 0, strpos($out, '.'));
  34. }
  35. else
  36. {
  37. // デジタル番号 -->> アルファベット文字コード
  38. if (is_numeric($pad_up)) {
  39. $pad_up--;
  40. if ($pad_up > 0) $in += pow($base, $pad_up);
  41. }
  42. $out = "";
  43. for ($t = Floor(log($in, $base)); $t >= 0; $t--) {
  44. $bcp = bcpow($base, $t);
  45. $a = フロア($in / $bcp) % $base;
  46. $out = $out 。 substr($index, $a, 1);
  47. $in = $in - ($a * $bcp);
  48. }
  49. $out = strrev($out); // 逆にします
  50. }
  51. return $out;
  52. }
  53. ?>
  54. 复制代
关联页面 shorturls.php

  1. 复制コード
の原則: 取引されたネットワーク址は、唯一の键を生成すると同時に、その数グループをテキストに保存します。もちろん、データベースに保存することもできます。この例は、テキストに保存されます中。
有关的関数数

1. array_search() 関数数 array_search(値,配列,厳密) array_search() 関数は、in_array() と同様に、数値グループ内の 1 つのチェック値を検出します。この値が検出された場合は、一致する要素のチェック名が返されます。検出されなかった場合は、false が返されます。

2. var_export() 関数数 この関数は、関数に送信される変更に関する構造情報を返します。var_dump() と似ていますが、返される内容が正当な PHP コードであることが異なります。 関数の 2 番目のパラメータを TRUE に設定することで、変数の表示を返すことができます。

var_export() と var_dump() の比較。

最後は受页面 redirect.php

include 'shorturls.php';
$uid = $_GET['uid'];
    $addr = ($uid AND array_key_exists($uid,$shortUrls)) ? $shortUrls[$uid]: '/';
  1. header('location:'.$addr);
  2. ?>
  3. 复制代
  4. このページでは .htaccess または .waccess の使用が必要です。

    RewriteEngine On
    RewriteRule ^s=(.*)$ /redirect.php?uid=$1 [R=301,L]
    1. 复制代
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。