2009-03-03 3 views
31

jQuery를 사용하여 PHP $ _SESSION 변수를 설정해야합니다. 사용자가 이미지를 클릭하면 해당 이미지와 관련된 정보를 PHP의 세션 변수로 저장하려고합니다.

PHP 페이지 나 함수를 호출하고 해당 정보를 쿼리 문자열에 추가하여이 작업을 수행 할 수 있다고 생각합니다.

아이디어가 없습니다. 나는 구글을 통해 거의 도움이되지 않았다.

감사 마이크

답변

68

jQuery만으로는이 작업을 수행 할 수 없습니다. Ajax (jQuery로 할 수있는)와 PHP 백엔드의 조합이 필요하다. 아주 간단한 버전은 다음과 같습니다

HTML :

<img class="foo" src="img.jpg" /> 
<img class="foo" src="img2.jpg" /> 
<img class="foo" src="img3.jpg" /> 

자바 스크립트 :

$("img.foo").onclick(function() 
{ 
    // Get the src of the image 
    var src = $(this).attr("src"); 

    // Send Ajax request to backend.php, with src set as "img" in the POST data 
    $.post("/backend.php", {"img": src}); 
}); 

PHP (backend.php) :

<?php 
    // do any authentication first, then add POST variable to session 
    $_SESSION['imgsrc'] = $_POST['img']; 
?> 
+18

(); 그 이외의 백엔드에서 이것은 훌륭한 팁입니다! 감사합니다 루크 ... – Codex73

7

다른 PHP 페이지에서 PHP 함수를 넣어 시도하고 변수를 설정하는 AJAX 호출을 사용 할 수 있습니다.

5

무엇을 찾고 계십니까? jQuery Ajax입니다. 그런 다음 PHP 페이지를 설정하여 요청을 처리하십시오.

5

여기에 대한 많은 답변이 방법을 다루지 만 이유는 다루지 않습니다. PHP $ _SESSION 키/값 쌍이 서버에 저장됩니다. 이것은 브라우저에 저장된 쿠키와 다릅니다. 따라서 PHP와 JavaScript 모두에서 쿠키의 값에 액세스 할 수 있습니다. 아쉽게도 브라우저에서 보낸 AJAX 요청에는 웹 사이트에 설정 한 쿠키가 포함되어 있지 않습니다. 따라서 JavaScript가 세션 ID 쿠키를 가져 와서 서버가 그 헤더 또는 꼬리를 만들 수 있도록 모든 AJAX 요청에 포함시켜야합니다. 밝은면에서 PHP 세션은 쿠키가 HTTP 헤더와 함께 전송되지 않으면 HTTP GET 또는 POST 변수로 장애 조치되도록 설계되었습니다. RESTful 웹 응용 프로그램의 원칙과 세션 처리기를 사용하여 mangle을 시도하는 대신 이러한 종류의 응용 프로그램과 공통되는 디자인 패턴을 사용하는 방법에 대해 살펴 보겠습니다. (backend.php) 포함해야합니다에

3

-Taylor 는 또한 (여기에. 누가 복음 데니스 솔루션과 유사한 별거를) 자신에 의해 "PHP 세션 값 세터"솔루션을 설계,하지만 내 세션 값을 설정 한 후, 내 요구 "했다 다른 .php 파일로 점프 ". 당신 - 후

"$ .post"당신의 값들에 : 좋아,

내 문제가 가지 쉬웠다 ... 내 jQuery 코드 내부를했다 ...하지만 뭔가 확실히 일을하지 않았다 작은 .php 파일이면, "성공/실패"리턴 값을 기다려야하고,이 성공 값을 읽은 후에 만 ​​점프를 수행하십시오. 만약에 당신이 바로 다음 큰 것에 뛰어 들면.php 파일에서 세션 값이 PHP 세션 런타임 엔진에 설정되지 않았을 수 있으며 $ _SESSION [ "my_var"]을 수행 할 때 "비어 있음"을 읽게됩니다. 대상 .php 파일에서. 내 경우

은, 그 상황을 해결하기 위해, 내 jQuery를 $의 .post 코드이 방법 변경 :

물론
$.post('set_session_value.php', { key: 'keyname', value: 'myvalue'}, function(ret){ 
    if(ret==0){ 
     window.alert("success!"); 
     location.replace("next_page.php"); 
    } 
    else{ 
     window.alert("error!"); 
    } 
}); 

, 당신의 "set_session_value.php"파일 '이 "0"에코 반환해야합니다을; '또는'echo "1"; '(또는 당신이 필요로하는 성공 가치).

인사말.

1

루크의 대답과 비슷하지만 GET이 있습니다.

이 PHP 코드를 PHP 페이지에 넣으십시오 (예 : getpage.php :

<?php 
$_SESSION['size'] = $_GET['size']; 
?> 

다음과 같은 jQuery를 스크립트로 전화 :

$.get("/getpage.php?size=1"); 

를 페데리코에 동의합니다. 경우에 따라 POST와 관련된 문제 일 수도 있지만 브라우저와 관련이 있는지는 확실하지 않습니다.

0

javascript 부분에서 onClick()을 click()으로 변경하면 Firefox에서 작동합니다. 누락으로 session_start

$("img.foo").click(function() 
 
{ 
 
    // Get the src of the image 
 
    var src = $(this).attr("src"); 
 

 
    // Send Ajax request to backend.php, with src set as "img" in the POST data 
 
    $.post("/backend.php", {"img": src}); 
 
});

관련 문제