2016-07-24 3 views
2

Ajax 요청으로 일부 데이터를 페이지 매김하고 있습니다. 페이지 번호 버튼 중 하나를 누르면 테이블의 다음 페이지를 생성하기 위해 별도의 파일로 요청을 보냅니다. 내 메인 페이지에서Ajax 요청을 통해 쿼리를 전달하는 방법

내가 뭔가를해야합니다 :

$query = "Select * from table WHERE field = 'something' LIMIT 5"; 
$result = mysqli_query($con, $query); 
$row = mysqli_fetch_assoc($result); 

// dump results as table 

나는이 같은 쿼리를 수행 할 수있는 방법을 내 "paginate.php"파일에 새 XMLHTTP 요청 객체를 생성하는 스크립트를 작성할 때 사용자 입력에 따라 동적으로 변경 될 수 있으므로 파일에 적용 하시겠습니까?

전체 쿼리 문자열을 POST 요청을 통해 함수 매개 변수로 전달할 생각 이었지만 더 효율적인 방법이 있는지 궁금해하고 있습니다.

+0

왜 그냥 인수를 전달하고, PHP에서 mysqli가 문에서도 준비 사용 해달라고? – cpugourou

+1

당신은 absolutly 어떤 식 으로든 귀하의 검색어 자바 스크립트에 노출 싶지 않아 ... – cpugourou

답변

2
내가 이렇게하지

확실히 POST 요청을 통해 단지 기능 매개 변수로 전체 쿼리 문자열을 전달하는 생각

! 정말로 입니다. 브라우저 (예 : 사용자)가 데이터베이스에 대해 직접 쿼리를 실행하게하는 나쁜 보안 습관입니다. 나는이 실수를 초창기에했고 내 사이트는 즉시 없어졌습니다.

귀하의 PHP 파일은 다음을 확인, 매개 변수를 허용 쿼리를 실행하는 데 사용할해야

1. 당신 XHR 객체 전송 : page_number=5

2 귀하의 PHP는 입력을 확인하고 동적 쿼리를 빌드합니다 :

//set page to 1 if none was provided. 
$pg = isset($_POST['page_number'])? (int)$_POST['page_number']: 1; 
$pg = max(1,$pg); // lowest allowed pg number is 1 

일단 페이지 번호가 있고 그것이 정수라고 확신하면 (일부 사기성 SQL 쉼표가 아님) 차 서버로 전송 사용자가), 당신은 당신의 쿼리에서 사용할 수 :

필드 값 something 사용자로부터 온다면, 당신은 (직접 쿼리에 포함 싶지 않아
$size = 5; //# of results per page 
$start = ($pg-1) * 5; 
$query = "SELECT * from myTable WHERE field='something' LIMIT $start,$size"; 

주 이 값은 사용자가 제공 한 값과 동일합니다). 대신, 준비된 문매개 변수가있는 쿼리를 사용해야합니다

리소스 : https://www.owasp.org/index.php/SQL_Injection

+0

링크 및 정보 주셔서 감사합니다! 나는 당신이 대답에서 완벽하게 말하고있는 것을 이해하지만 준비된 진술에 대해 연구하고 다시 돌아올 필요가있는 것처럼 보입니다! –

+0

@TimothyFisher 아무런 문제가 없습니다. 행복한 코딩. – BeetleJuice

관련 문제