2016-08-17 3 views
0

양식이 있습니다.이 양식은 question1.php라는 페이지에 있으며 제출 버튼을 누르면 question2.php가로드됩니다.PHP 코드를 실행 한 후 새 페이지를로드 중입니까?

<form action="question2.php" method="post"> 
    <input type="radio" name="ans" value="cuboid"> 
    <input type="radio" name="ans" value="cone"> 
    <input type="radio" name="ans" value="cylinder"> 
    <input type="radio" name="ans" value="sphere"> 
    <input type="submit" value="submit" name="submit"> 
</form> 

는하지만이 PHP 코드를

<?php 
    if(isset($_POST['submit'])) { 
     if(isset($_POST['ans'])) { 
      $selected_answer = $_POST['ans']; 
      if($selected_answer == "cuboid") { 
       $_SESSION["cuboid"] = ((int)$_SESSION["cuboid"]) + 1; 
      } 
     } 
    } 
?> 

편집이 : 나는 시도하고, 내가 세 페이지를 가지고 더 나은 자신을 설명하는 간단한 데모를 만들었습니다.

page1.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 

<form action="page2.php"> 
    <input type="submit" value="submit" name="submit"> 
</form> 
<?php 
// Set session variables 
$_SESSION["favcolor"] = "green"; 
?> 
</body> 
</html> 

page2.php

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 
    <form action="page3.php" method="post"> 
     <input type="radio" name="ans" value="color"> 
     <input type="submit" value="submit" name="submit"> 
    </form> 
<?php 
// Echo session variables that were set on previous page 
if(isset($_POST['submit'])) { 
    if(isset($_POST['ans'])) { 
     $selected_answer = $_POST['ans']; 
     if($selected_answer == "color") { 
      $_SESSION["favcolor"] = "red"; 
     } 
    } 
} 
?> 
</body> 
</html> 

그리고

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 

<?php 
    echo "Favorite color is " . $_SESSION["favcolor"] . "."; 
?> 

</body> 
</html> 

그래서 첫 페이지에 내가 세션 변수 "favcolor"를 선언 page3.php, 다음 사용자가 라디오 버튼을 선택하면 두 번째 페이지에서 색상을 빨간색으로 업데이트하지만 나에게 적합하지는 않습니다. 세 번째 페이지 여전히 녹색으로 인쇄 중입니다.

+0

당신은 아마 잊지'으로 session_start()'. 시작 세션 없음, 보존/전파 된 데이터 없음 –

+0

무엇? PHP가 실제로 http : // php에있는 것에 대해 더 많이 읽어야합니다.net –

+0

나는 session_start()를 가지고있다. 나의 퀴즈 (5 개의 질문)의 끝에서 나는 세션 변수를 표시 할 수있다.하지만 그들이 – Dfarrelly

답변

1

page3.php에 양식을 제출했지만 page2.php에 제출 요청을 처리하고 있기 때문에 page2.php에 문제가있었습니다. 그래서 나는 아래에서 당신을 위해 고쳤다.

page1.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
    <body> 
    <form action="page2.php" method="post"> 
     <input type="submit" value="submit" name="submit"> 
    </form> 
    <?php 
    // Set session variables 
    $_SESSION["favcolor"] = "green"; 
    ?> 
    </body> 
</html> 

page2.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<body> 
    <form action="page3.php" method="post"> 
     <input type="radio" name="ans" value="color"> 
     <input type="submit" value="submit" name="submit"> 
    </form>   
</body> 
</html> 

page3.php

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<body> 
    <?php 
    // Echo session variables that were set on previous page 
    if (isset($_POST['submit'])) { 
     if (isset($_POST['ans'])) { 
      $selected_answer = $_POST['ans']; 
      if ($selected_answer == "color") { 
       $_SESSION["favcolor"] = "red"; 
      } 
     } 
    } 
    echo "Favorite color is " . $_SESSION["favcolor"] . "."; 
    ?> 
</body> 
</html> 
0

이 작업이 잘되기를 바랍니다.

$_SESSION["cuboid"] = isset($_SESSION["cuboid"]) ? $_SESSION["cuboid"] : 0; 
$_SESSION["cuboid"] = ((int)$_SESSION["cuboid"]) + 1; 
+0

왜 당신은 오직 희망이 있겠습니까? –

+0

제발 편집 해주세요 제 자신을 더 잘 설명하려고했습니다 :) – Dfarrelly

+0

내 최신 답변보기 –

0

내가 알 수있는 바로는 다른 웹 페이지로 리디렉션하려고합니다.

header() 기능을 사용하여 HTTP 헤더를 보내보십시오. HTTP 헤더 처음에는 작동하지 않는 경우

header('Location: http://example.com/page3.php'); 
exit(); 

, ob_start()를 사용하여 출력 버퍼를 켭니다.

0

잘못된 페이지에서 $ _POST [ 'ans']을 확인하고 있습니다.

현재 사용자가 입력 요소를 포함하는 양식을 제출하기 전에 사용자가 page2.php를 입력 할 때 'ans'를 확인합니다.

page2.php에 양식을 제출하면 작업이 page3.php로 요청을 보내므로 실제로 페이지 3의 상단 (세션 시작 아래)에 녹색을 설정하는 if 문을 이동하려고합니다. .php

관련 문제