2012-08-22 5 views
0

하나의 세션 변수를 다른 페이지로 전달하려고합니다. 내 첫 번째 페이지에서 내가 가진 :세션 변수가 변경되지 않습니다.

다음
<?php 
session_start(); 
?> 

: 내 contact.php 내가 가진 세션 시작에

<form class="form1" method="post" action="contact2.php" id="form1"> 
    <ul> 
     <li> 
      <label for="name">*Name:</label> 
      <input type="text" name="name" placeholder="Black Nova"class="required" role="input"   aria-required="true"/> 
     </li> 
     <li> 
      <input id="submit" class="submit .transparentButton" value="Next" type="submit" name="submit"/> 
     </li> 
    </ul> 
    <br/> 
</form> 

<?php 
    $_SESSION['name'] = $_POST['name']; 

    echo $_SESSION['name']; 
?> 

,하지만 난 sesssion 변수를 얻을 수 없습니다.

첫 번째 페이지에서 아무런 조치도 취하지 않으면 $_SESSION['name']에 올바른 값을 얻지 만, 조치를 제공하면 세션 변수가 변경되지 않습니다. 왜?

+0

는'$ _SESSION 무슨 에코 않습니다 [ '이름']'당신이'$ _POST [ '이름'] '로 설정하기 전에 생산 : 아래 코드 contact2.php을 만들고 쓰기? – Matt

+2

대화 상대 페이지의'session_start()'에 대한 호출이 브라우저에 어떤 출력 _ 이전입니까? 그것이 어디에 불려지는지 보여주십시오. –

+0

두 파일 모두 올바른 이름으로 게시 할 수 있습니까? 첫 번째 페이지 인'contact.php' 및'contact2.php' 파일이 포함되어 있는지 확실하지 않습니다. – jeroen

답변

1

조치를 취하지 않으면 양식이 동일한 페이지에 제출되므로 $_POST에 값이 지정되어 $_SESSION에 할당 될 수 있습니다. 액션을 contact2.php으로 지정하면 양식이 다른 페이지에 제출되므로 $_POST은 양식이있는 페이지에서 사용할 수 없으므로 세션에서 아무런 가치가 없습니다. 당신이 contact2.php에 조치를 설정 한 경우

, 당신은 해당 페이지에서 session_start()을하고 이동 코드

<?php 
$_SESSION['name'] = $_POST['name']; 
echo $_SESSION['name']; 
?> 

를 해당 페이지에, 당신은 contact2.php

+0

양식의 데이터를 다음 페이지로 가져 오려면 어떻게해야합니까? –

+0

변수를 변수에 할당 할 수 있습니다. 모두 '$ _POST'라는 슈퍼 글로벌에서 양식 데이터를 사용할 수 있습니다. 예를 들어'name'이라는 텍스트 상자에서 값을 얻으려면'$ name = $ _POST [ 'name']'으로 가져올 수 있습니다. – raidenace

+0

형식의 다른/모든 필드에 대해 동일하게 수행 할 수 있습니다 그것은 효과가 있었다. –

1

에서 세션을 에코 할 수 있어야합니다 수 있습니다 왜냐하면 어떤 액션도 제공하지 않으면 폼은 그 자신 (같은 페이지)에 제출할 것이고 첫 번째 페이지의 세션 변수를 설정하면 세션 변수를 잘 채울 것이기 때문입니다. 두 번째 페이지에 작업을 추가하면 첫 번째 페이지가 $ _POST를받지 못하기 때문에 세션 변수를 채우지 않습니다. 두 번째 페이지는 $ _POST입니다.

다른 페이지로 양식 데이터를 제출하는 경우 보내는 페이지가 아닌 수신 페이지에 세션 데이터를 설정해야합니다.

+0

어머니가 문제가 발생하는 이유는 아직 제출되지 않은 양식 데이터와 관련된 첫 페이지에 세션 변수를 설정하려고하기 때문입니다. 간단하게 $ _SESSION [ 'name'] = $ _POST [ 'name'] = $ _POST [ 'name']; $ 2.000으로 echo $ _SESSION [ 'name']; ?> "로 이동하면 모두 작동합니다. contact2.php에서도 세션을 시작하십시오. 양식이 다른 PHP 페이지 (예 : contact.php)에 있다고 가정합니다. – azzy81

0

양식에서 제출을 클릭하면 양식에서 contact2.php (action = "contact2.php")로 전송됩니다.

 
    session_start(); 

    session_regenerate_id(); 

    $_SESSION['name'] = $_POST['name']; 

    echo $_SESSION['name']; 
관련 문제