나는 사용자가 블로그를 작성하고 질문 할 수있는 소셜 네트워크를 가지고 있습니다. PHP를 통해 URL 끝에 블로그 나 질문의 제목을 게시하는 동적 URL을 만들고 싶습니다.동적 URL은 어떻게 만듭니 까?
예 :
www.blah.com/the_title_here
가장 깨끗한 가장 효율적인 방법을 찾고이 작업을 수행합니다.
나는 사용자가 블로그를 작성하고 질문 할 수있는 소셜 네트워크를 가지고 있습니다. PHP를 통해 URL 끝에 블로그 나 질문의 제목을 게시하는 동적 URL을 만들고 싶습니다.동적 URL은 어떻게 만듭니 까?
예 :
www.blah.com/the_title_here
가장 깨끗한 가장 효율적인 방법을 찾고이 작업을 수행합니다.
URL을 생성 g "를 데이터베이스 행에 입력 한 다음 해당 슬러그와 일치하는 게시물을 찾는 PHP 스크립트를 갖습니다. 예를 들어
, 당신은 slug
라는 매개 변수를했다 index.php
라는 스크립트가 있다면 ...
<?php
if (isset($_GET['slug'])) {
$sql = "SELECT * FROM `your_table` WHERE slug = ? LIMIT 1";
$smt = $pdo->prepare($sql);
$smt->execute(array($_GET['slug']));
$row = $smt->fetchObject();
// do something with the matching record here...
}
else {
// display home page
}
이 ... 그런 다음 다시 쓰기 수 요청 htaccess로 사용 :
RewriteEngine on
RewriteRule ^(.+)$ index.php?slug=$1
"www.blah.com/$id/".preg_replace('/^[a-z-]+/','',preg_replace('/[ ,;.]+/','-',strtolower($title)))
및 사용은 제목에서 $id
는
"How do I create dynamic URLs?"
그것은 당신이 일반적으로 URL 친화적 인 "SLU를 저장하는 것
www.blah.com/15/how-do-i-create-dynamic-urls
이 작업을 수행하는 오픈 소스 소프트웨어가 많이 있습니다. WordPress.org 또는 MediaWiki.org에서이 작업을 수행 할 수 있습니다. mod_rewrite
규칙을 추가하려면 .htaccess
또는 Apache 구성 설정의 조합이 필요합니다.
다음으로 Martin Bean이 게시물을 찾으려고 쓴 것처럼 컨트롤러 파일을 원하지만 탈출/위생/입력의 유효성을 올바르게 확인하십시오. 그렇지 않으면 SQL 인젝션이나 XSS에 취약 할 수 있습니다. 귀하의 사이트에 자바 스크립트가 있습니다.
그래서 id 메소드를 사용하고 예쁜 URL 용도로만 슬러그를 사용하는 것이 좋습니다. WordPress.org 소프트웨어는 또한 게시물이 많으면 슬러그로만 이동하는 것이 느려진다 고 제안합니다. 그래서, 당신은 일치하는 정규 표현식 www.blah.com/slug-phrase-goes-before-the-numeric_id
의 조합을 사용하여 작성할 수 있습니다 것 .*(\d+)$
이 작업을 수행하기 위해 데이터베이스를 사용 슬픈 :( 데이터베이스를 조회 할 필요가 없습니다 많은 경우가있을 수 있으며, 당신은이 방법으로 의지 예 : -... 마틴로 표시 당신에게 경로 또는 슬러그를수록 www.blah.com/signup
(아무 소용 여기) 그리고 DB 연결 자원, 심각한 자원을 먹는 없습니다 ...
RewriteEngine on
RewriteRule ^(.+)$ index.php?slug=$1
대부분의 프레임 워크는 파일 시스템을 사용합니다. 보다 깨끗한 URL을 얻을 수 있습니다.
<?php
$default = "home";
//function to make sure the slug is clean i.e. doesnot contain ../ or something
if(isset($_GET['slug'])) $slug = clean($_GET['slug']);
if(!isset($slug)) $slug = $default;
$files = explode('/',$slug);// or any other function according to your choice
$file = "./commands/".$files[0].".php";
if(file_exists($file))
require_once($file);
else
require_once("./commands/".$default.".php");
에 대한 이론과 유사하다 모든 파일을 저장할 한 폴더와 뭔가 당신은 당신이 원하는만큼 복잡한에이 간단 할 수 있습니다.당신은 마틴이 무슨 짓을했는지와 같은 기본 케이스를 결정하기 위해 데이터베이스를 사용할 수 있지만, 그게 이런 식으로
장점 ... $default
아니라 사용하는 제 1 논리에 있어야합니다 데이타베이스를 조회하는 것보다 더 빠름
site.com/users/piyushmishra
및 site.com/forums/mykickassforum
또는에 깊은 site.com/category/category-name/post-name/comments/page-3
./ACLcommands/users.php
, ./XMLRPC/ping.php
매우 추상적으로 보입니까? 정확히이게 뭐야? –
제목에서 "어떻게 동적 URL을 만드나요?" url 생성 : www.blah.com/15/how-do-i-create-dynamic-urls –