2012-07-20 4 views
0

나는 항상 나에게 같은 결과를 제공,이 코드어떻게 세션을 PHP에서 값을 업데이 트합니까?

<CENTER> 
<?PHP 
    session_start(); 


$_SESSION['value'] = 15; 

    if(isset($_POST['submit'])){ 
    $plus = 10; 
    $_SESSION['value'] = ($_SESSION['value'] + $plus); 
    } 

echo "<FORM METHOD=post ACTION=\"?page=try&". time(). "\" NAME=try>\n"; 
echo "<br>"; 
echo "Your value :" .$_SESSION['value']; 
echo "<INPUT TYPE=submit NAME=submit VALUE=\"Submit\"></FORM>"; 
?> 
</CENTER> 

때마다 내가 그 버튼을 클릭하는 문제 내 세션 값

업데이트 할 수 없습니다. $_SESSION['value']

는 항상 15이며 결코 세션 값을 업데이트하는 방법을 너무

을 변경하지? 그래서 나는 $_SESSION['value']

+2

'

' 태그를 사용하지 마십시오. 내 눈이 아파. –

+0

또한, 출력 버퍼링을 사용하지 않는다면,'session_start()'_는 경고를 주어야합니다. 출력 전에 어떻게 출력했는지보아야합니다. PHP 세션을 더 읽어보십시오! –

+0

'$ _SESSION ['value ']'는 질문에서 언급 한 것처럼'35 '가 아닌 제출 버튼을 클릭 한 후에'25 '('15 + 10 = 25 ')가되어야합니다. – Lion

답변

3

명시 적으로 세션 값을 15로 설정 한 다음 10을 추가하십시오. 그것은 35에 도달해서는 안됩니다. 15로 과제를 제거한 다음 (또는 더 나은 방법으로 이전에 if(!isset($_SESSION['value'])) 체크 추가) 시도한 다음 다시 시도하십시오.

또한 John Conde의 조언을 받아야하며 전에 PHP 세션을 시작해야합니다. 출력은입니다. 읽으십시오 the manual

+0

1이 이미 @JohnConde 코드를 시도하지만 여전히 결과 25 –

+0

입니다 +1 – devzlyx

+0

줄 정답 –

1

session_start()이 (쿠키 기반 세션을 사용하는 경우) 모든 출력이 브라우저로 전송되기 전에이어야한다 (35) (지난 결과 25) I 버튼을 클릭하면 다시

감사가 될 수 있습니다.

<?php session_start(); ?> 
<CENTER> 
<?php 
$_SESSION['value'] = 15; 

    if (isset($_POST['submit'])) { 
     $plus = 10; 
     $_SESSION['value'] = ($_SESSION['value'] + $plus); 
    } 

echo $_SESSION['value']; 
echo '<form method="post" action="try1.php" name="try">' . "\n"; 
echo '<br>'; 
echo 'Your value :' . $_SESSION['value']; 
echo '<input type="submit" name="submit" value="submit"></form>'; 
?> 
</CENTER> 
+0

한 그는 그것이 내가 이미 그것을 시도하지만 여전히 같은 결과 – Blaster

+0

감사 위의 다른 HTML과 혼합 가지고 잊고 @ devzlyx 당신이 요구하는 문제는 JohnConde의 제안과 아무 관련이 없습니다. John Conde의 제안은 사용자가 묻지 않은 문제에 대한 답변이지만 여전히 코드에 존재합니다. 'session_start()', period를 호출하기 전에 출력을 보내지 않습니다. 'session_start()'는 출력이 이미 시작되었을 때 경고 메시지를 보낼 클라이언트로 보내지는 헤더를 변경합니다. 반면에 내 대답은 기대하고있는 결과를 줄 것입니다. – devzlyx

관련 문제