2012-12-23 6 views
1

내 데이터베이스의 데이터를 보여주는 페이지가 있습니다. 사용자가 데이터를보기 전에 몇 가지 선택 상자가 있으므로 특정 기간 동안 데이터를 표시하도록 선택한 것과 같이 여러 가지 방법으로 데이터를 필터링하도록 선택할 수 있습니다. url은 get 메소드를 사용할 때 아래와 비슷합니다.가장 인기있는 QUERY_STRING을 표시합니다

http://www.example/com?report=2&days=7&etc=2 

이 모든 것이 정상적으로 작동하고 사용자는 데이터를 필터링하여 원하는 결과를 얻을 수 있습니다. 내 Analytics 계정을 조회 한 결과 일부 검색어가 다른 검색어보다 더 인기가 있음을 알 수 있습니다. 가장 인기있는 검색어 (예 : 지난 24 시간 동안 가장 많이 본 검색어)를 사용자에게 알려주려면 어떻게해야합니까? 현재 애널리틱스 데이터를 기반으로 오전에 업데이트하는 수동 html 표를 만들었습니다.

예를 들어

<table> 
<tbody> 
<tr><th>query</th><th>link</th></tr> 
<tr><td>Show data from last 7 days</td><td><a href="http://www.example/com?report=2&days=7&etc=2">View</a></td></tr> 
</tbody> 
</table> 

내가 아이디, 쿼리, 타임 스탬프가있는 테이블이라는 수를 추가하고 내가 쿼리에 특정 기간에 대한 계산을 수행 할 수 있습니다

$a='report='; 
$b=$_SERVER['QUERY_STRING']; 
if($b == $a . $report['id']) 
{} 
else 
{//Insert id, query, timestamp into the database} 

이 방법은 말에 대해 생각 추가 정렬 매개 변수가있는 이것을 달성하는 가장 좋은 방법입니까?

답변

2

url과 timestamp의 쿼리 부분을 저장하는 테이블을 만듭니다. 최신 통화의 합계를 얻으므로 다른 필드가 필요하지 않습니다.

그런 다음 지난 24 시간 동안 가장 많이 요청 된 URL을 얻을

select url, 
     count(*) as reqs 
    from queries 
where ts > now() - interval 24 hour 
group by url 
order by reqs desc 

같은 것을 얻는다.

2

난 다음 조금 더 가서 고려하는 것 :

http://www.example/com?report=2&days=7&etc=2 

는 다음과 같이 기본적으로 동일 :

가 표현하는 것과 관련하여
http://www.example/com?report=2&etc=2&days=7 

,하지만 당신이 언급 한 알고리즘 $_SERVER['QUERY_STRING'];이 다르기 때문에 두 가지 보고서로 기록합니다. 또한

, 앱의 비즈니스 로직의 관점에서, 추가 매개 변수를 사용하지만, 현재되지 않을 수 있습니다

http://www.example/com?report=2&etc=2&days=7&utm_source=feed 

그래서, 쿼리에 대한 키를 형성하는 PARAMS에 약간의 처리를 할 거라고 :

매개 변수 이름으로
  1. 종류의
  2. 만 고려 사항으로 PARAMS을 실제로 문제
+0

아마도 OP가 쿼리를 생성하는 GUI를 제어하므로 시간 낭비 일 것입니다. –

+0

그리고 그 페이지에 몇 가지 새로운 기능을 추가해야 할 때 URL을 동일하게 유지해야한다는 것을 1 개월 만에 기억할 것입니다. 또는 해당 페이지에 기능을 추가/업데이트하는 동료입니까? –

+0

나는 합계가 단 24 시간 만에 중요 할 것이라고 생각하지 않는다. –

2

나는 timestamp, report, days 등으로 테이블을 만들어서 키로 사용해야한다고 생각한다.

  • 언제 매개 변수가 URL에되지 않습니다 POST (양식)에 의해 전송 될 수있는 경우

    훨씬 안전합니다.

  • 언제든지 그 중 일부는 쿠키 또는 다른 출처에서 왔을 수 있으며 URL에 포함되지 않을 수 있습니다.

  • 당신이 스타일 옵션과 같은 페이지로 페이지에서 변경 될 수 있지만, 표시된 보고서의 종류를 수정하지 않습니다 URL에 다른 옵션을 추가하기로 결정

    같은 & viewkind = 2 & 색상 세트 = 3 또는 무효로 임의 추가 & rnd = 83732와 같은 캐시 또는 앞으로 결정할 수있는 다른 것. 다른 # NAME을 방해 할 수있는 해시 같은 URL에 추가

  • 아무것도 데이터베이스가 공격하는 전체 URL을 단조, 또한

  • (간주됩니다 페이지의 절반 아래에 지정된 앵커에 다른 보고서를 점프) 아마도 단일 정수 또는 문자열 이름 매개 변수를 단조하는 것보다 훨씬 쉽습니다.

  • 또한 사이트를 다른 방법으로 호출하여 URL을 다르게 만들 수 있습니다. 앞면과 뒷면에 www가 있으면 안전하게 https를 사용하십시오. 일부 매개 변수에는 기본값이있을 수 있습니다. 예를 들어 요일을 지정하지 않으면 말일 = 1 일 때와 같을 수 있으므로 보고서가 동일하지만 URL이 다를 수 있습니다.

관련 문제