2009-09-09 3 views
0

URL 단축 시스템의 절반에 있습니다. 나는 사용자로부터 URL을 얻은 다음 그것을 위해 MySQL에 코드를 생성한다. 그런 다음 http://localhost/a5c3처럼 실제 도메인으로 리디렉션하는 코드를 내 도메인 이름에 추가해야합니다 (지금은 localhost에서 작업 중입니다).데이터베이스에서 도메인 이름으로 URL 코드를 추가하고 PHP로 리디렉션하는 방법은 무엇입니까?

여기에 붙어 있습니다. 코드 스 니펫은 적어도 내가 할 일을 이해하는 데 나에게 좋을 것입니다. 아니면 내가 할 일을 설명 할 수 있습니다.

답변

1

URL에 짧은 코드를 연결하지 않으면이를 수행해야하며 리디렉션이 쉽습니다.

알고리즘 :

저장 나중에 사용하기 위해 데이터베이스에 양식에서 URL 생성 된 코드입니다.

$url = $_POST['url'] 
Generate code 
Concatenate your URL with the code 
$full_url = $url.$code 

단축 URL을 사용자에게 표시하십시오. 당신이 그/그녀가 브라우저 주소의 URL을두고 한 후 다음이 작업을 수행, 사용자를 리디렉션하려면

:

그 다음 줄을 추가하고 루트 폴더로 드롭, .htaccess 파일을 만듭니다

RewriteEngine on 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ index.php?code=$1 [L] 

.htaccess 파일은 모든 것을 index.php로 리디렉션합니다. 예를 들어 사용자가 http://example.com/ujijui을 입력하면 .htaccess는 http://example.com/index.php?code=ujijui을 호출합니다. 따라서 $ _GET을 사용하여 URL에서 쿼리 문자열을 캡처 할 수 있습니다. 당신의 index.php 파일에서

:

$code = $_GET['code'] 
mysql_connect('localhost', 'user', 'password') 
mysql_select_db('your_db') 
$sql = "SELECT url from Table where code=$code" 
$result = mysql_query($sql) 
Loop through result and get the URL 

header("Location: $url") 

그것을 얻을이 그냥 알고리즘이다.

+0

사용자 제 도메인 이름 (http : // localhost)을 입력 한 다음 사용자에게 표시하십시오. 그러면 브라우저 바에 해당 링크를 삽입하면 코드가 실행됩니다. –

+0

죄송합니다. 명확하지 않으면 .htaccess 파일의 내용을 설명 할 수 있습니까? –

+0

질문하지 않습니다. 명확한. 어떻게 든 나중에 값을 dabase에 저장해야합니다. 그리고 내가 볼 수있는 한 당신은 그렇게하지 않습니다. 데이터베이스 테이블에 – Mohamed

1

존재하지 않는 URL을 기존 페이지로 리디렉션해야합니다 (예 : Apache에서 mod_rewrite 사용). 이 'catch-all'페이지는 URL을 읽고 주어진 코드가 데이터베이스에 있는지 확인하고, 그렇다면 올바른 URL로 리디렉션합니다. Ainab의 의사 코드는 마지막 부분을 설명합니다.

당신이 URL을 짧은 코드 를 연결하지 않은 경우 다음 당신이 할 필요가, 및 리디렉션가 쉬울 것이다. 리디렉션 문제에 대한 header("Location: $url")

1

SELECT url from Table where code=code, 당신이 뭔가를 시도해야합니다 :

htaccess로 파일 :

RewriteEngine on 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ index.php?url=$1 [L] 

그리고 index.php 파일에서 :

<?php 
    $url = $_GET['url']; 

    // These will be taken from database 
    $urls_associations = array(
     '1234' => "http://www.example.com", 
     '5678' => "http://www.google.com", 
     '90AB' => "http://stackoverflow.com", 
    ); 

    // Redirect 
    if (isset($urls_associations[$url])) { 
     $redirect = $urls_associations[$url]; 
     header("Location: $redirect"); 
     echo "<a href='$redirect'>Go To : $redirect</a>"; 
    } 
    else { 
     echo "Unknown URL code."; 
    } 

그러면 사용자가 예를 들어 http://localhost/1234으로 이동하면 http://example.com 등으로 리디렉션됩니다.물론, 당신은 대신 배열에서 읽기의 데이터베이스에 쿼리를 실행해야하지만, 그냥 같은 것을 아주 쉽게 사용할 보인다 : 다음과 배경 CONCATENATE의 코드를 작성 양식에 URL을 입력

$code = mysql_escape_string($url); 
$res = mysql_query("SELECT url FROM mytable WHERE code='$code'"); 
if ($redirect = mysql_result($res)) { 
    header("Location: $redirect"); 
    echo "<a href='$redirect'>Go To : $redirect</a>"; 
} 
else { 
    echo "Unknown URL code."; 
} 
관련 문제