2016-08-17 36 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> 

而且page3.php

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

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

</body> 
</html> 

所以在第一页上,我宣布会话变量 “favcolor”,然后在第二页上,如果用户选择了我想将颜色更新为红色的单选按钮,但它不会为我提供帮助第三页它仍然是印刷绿色

+0

你可能忘了'在session_start()'。没有开始会话,没有保存/传播的数据 –

+0

什么?你应该真正阅读更多关于http:// php的真实内容。净 –

+0

我有session_start(),在我的测验结束时(5个问题),我可以显示会话变量,但他们没有被增加时,他们应该是 – Dfarrelly

回答

1

您在page2.php上有问题,因为您在page3.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标头。

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

如果HTTP标头起初不工作,打开使用ob_start()输出缓冲区。

0

您正在检查错误页面中的$ _POST ['ans']。

当用户输入page2.php时,您正在检查'ans',这是在用户提交包含该输入元素的表单之前。

当您在page2.php上提交表单时,该操作将请求发送到page3.php,因此您实际上想要将用于将颜色设置为绿色的if语句移动到页面3的顶部(在会话开始之下) .php

相关问题