문제

이것은 내 첫 번째 질문이며 빠른 답변을 얻을 수있을만큼 간단하기를 바랍니다!

기본적으로 다음 코드가 있습니다.

$variable = curPageURL();
$query = 'SELECT * FROM `tablename` WHERE `columnname` LIKE '$variable' ;

$ 변수를 반향하면 현재 페이지의 URL (내 페이지의 JavaScript)을 인쇄합니다.

궁극적으로, 내가 원하는 것은 검색기가 현재 페이지의 URL 인 검색을 수행 할 수 있어야하며, 전후에 와일드 카드가있는 것입니다. 이것이 전혀 가능한지 또는 단순히 구문 오류가 있는지 확실하지 않습니다. 오류가 없기 때문에 결과가 없습니다!

나는 시도했다 :

    $query = 'SELECT * FROM `tablename` WHERE `columnname` LIKE '"echo $variable" ' ;

그러나 다시, 나는 아마도 잘못 배치 된 ' "등을 잃어 버렸거나 사용하고 있습니다.

내가 뭘 잘못하고 있는지 말 해주세요!

도움이 되었습니까?

해결책

궁극적으로, 내가 원하는 것은 검색기가 현재 페이지의 URL 인 검색을 수행 할 수 있어야하며, 전후에 와일드 카드가있는 것입니다.

SQL 와일드 카드 문자는 백분율 부호입니다. 그러므로:

$variable = curPageURL();
$variable = mysql_real_escape_string($variable);
$query = "SELECT * FROM `tablename` WHERE `columnname` LIKE '%{$variable}%'";

참고 : 추가 코드를 추가했습니다. mysql_real_escape_string() SQL 문을 깨뜨릴 수있는 문자를 고의적으로 또는 우연히 사용하는 사용자로부터 귀하를 보호합니다. 매개 변수화 된 쿼리를 사용하는 것이 좋습니다. 그러나이 간단한 수정보다 더 관련된 주제입니다.

또한 참고 : 나는 당신의 문자열 인용도 수정했습니다. 해당 문자열이 두 번 인용 된 경우 직접 문자열에서 변수를 사용할 수 있으며 끝에 견적이 누락되었습니다. $query.

2015 년 1 월 17 일 편집 : 방금 퓨어 포트를 얻었습니다. 제발 사용하지 마십시오 mysql_* 더 이상 기능.

다른 팁

사용:

$query = "SELECT * FROM `tablename` WHERE `columnname` LIKE '{$variable}'" ;

위의 것과 같이 SQL 주사 공격을 방지하는 이유에 대한 아이디어를 얻으려면 "엄마의 익스플로잇"을 제출합니다.

alt text

제발 이렇게하지 마십시오. 취약합니다 SQL 주입 (이것은 응용 프로그램으로 돌아 가기 전에 읽고, 흡수하고 이해해야하는 138 개의 stackoverflow 질문 목록입니다). 매개 변수화 된 쿼리 또는 저장 절차를 사용하십시오.

사용 이중 인용문 변수 값을 대체 해야하는 경우 :

## this code is open for SQL injection attacks
$query = "SELECT * FROM `tablename` WHERE `columnname` LIKE '$variable'";

또는 수동으로 문자열에 대해 :

## this code is open for SQL injection attacks
$query = 'SELECT * FROM `tablename` WHERE `columnname` LIKE "' . $variable . '"';

코드는 SQL 주입 공격에 취약합니다. 사용자 제공 데이터는 SQL 쿼리 문자열에 직접 배치해서는 안됩니다. 대신, 먼저 다음과 같은 기능으로 소독해야합니다. mysql_real_escape_string().

구문 오류에 대해 알리지 않은 이유에 관해서는 오류보고 설정이 올바르게 설정되지 않았을 가능성이 높습니다.

열려 있는 php.ini 다음이 설정되어 있는지 확인하십시오.

display_errors = On

그리고:

error_reporting = E_ALL
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top