2013-10-29 2 views
0

장바구니에있는 내용 (분명히 진행중인 작업)을 볼 수있는 페이지가 있고 장바구니를 지울 수있는 단추가 있으며 작동하지만 사이트의 다른 페이지로 이동합니다 링크를 클릭하거나 검색 주소창에 입력하여 양식 작업을 실행합니다. 또한 장바구니에 추가 할 제품 페이지에서도 수행합니다. 버튼을 눌렀을 때만 작업이 실행되도록이 작업을 중단하려면 어떻게합니까?양식 실행 중 제출하지 않고 실행

+0

Seriosly이 코드를 이해하지 못합니다. 세션이 실제로 작동하는지 (이유는 무엇입니까?) 때문에 다른 페이지에서 세션 데이터를 볼 수 없습니다. – Robert

+0

@Robert 세션에서 항목을 장바구니에 저장합니다. 장바구니를 지울 수있는 버튼이 있습니다 – cameronjonesweb

답변

1

잠시 후 나는 당신이하고 싶은 것을 undestand. 세션이 파괴됩니다 페이지 속성 당신은 액션 attribiute에서 세션을 파괴 할 수 있지만 행동에 넣을 수 있습니다

destroy.php

<?php 
session_start(); 
session_destroy(); 
echo 'destroyed'; 

?> 

메인 파일

<div> 
<?php 
    echo "You have " . $_SESSION['cartItems'].($_SESSION['cartItems'] > 1 ? 'items' : 'item'); 
    echo " in your cart amounting to $" . $_SESSION['cartPrice'];?> 
    <form action="destroy.php"><input type="submit" value="Clear Cart"></form> 
</div> 

당신이 할 수있는 또한 action = ""에 넣고 숨겨진 param을 사용하여 파괴해야하는지 확인하십시오 :

하나의 파일 솔루션 :

<div> 
<?php 
    session_start(); 
    if(isset($_POST['destroy']) && $_POST['destroy'] == 1) session_destroy(); //destroying session 

    echo "You have " . $_SESSION['cartItems'].($_SESSION['cartItems'] > 1 ? 'items' : 'item'); 
    echo " in your cart amounting to $" . $_SESSION['cartPrice'];?> 
    <form method="POST" action=""> 
     <input type="submit" value="Clear Cart"><input type="hidden" value="1" name="destroy"> 
    </form> 
</div> 
+0

그걸로 문제가 해결되었지만 지금 카트를 지우려고 할 때 destory.php 파일을 열어 빈 페이지가 나옵니다 – cameronjonesweb

+0

1 개의 파일 솔루션으로 답변을 편집했습니다. 2 파일 솔루션에서 당신은 항상'header ("Location : page.php"); – Robert

1

이 :

<form action="<?php session_destroy();?>"> 

은 아마 당신이 일을 생각하는 일을하지 않습니다.

session_destroy()은 양식에서 수행하는 작업이 아닙니다. 양식이 무엇이든 페이지가로드 될 때마다 페이지가로드 될 때 수행됩니다. 실제로 이해가되지 않는 방식으로 서버 측 및 클라이언트 측 코드를 혼합합니다.

페이지가 렌더링되는 동안 서버 측 코드가 서버에서 해석됩니다. 그것의 모든. 해당 코드의 결과가 페이지에 렌더링됩니다. 페이지가로드 될 때마다 session_destroy()을 실행 한 다음 양식 작업으로 session_destroy()의 출력을 사용하고 있습니다.

출력은 이렇게 양식 태그는 아마 다음과 같이 찾고 끝, 부울입니다 :

<form action="true"> 

정말 의미있는 아무것도하지 않는다.

양식 제출시 세션을 삭제하려면 제출 작업이 세션을 파괴하는 페이지 여야합니다. 이런 식으로 페이지 자체에 session_destroy()을 호출하면 페이지가로드 될 때마다 이 항상으로 전화합니다 (session_destroy()). 탐색 할 때가 아니라 페이지가로드 될 때.