2011-09-30 2 views
0

변수 PHP 세션 :자바 스크립트 기능과 나는 PHP 페이지 안에 내 몸 태그에 다음 스크립트 한

<script type="text/javascript"> 
function goNext() 
{ 
    <?php 
     if(isset($_SESSION['current'])) 
     { 
    ?> 
    window.location="step2.php"; 
    <?php 
     } 
     else 
     { 
    ?> 
     alert('Please select one item to continue.'); 
    <?php 
     } 
    ?> 
} 
</script> 

내가 PHP에서 vaible 세션을 설정하고있다. 페이지의 링크를 클릭하면 세션이 설정됩니다. 그 후,이 함수를 호출하면 여전히 경고 메시지가 표시됩니다.

페이지를 새로 고치면 경고를 건너 뛰고 함수에서 언급 한 URL로 전달합니다.

페이지를 새로 고치지 않은데 URL로 이동하지 않는 이유는 무엇입니까?


업데이트


이미 페이지의 시작에서으로 session_start를 설정하고있다. 새로 고침을하면 작동하는 것을 볼 수 있기 때문에 세션이 제대로 설정되고 있습니다. 셋째, 이미 AJAX를 사용하여 페이지를 새로 고치지 않고 세션을 설정하고 있습니다. 화면에 세션 변경에 응답하고 작동하는 다른 요소가 있습니다. "issset"기능이 세션을 감지하지 않는 유일한 기능입니다.

+0

PHP는 서버에서 실행되기 때문에 페이지 요구 세션을 가진 전에 다시로드 세션은 AJAX를 사용하여 설정지고 –

+0

설정합니다. 세션을 설정하기 위해 페이지를 다시로드 할 필요가 없습니다. – ssdesign

+0

그 내용을 추가해야합니다. –

답변

0

서버 측과 클라이언트 측의 차이점이 있기 때문입니다. Javascript는 서버에서 PHP 스크립트가 실행 된 후 브라우저에서 실행됩니다.

정확하게 무엇을 하려는지 알 수는 없지만 AJAX가 답이 될 수 있습니다.

+0

이미 jQuery AJAX 솔루션을 사용하여 세션 변수를 설정하고 있습니다. 그들은 제대로 설정되고 있습니다. 세션이 설정된 후에도 동일한 자바 스크립트를 호출 할 때만 해당 루프가 계속 실행되지 않습니다. – ssdesign

+0

당신은 여전히 ​​그것을 얻지 못합니다. '$ _SESSION [ 'current']'은 현재 한 번만 쓰여집니다. Javascript가 업데이트되지 않습니다. 그 후에도 세션 변수를 업데이트하더라도 $ _SESSION 부분이 PHP 인터프리터에서 더 이상 평가되지 않으므로 JS의 부분에는 이전 값이 포함되어 있습니다. 이미이 단계를 거쳤으며 이제 브라우저에 정적으로 상주합니다. – CodeCaster

+0

아, 그렇다면 일단 세션이 설정되면 어떻게해야합니까? 그것을 얻기 위해 또 다른 AJAX 호출을해야합니까? – ssdesign

0

세션 값을 설정하고 저장하려면 AJAX 호출을 사용해야합니다. 그런 다음 header ('Location : step2.php')를 사용하여 PHP 코드 내에서 리디렉션 할 수 있습니다.

0

는 상단으로 session_start()를 잊지 (또는 세션 자동 시작이 있는지 확인) AJAX 어떻게 작동되지 않습니다

+0

session_start가 있습니다. 앞에서 언급했듯이 세션이 제대로 설정되고 있습니다. – ssdesign

1

해달라고. PHP와 Javascript를 별도로 유지해야합니다. PHP를 사용하여 서버에서 페이지를 작성하십시오. 자바 스크립트는 AJAX 호출을 PHP로 다시 응답 할 서버로 다시 호출합니다. 튜토리얼을 통해 AJAX 요청을 작성하는 방법을 알아야합니다. 이는 일반 Javascript 또는 jQuery 또는 Mootools와 같은 libarary를 사용하는지 여부에 따라 다릅니다.

편집 : 당신이하려는 일을 정확히 모르겠지만 당신이하고 싶은 생각을하려고 노력할 것입니다. (참고 : 이것은 jQuery를 사용한 적이 없기 때문에 이것은 큰 추측이며 단지 의사 코드 일뿐입니다. 아이디어가 유용 할 것입니다.)

<script type="text/javascript"> 
function goNext() 
{ 
    // Get the session from the server (via an AJAX call). 
    $.get("getSession.php", function(sessionFromServer) 
    { 
     // Do stuff depending on the value of sessionFromServer 

     // However, it seems odd that the php isn't doing this with 
     // header("location: step2.php"); 
     window.location = "step2.php"; 
    }); 
} 
</script> 

getSession.php -이 같은 :

이 당신에게 내가 구분하여 무슨 뜻인지의 아이디어를 제공
<?php 
session_start(); 
echo json_encode($_SESSION); 
?> 

.

+0

jQuery Ajax 호출이 작동 중입니다. 나는 그것이 당신이 "그것이 작동하는 방법이 아니다"라는 말을 모른다. Ajax 호출을 통해 세션이 설정되기 때문입니다. – ssdesign

+0

코드에서 jQuery AJAX 호출이 표시되지 않습니다. 코드의 자바 스크립트 섹션을 가지고있을 때 - PHP 코드를 포함 할 수 없습니다 (코드 스 니펫은이를 혼합하므로 잘못되었습니다). 그들은 섞이지 않는다. 당신이 그들을 혼합 할 수있는 유일한 방법은 AJAX 요청을 통해 서버에 요청을함으로써 PHP 코드를 실행할 수있게하는 것입니다. – Paul

+0

잘 작동하기 때문에 코드의 Ajax 부분을 여기에 넣지 않았습니다. 세션 설정을 수행하는 별도의 기능이 있습니다. 이 특정 기능은 다른 버튼에 의해 사용됩니다.이 버튼을 누르면 세션이 설정되어 있는지 확인하고 적절하게 조치해야합니다. 세션을 설정하는 방법은 http://pastie.org/2616055에서 확인할 수 있습니다. setSession.php의 PHP 코드를보고 싶다면 알려주십시오. – ssdesign

1

왜 머리글로 단순화하지 않습니까?

<? 
if(isset($_SESSION['current'])) {header("location: step2.php"); exit;} 
?> 
+0

그런 경우 어떻게 "else"문을 실행합니까? - 편집 - 좋아, 내가 시도 할 수 있다고 생각 ... – ssdesign

+0

@ssdesign : 당신은 필요 없어. – hakre