2012-11-03 2 views
2

로컬 호스트에서만 SQLite3, PDO 및 PHP5 사용.PHP PDO SQLite3 날짜 문자열 변환

웹 페이지 테이블을 사용하여 열, 샘플 세트 (테이블에서 1 레코드), 열 선택을위한 체크 박스 및 후속 쿼리에 대한 수정 자 선택을위한 드롭 다운을 사용합니다. 은 "쿼리를 얻을"버튼을, 간단한 쿼리 클릭시 ..

SELECT day FROM tbl; 

..gets는

(이 기능을 대체 문자열을 통해 이루어집니다) ..

SELECT datetime([day],'unixepoch','+978307200 seconds','localtime') as day FROM tbl; 

로 전환

이 쿼리는 이제 사기꾼에 모든 초를 추가합니다

그것은 다음 결과 페이지에 쿠키를 통해 전달 된 것 (나는 또한 다른 많은 데이터를 전달 해요 때문에 쿠키를 사용) verted unix epoch time, localtime에서 결과를 포기하십시오 ... (UTC)

"results.php"페이지에 직접 쿼리를 하드 코딩하면 잘 동작합니다. 페이지가 이전 페이지에서 설정된 쿠키에 저장된 쿼리를 사용하는 경우 결과가 표시되지 않습니다. 결과 페이지 요소를 검사하면 쿠키가 전체 쿼리로 설정되었음을 알 수 있습니다.

없이, 잘 작동하기 때문에합니다 ... "+978307200" modifyer로 좁혀했습니다 (호조에서 978,307,200초 인 그렇다!)

뭔가가 일어나고 있음을 따기있어 " + "표시가 있지만이를 고칠 수있는 방법은 완전히 손실됩니다.

아이디어가 있습니까? 감사합니다. .

답변

0

URL과 쿠키 플러스는 공백을 나타내는 자리 표시 자이며 $_COOKIES 배열은 구문 분석 된 쿠키 헤더를 포함하므로 모든 플러스가 거기에있는 공간으로 변경됩니다.

페이지간에 이러한 종류의 데이터를 전달해야하는 경우 세션을 사용하십시오.

세션이 어떤 이유로 옵션이 아닌 경우 쿠키를 저장하기 전에 '안전한'문자 만 포함하도록 값을 인코딩 한 다음 사용하기 전에 디코딩해야합니다. 가장 인기있는 것은 base64_입니다.

+0

전설 !! 쿠키와 + 기호에 대해 알지 못했습니다. 간단한 해결 방법은 쿠키를 설정할 때 자리 표시 자 ("#")를 넣고 다른 쪽 끝에서 str_replace를 사용하는 것입니다. 빠른 응답 주셔서 감사합니다. 굉장해. 그것은 항상 길입니다. 그렇게 큰 슬픔을 느끼는 것 같은 작은 것. 건배. – ShaneH