PHP 짧 은 URL 생 성 방법 집합
5758 단어 PHP짧 은 인터넷 주소
짧 은 사이트 의 실현 원 리 는 하나의 데이터 시트 가 파일 을 설정 하여 짧 은 사이트 와 실제 사이트 주 소 를 대응 시 키 는 것 이다.짧 은 사이트 주 소 를 요청 할 때 프로그램 은 해당 하 는 실제 사이트 로 이동 하여 사이트 의 방문 을 실현 하 는 것 이다.
프로젝트 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.위 에서 되 돌아 오 는 원본 사이트 로 다시 설정
이상 이 본문의 전부 입 니 다.여러분 이 좋아 하 시 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.