2010-10-23 35 views
4

我有5个php页面是问题文件(MCQ的)。要获取上一页的网址在php

为用户提供1份论文......他回答并提交了......然后去AnsCheck.php ...在AnsCheck.php中我需要了解从哪个页面,即从哪个页面收到请求的5篇论文中,以便我可以继续进行检查...如何从我收到请求的地方获取页面?

---- ---- 1.PHP

<?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; 
} 

?> 
<html> 
<head> 
<title>My Page</title> 
</head> 
<body> 
<form name="1" action="/NewDir/AnsCheck.php" method="POST"> 
1.Name the owl of harry potter. 
<div align="left"><br> 
<input type="radio" name="paper1" value="op1">Mr Barnesr<br> 
<input type="radio" name="paper1" value="op2" checked> Wighed<br> 
<input type="radio" name="paper1" value="op3"> Hedwig<br> 
<input type="radio" name="paper1" value="op4"> Muggles<br> 
<input type="submit" name="submit" value="Go"> 
</div> 
</form> 
</body> 
</html> 

回答

22

$_SERVER['HTTP_REFERER']包含引用页。 (并且,是的,它在PHP中拼写错误,因为它在实际的HTTP规范中拼写错误)转到图

但是,无论是否发送该头文件有时是浏览器中的某些用户选项,而真正旧的浏览器甚至根本不支持它,所以根据它可能会有问题。

如果您只是为这5个窗体中的每一个添加一个隐藏字段,表明它是哪种形式,那么您的代码将更有可能适用于更多用户。

3

您已经在使用会话。我会在这里再次使用它们:

$_SESSION['last_question'] = 1; 

然后你可以在AnsCheck中检查这个。或者,你可以把一个隐藏字段插入到表单中:

<input type="hidden" name="question" value="1"> 

然后用$_POST['question']检查AnsCheck的这个值。

这两个都比HTTP_REFERER更可靠,这不是所有浏览器都提供的。

+3

由于用户可以使用同一个网站打开多个选项卡,因此我为隐藏字段解决方案投了赞成票。 – 2010-10-23 14:25:48

+0

我是新来的PHP ...我会尝试它...并回到你... thnx很多... – 2010-10-23 14:28:50

+0

埃米尔,这是一个很好的观点。唯一的问题是它可能被欺骗,但这可能不是问题。 – lonesomeday 2010-10-23 14:31:16