PHP 짧 은 URL 생 성 방법 집합

정상 적 인 사이트 에 파 라 메 터 를 가 진 것 은 매우 길 수 있 습 니 다.특히 우 리 는 기업 팸플릿 에 긴 url 을 찍 으 려 면 매우 보기 싫 고 이 사 이 트 를 기록 하 는 사람 도 별로 없습니다.비록 지금 은 QR 코드 를 스 캔 하 는 방식 으로 긴 사 이 트 를 열 수 있 지만.그러나 사람들 은 짧 은 인터넷 주 소 를 이용 하여 아름 다운 링크 를 실현 할 수 있다.특히 글자 수 제한 이 있 는 응용 은 웨 이 보 와 같다.
짧 은 사이트 의 실현 원 리 는 하나의 데이터 시트 가 파일 을 설정 하여 짧 은 사이트 와 실제 사이트 주 소 를 대응 시 키 는 것 이다.짧 은 사이트 주 소 를 요청 할 때 프로그램 은 해당 하 는 실제 사이트 로 이동 하여 사이트 의 방문 을 실현 하 는 것 이다.
프로젝트 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('https://www.jb51.net/'); 
//1EeIv2 
위의 PHP 코드 를 사용 하면 유일한 6 비트 의 짧 은 주 소 를 만 들 수 있 습 니 다.그리고 우 리 는 생 성 된 짧 은 주 소 를 원래 의 사이트 와 함께 MySQL 표 에 기록 할 것 입 니 다.데이터 베 이 스 를 삽입 하 는 코드 는 여기에 쓰 지 않 겠 습 니 다.이것 은 PHP 기반 입 니 다.
이 어 url 을 읽 고 실제 점프 를 실현 하 는 링크.php 가 있 습 니 다.

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.hw.com/ 
dm    = http://www.dm.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.jb51.net/dm실제 사이트 로 바로 이동 합 니 다.https://www.jb51.net/view-blog-362.html
이에 비해 두 번 째 방안 은 작은 응용 에 적합 하 며 url 주 소 를 배열 형식 으로 저장 할 수 있 고 관리 인터페이스 로 이런 짧 은 인터넷 주 소 를 전문 적 으로 유지 할 수 있다.
세 번 째 방안:php 버 전의 짧 은 링크 생 성 방법

<?php
function shorturl($input) {
$base32 = array (
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', '0', '1', '2', '3', '4', '5'
);
 
$hex = md5($input);
$hexLen = strlen($hex);
$subHexLen = $hexLen / 8;
$output = array();
 
for ($i = 0; $i < $subHexLen; $i++) {
//       8   16   0x3FFFFFFF(30 1)      
$subHex = substr ($hex, $i * 8, 8);
$int = 0x3FFFFFFF & (1 * ('0x'.$subHex));
$out = '';
 
for ($j = 0; $j < 6; $j++) {
 
//      0x0000001F      ,      chars  
$val = 0x0000001F & $int;
$out .= $base32[$val];
$int = $int >> 5;
}
 
$output[] = $out;
}
 
return $output;
}
?>
요약:
사용자 가 짧 은 사이트 에 접근 하 는 과정:
1.브 라 우 저 는 짧 은 사이트http://short.cn/Xvdf23를 방문 하고 DNS 분석 을 통 해http://short.cn의 서버 를 가리킨다.
2.서버 는 짧 은 사이트 의 ID 필드 에 따라 데이터 베 이 스 를 찾 고 원래 의 사이트 로 돌아 갑 니 다.
3.위 에서 되 돌아 오 는 원본 사이트 로 다시 설정
이상 이 본문의 전부 입 니 다.여러분 이 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기