2013-08-09 3 views
1

나는 www.jazz.eu. 사이트가 있습니다. 다른 서버에서 다른 도메인 이름을 사용하여이 사이트의 정확한 복사본을 만들었습니다. 새로운 하나는 www.vetur.nl입니다.SQL 메시지에서 솔루션을 찾을 수 없습니다. 내가 조언을 좀하고 싶습니다

모든 것이 잘 작동합니다 (jazz.eu와 비슷 함). 카트 프로세스를 제외하고. 처음에는 장바구니를 볼 때 항상 빈 제품이있는 줄이 있습니다. 나는 그것을 제거 할 수 없다. 내가 무슨 뜻인지 볼

http://www.vetur.nl/cart_empty_product_line.jpg

과 내가 가지고있는 다음 문제는 내가 카트를 새로 고치거나 나는이 메시지를받을 순서

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 
'sender_full_name='',sender_afm='',sender_doy='',sender_work='',sender_person='',' at line 1 
query=update basket set selected_quantity=,sender_full_name='' ,sender_afm='',sender_doy='',sender_work='',sender_person='',sender_address='',sender_zip='',sender_tel='',sender_fax='', addresser_email='', additional='' where session_id = 'ihcvafpk3fgqh6jra1mrplgkr1' and id= 

내가 문제에 생각을 보내려고 할 때 이 파일 process.php하지만 찾을 수 없습니다. 정확한 파일은 내 첫 번째 사이트 jazz.eu에서 잘 작동합니다. 문제가있는 process.php의 코드는 아래와 같습니다. 게시 해 주셔서 감사 드리며 실수를 용서하십시오. 내가 여기에 게시하는 것은 처음이다.

