2009-03-20 2 views
1

나는 미리 프로그래밍 된 장바구니를 사용하지 않고 직접 프로그래밍하고 있습니다. 99 %의 시간 동안 완벽하게 작동하지만 몇 달에 한 번씩 주문이 $ 0에 전달됩니다. 나는 이유를 알 수 없다. 나는 똑같은 제품과 모든 정보를 가지고 시험 구매를하고 나에게 $ 0이 될 수는 없다. 이 문제를 해결하는 방법에 대해 확신하지 못합니다. 잘못된 가격을 존중하지 않는다는 면책 조항이 있습니다. 클라이언트는 이것이 일어나기를 멈추기를 원합니다. 나는이 모든 것을하기 위해 PHP를 사용하고있다. 오케스트레이션을 직접 복제 할 수는 없으므로 문제의 맨 아래에 도달하기가 어렵습니다. 아무도이 문제를 해결하는 방법에 대한 조언을 제공 할 수 있습니까?

감사합니다.

답변

3

궁극적으로, 왜 이런 일이 발생하는지 파악하고 싶을 것입니다. 당신의 코드를 보지 않고는, 나는 당신을 정말로 도와 줄 수 없습니다. 단기적으로, 결제 프로세스가 끝날 때 정상적인 체크를 추가하지 않는 이유는 무엇입니까?

if ($final_price < 1) { 
    do_epic_fail(); // Show an error, whatever. 
} 
+0

이유를 설명 할 수는 없지만 웬일인지 "do_epic_fail"이 나를 괴롭혔습니다. . 나는 확실히 다음 번에 얻을 수있는 기능을 명명하고 있습니다. –

+0

감사합니다. 그러나 예를 들어 쿠폰 코드를 사용하는 경우 일부 주문은 무료 일 수 있습니다. –

+0

그런데 왜 두 개의 별도 변수를 유지하지 않습니까? $ base_cost 및 $ discount? 표시된 총액은 $ base_cost- $ discount입니다. $ base_cost에 위의 if 문을 사용합니다. – ryeguy

1

사이트에 대한 URL이 있습니까?

그렇지 않으면 사용자가 전달할 수있는 데이터 (예 : 숨겨진 필드 또는 매개 변수)를 사용자가 재정의하도록 허용 할 수 있다고 추측 할 수 있습니다.

제품 ID를 서버 측 코드로 전달하고 서버 * 주문 수량을 곱하십시오. (예 : 사용자 입력을 신뢰하지 않음)

+0

나는 클라이언트 측에서 가격을 저장하지 않는다. 사용자가 조작 할 수 없도록 서버에서 가격을 검색한다. –

+0

다음은 구입 한 제품의 제품 페이지 URL입니다. http://www.kranichs.com/products/Kranichs/ring-331 –

0

지불 게이트웨이에 금액 세부 정보를 클라이언트 측 (숨겨진 양식 필드)에 게시하고 있습니까? 그렇다면 웹 개발자 등의 브라우저 도구 모음을 사용하여 쉽게 재정의 할 수 있습니다.

항상 서버 측에서 지불 세부 사항을 게시하십시오.

3

몇 가지 방대한 순서 로깅을 사용하여 시작할 것입니다. 모든 클릭, 모든 입력, 모든 SQL 쿼리. 그런 다음 다시 일어난 경우 그 주문의 기록을보고 무슨 일이 있었는지 확인하십시오.

두 가지 가능성이 있습니다. 첫째, 항목에 총계를 가져 오는 쿼리에 일시적인 오류가 있습니다. 어쩌면 쿼리가 실패하면 기본값이 0.00으로 설정됩니다. 예를 들어, 수량에 대해 -1을 입력하거나 'ABC'와 같은 텍스트를 입력하면 어떻게됩니까

SQL 주입 문제가있을 수 있습니다. 사용자가 필드에 잘못된 값을 입력하면 0이로드됩니다 가격에 대한 가치.

올바른 로깅을 사용하면 무엇이든지 밝힙니다.

+0

그 일을 시작할 때 올바른 방향으로 나를 가리킬 수 있습니까? 중요한 경우 PLESK를 사용하고 있습니다. 감사합니다 –

+0

장바구니를 직접 코딩 한 경우 로깅 정보를 저장하기 위해 데이터베이스에 테이블을 추가하기 만하면됩니다. 그런 다음 다양한 시점 (예 : SQL 쿼리를 실행할 때마다)에 게시 된 vars, sql 쿼리 및 액세스 권한이있는 다른 모든 정보를 기록하십시오. – NotMe

+0

로그가 꽤 커지므로 자주 모니터링하고 필요에 따라 조정하십시오. – NotMe

1

코드가 $ _SESSION 데이터에 의존합니까? 사용자가 매우 오랜 시간 동안 기다려야하는 경우 필요한 데이터가 만료 될 수 있지만 체크 아웃이 계속 진행될 수 있습니다.

다른 사람들이 말했듯이, 소스 코드 없이는 더 이상 논평하기가 어렵습니다.

+0

감사합니다. $ _SESSION에있는 장바구니에 항목을 저장하고 있지만 항목의 가격은 저장하지 않았습니다. 항목도 순서대로 저장되었습니다. –

0

최종 가격이 0 일 경우 주문을 다시 확인하여 실제로 항목이 있는지 확인하십시오. 무료 품목이나 특별 프로모션이있을 경우 주문이 0 인 것으로 볼 수 있습니다. 아마도 이것이 갈 방법 일 것입니다.

원본을 보지 않고 대답하는 것이 어려운 질문입니다.