URL 을 가용성에서 MySQL 데이터베이스를 사용하여 Php[중복]
문제
내가 노력하고 등록을 생성할 수 있는 시스템이 사용자가 제출하는 그들의 웹 사이트 Url 이 있습니다.지금 할 때 사용자가 URL 을 확인에 대한 데이터베이스를 보 이미 존재하는 경우,그 거부하는 경우 그렇습니다.
그러나,나의 문제이기 때문에 이:
는 경우 http://www.example.com
은 데이터베이스에 입력 http://example.com
, 이로 다른 URL 으로 확인에 관한 한,그리고할 수 있습니다.
가 적절한 방법으로 이를 처리하기에서 검색하는 모든 레코드 제거 www
면 현재,그리고 다음을 비교?(는 몹시 비효율적인 방법을요)
참고:추가 Laravel 태그 케이스가 어떤 도우미 기능을 위해 이것은(나도를 사용하여 laravel-4).
편집:이것은 나의 현재에 대한 논리 확인:
$exists_url = DB::table("user_urls")
->where('site_url', 'like', $siteurl)
->get();
if($exists_url)
{
return Redirect::to('submiturl')->withErrors('Site already exists!');
}
EDIT2:방법 중 하나는 지정된 URL 에 http://www.example.com
, 다음 검색에 대한 데이터베이스 http://www.example.com
, www.example.com
, http://example.com
고 example.com
.그러나 나를 찾으려고 더 효율적인 방법으로 이렇게하려면!
해결책
내가 생각하기 전에 당신은 솔루션을 구현해야 합 추상적으로 육신의 정책이 많습니다.많은 부품의 URL 지 않을 수도 있습니다 또는 것 같습니다.당신이 원하는 치료에 프로토콜을 상당? https://foo.com 대 http://foo.com.어떤 하위 도메인이 될 수 있는 별칭,일부지 않을 수도 있습니다. http://www.foo.com 대 http://foo.com, 나 http://site1.foo.com 대 http://foo.com.어떤 경로의 URL? http://foo.com 대 http://foo.com/index.php.내가 없을 시간을 낭비하 쓰는 비교 함수할 때까지 당신은 완전히 생각을 통해 당신의 정책입니다.행운을 빕니다!
업데이트:
이 같은 아마도:
$ignore_subdomains = array('www','web','site');
$domain_parts = explode('.',$siteurl);
$subdomain = strtolower(array_shift($domain_parts));
$siteurl = (in_array($subdomain,$ignore_subdomains)) ? implode('.',$domain_parts) : $siteurl;
//now run your DB comparison query
다른 팁
기 전에 확인할 수 있습 데이터를 보내는 데이터베이스를 사용하여 PHP.다음은 작은 예입니다.분명히 당신이 그것을 만들 수 있고 더 진보 취향에 따라.
<?php
$test = "http://www.google.com";
$testa = "http://google.com";
if (str_replace("www.","",str_replace("http://","",$testa)) == str_replace("www.","",str_replace("http://","",$test))) {
echo "same";
}
else {
echo "different";
}
?>
다음과 같은 MySQL 교체 예입니다.이 예에서는'url'이 데이터베이스 분야이다.
SELECT * FROM `urls` WHERE REPLACE(url, "http://www","") = "google.com" OR REPLACE(url,"http://","") = "google.com"
다시 한번 이는 매우 기본적인 단위한 당신의 더 나은 이해합니다.
해야 하는 경우에 어떤 도움이 더 친절하게 알려주