function procMy_cart(){ 
     global $session, $form,$database,$mailer; 

     $session_id = session_id(); 
     if ((isset($_POST['order'])) && ($_POST['order']==1)) { 
      if (!eregi("[a-z\α-ω\!\"\£\$\%\^\&\*\(\)\-\+\{\}\:\;\'\@\~\#\\\|\<\>\?\/]", $_POST['update_quantity'][$i])) { 
         For ($i=0;$i<count($_POST['update_quantity']);$i++) { 

        if (!eregi("[a-z\α-ω\!\"\£\$\%\^\&\*\(\)\-\+\{\}\:\;\'\@\~\#\\\|\<\>\?\/]", $_POST['update_quantity'][$i])) { 
         //$update_db="update basket set selected_quantity=".$_POST['update_quantity'][$i].",addresser='".$_POST['addresser']."',addresser_tel='".$_POST['addresser_tel']."', addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $update_db="update basket set selected_quantity=".$_POST['update_quantity'][$i].",sender_full_name='".$_POST['addresser']."',sender_afm='".$_POST['addresser_afm']."',sender_doy='".$_POST['addresser_doy']."',sender_work='".$_POST['addresser_work']."',sender_person='".$_POST['addresser_contact']."',sender_address='".$_POST['addresser_address']."',sender_zip='".$_POST['addresser_zip']."',sender_tel='".$_POST['addresser_tel']."',sender_fax='".$_POST['addresser_fax']."', addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $result=$database->query($update_db); 

        } else { 

         //$update_db="update basket set selected_quantity=1,addresser='".$_POST['addresser']."',addresser_tel='".$_POST['addresser_tel']."',addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $update_db="update basket set selected_quantity=1,sender_full_name='".$_POST['addresser']."',sender_afm='".$_POST['addresser_afm']."',sender_doy='".$_POST['addresser_doy']."',sender_work='".$_POST['addresser_work']."',sender_person='".$_POST['addresser_contact']."',sender_address='".$_POST['addresser_address']."',sender_zip='".$_POST['addresser_zip']."',sender_tel='".$_POST['addresser_tel']."',sender_fax='".$_POST['addresser_fax']."', addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $result=$database->query($update_db); 
        } 
       } 
      } 
//   $retval = $session->my_cart($_POST['addresser'], $_POST['addresser_doy'], $_POST['addresser_work'], $_POST['addresser_afm'], $_POST['addresser_address'], $_POST['addresser_zip'], $_POST['addresser_contact'], $_POST['addresser_email'], $_POST['addresser_tel'], $_POST['addresser_fax'], $_POST['additional']); 
//   if ($retval) { 
//    $_SESSION['send_order'] = true; 
//    header("Location: my_cart2.php");//.$session->referrer); 
//   } else { 
//    $_SESSION['value_array'] = $_POST; 
//    $_SESSION['error_array'] = $form->getErrorArray(); 
//    header("Location: my_cart2.php");//.$session->referrer); 
//   } 
     header("Location: order2.php"); 

     } else if ((isset($_POST['order'])) && ($_POST['order']!=1)) { 
      if ((isset($_POST['refresh_basket'])) && ($_POST['refresh_basket']==1)) { 
       For ($i=0;$i<count($_POST['update_quantity']);$i++) { 
        //echo $_POST['update_id'][$i]; 
        if (!eregi("[a-z\α-ω\!\"\£\$\%\^\&\*\(\)\-\+\{\}\:\;\'\@\~\#\\\|\<\>\?\/]", $_POST['update_quantity'][$i])) { 
         //$update_db="update basket set selected_quantity=".$_POST['update_quantity'][$i].", addresser='".$_POST['addresser']."', addresser_tel='".$_POST['addresser_tel']."', addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $update_db="update basket set selected_quantity=".$_POST['update_quantity'][$i].",sender_full_name='".$_POST['addresser']."',sender_afm='".$_POST['addresser_afm']."',sender_doy='".$_POST['addresser_doy']."',sender_work='".$_POST['addresser_work']."',sender_person='".$_POST['addresser_contact']."',sender_address='".$_POST['addresser_address']."',sender_zip='".$_POST['addresser_zip']."',sender_tel='".$_POST['addresser_tel']."',sender_fax='".$_POST['addresser_fax']."', addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $result=$database->query($update_db); 

        } else { 
         //$update_db="update basket set selected_quantity=1, addresser='".$_POST['addresser']."', addresser_tel='".$_POST['addresser_tel']."', addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $update_db="update basket set selected_quantity=1,sender_full_name='".$_POST['addresser']."',sender_afm='".$_POST['addresser_afm']."',sender_doy='".$_POST['addresser_doy']."',sender_work='".$_POST['addresser_work']."',sender_person='".$_POST['addresser_contact']."',sender_address='".$_POST['addresser_address']."',sender_zip='".$_POST['addresser_zip']."',sender_tel='".$_POST['addresser_tel']."',sender_fax='".$_POST['addresser_fax']."', addresser_email='".$_POST['addresser_email']."', additional='".$_POST['additional']."' where session_id = '$session_id' and id=".$_POST['update_id'][$i].""; 
         $result=$database->query($update_db); 
        } 
       } 
      } 
      $_SESSION['value_array'] = $_POST; 
      $_SESSION['error_array'] = $form->getErrorArray(); 
      header("Location: my_cart2.php");//.$session->referrer); 
     } 
    } // end cart 
+1

나는'set selected_quantity =,'가 완전히 이상적인 것 같지 않다고 생각했을 것이다. 또한, 데이터베이스 클래스가 무언가 * 정말로 * 영리한 일을하지 않는다면 "[PHP로 SQL 삽입을 방지하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/60174/how-can-i-prevent)를 읽어야합니다. -sql-injection-in-php) "를 우선 순위로 사용합니다. –

+0

nooooooo'eregi' !! PHP 5.3.0부터,'regex' 확장은 [PCRE 확장자] (http://www.php.net/manual/en/book.pcre.php)를 위해 더 이상 사용되지 않습니다. 이 함수를 호출하면 E_DEPRECATED 통지가 발행됩니다. – bansi

답변

0

변수 $_POST['update_quantity'][$i]에는 값이 없습니다. 쿼리를 보면 set selected_quantity=,sender_full_name=''을 알 수 있습니다. 적어도 하나의 작은 따옴표 또는 null이 selected_quantity에 할당되어 있어야합니다.

절대로 _POST 데이터를 쿼리에 직접 할당하면 안됩니다. SQL 인젝션 공격을 피하려면 항상 어떻게 든 제거하십시오. 당신은 아마도 초기 변수에 $ _POST [ 'update_quantity'] [$ i]를 할당하고 유효한 값을 가지기 위해 일부 논리를 수행하고 그렇지 않은 경우 쿼리가 실행되지 않도록하거나 기본값을 추가합니다.

관련 문제