2011-11-01 2 views
0

위해 나는이 this question의 중복 될 수있다 생각하지만 난 정말 대답 내가 내 스크립트/페이지의 시작 부분에서 새로운 객체를 생성하고 싶은PHP 메이크 객체는 전 세계적으로 아약스

을 이해하지 않습니다. 페이지에는 여러 단계가 있으며 Ajax를 각 단계마다 별도의 PHP 파일과 함께 사용하고 싶습니다. 이 두 단계는 객체에 대한 수정을 요구합니다.

올바른 방법은 무엇입니까? 나는 JQuery Ajax를 사용하고있다.

기본적으로 결제 페이지이지만, 후자의 단계는 선택한 옵션에 따라 생성됩니다.

답변

1

당신이하려는 것은 데이터를 유지하면서 데이터를 여러 연결을 통해 액세스 할 수 있도록 유지하는 것입니다. PHP에서 정말 간단합니다. 단지 세션 만 사용하십시오.

먼저 영구 데이터에 액세스 (또는 저장)하려면 세션을 시작해야합니다. 과 같이 그렇게 :

session_start(); 

을 그때부터, 당신이에 추가 아무것도 (일부 예외를 제외하고 - 예를 들어, MySQL의 연결이 아마 너무 잘 작동하지 않습니다 저장) 저장됩니다. 걱정하지 마십시오. 데이터는 사용자에게만 있습니다. 다른 사람들은 다른 사람들의 장바구니에 액세스하거나 양식에서 진행할 수 없습니다. 여기

당신이 세션에 데이터를 저장하는 방법은 다음과 같습니다

$obj = new MrClass(); 
$_SESSION['form_object'] = $obj; 

는 나중에, 당신이 언제나처럼 액세스 :

$_SESSION['form_object']->someMethod(); 

Remeber하지만 각 AJAX 요청 session_start()로 시작해야합니다.

+0

명시 적으로 직렬화해야한다고 말한 적은 없지만 세션에 고정하면 그 일이 일어납니다. 그리고 PDO 연결을 클래스 멤버로 가지고 있다면 암시 적으로 그것을 직렬화하려고 시도합니다 (예 : $ _SESSION [ 'x'] = $ ojb). 연결을 무효화하거나 __sleep (http://us.php.net/manual/en/language.oop5.magic.php)를 무시해야합니다. – Josh

1

여러 요청에서 데이터를 유지하려면 세션 또는 쿠키를 사용해야합니다.

+0

그래서 원래 질문에서이 작업은 $ _SESSION [ 'my_object'] = serialize ($ my_object); – MattP

+0

@MattP : serialize를 사용할 필요가 없습니다. 예를 들어 답하십시오. –

+1

serialize를 사용하면 세션에 집착하는 객체의 크기가 줄어 듭니다. – Patrick

1

데이터베이스 테이블을 나타내는 개체를 가질 수 있습니다. 사용자 객체 인 경우 사용자 테이블을 만들고 JSON 요청을 통해 ID를로드하여 객체를 수정합니다. 기본적으로 AJAX 요청을 할 때마다이를 고정 해제 한 다음 수정하고 데이터베이스에 다시 고정시킵니다.

또는 $_SESSION에 붙여 넣을 수 있지만 개체가 완전히 자체적으로 직렬화 할 수 있어야합니다.

관련 문제