PHP代码无法正常运行

时间:2010-10-18 19:43:08

标签: php html

<?php
(E_ALL & ~E_NOTICE);
session_start();

// is the one accessing this page logged in or not?

if (!isset($_SESSION['db_is_logged_in']) || $_SESSION['db_is_logged_in'] !== true) {

    // not logged in, move to login page

    header('Location: login.php');
    exit;
}
else {
    echo "Welcome To The Test Page:";
    echo $_SESSION['logname'];
}

if (isset($_POST['submit'])) {
    test();
}

function test()
{
    $var = rand(1, 5);
    header("Location:{$var}.html");
    exit;
} 

<html>
    <body>
        <form action="<?=$_SERVER['PHP_SELF'];?>"  method="post">
            <input type="submit" name="submit" value="Take Test">
        </form>
    </body>
</html>

当点击“接受测试”按钮时,我需要向5个html页面中的1个显示(即本例中的问题文件),以便向用户显示。 因为我已经创建了从1到5的随机数。 这些页面的名称是1.html,2.html等......

有人可以调试这段代码吗?

7 个答案:

答案 0 :(得分:6)

其他评论解决了两个问题:更改标题前的输出,以及引号周围的格式无效。

另一个问题是从未在HTML中指定$_POST['submit']。你有:

<input type="submit" value="Take Test" />

但是指定的字段名称无处可去。这应该是:

<input type="submit" name="submit" value="Take Test" />

答案 1 :(得分:3)

中有额外的引号
header('"Location:".$var.".html"');

应该是

header('Location:'.$var.'.html');

或者如果您更喜欢在本答案的评论中提到的双引号,您可以使用php双引号变量插值:

header("Location: {$var}.html");

您将设置标题的字符串为:

"Location:".$var.".html"

而不是你真正想要的东西

答案 2 :(得分:2)

你需要退出;发送位置标题后。否则,重定向将不会发生。

header("Location:".$var.".html");
exit;

答案 3 :(得分:2)

在您的网页上写下内容后,您无法致电header()

此处,当您成功登录后,您echo会收到一条消息,然后尝试更改标题。但为时已晚。

来自php doc:

  

请记住,在发送任何实际输出之前必须调用 header() ,无论是普通HTML标记,文件中的空行还是PHP。使用include()require()函数或其他文件访问函数读取代码是一个非常常见的错误,并且在 header() <之前输出空格或空行/ strong>被调用。使用单个PHP / HTML文件时存在同样的问题。

如果您想要包含一些页面内容,然后包含它,请不要更改标题中的位置。

另外,正如其他人指出的那样,标题的字符串错误,"Location:".$var.".html"就足够了。

答案 4 :(得分:1)

看来你在电话后声明了test函数,所以你必须最好在电话会议之前移动它,我会把它放在{ {1}}

你还必须避免输出,以便让session_start();做你想做的事。您可以通过在标头指令后放置header来完成此操作。

GWW在回答中说,你还有额外的报价。

<强>更新

好吧,之前我没有注意到这一点,在PHP中你可以在声明之前调用函数,虽然这目前让我感到困惑。

答案 5 :(得分:0)

您可以检查表单是否由

发送
if($_SERVER['REQUEST_METHOD'] == 'POST') {
test();
}

答案 6 :(得分:0)

尝试手动将表单指向页面,而不是使用服务器var。

<form action="<?=$_SERVER['PHP_SELF'];?>"  method="post">  

<form action="test.php"  method="post">

甚至

<form action="<? echo $_SERVER['PHP_SELF'];?>"  method="post">