php动态网址重定向使用标头位置和会话

时间:2012-02-07 00:01:08

标签: php session redirect

我正在努力找出实现这一目标的最佳方式,并且可能完全不考虑它。

我需要用户在获取页面内容之前提交他们的电子邮件。

此时他们无需确认只提交任何电子邮件。所以我创建了一个带有电子邮件字段的简单表单,并使用“POST”

将其提交到我的流程页面

但是,我需要在提交电子邮件后将其重定向到动态网址。

所以我希望能够将一个变量放在我要重定向到的页面的url中:

http://myurl.com/provide_email.php?url=newpage.html

在页面provide_email.php我把:

<?php
session_start();

session_register('url');

$_SESSION['url'] = $_GET['url'];

?>

并在同一页面上回显输出(只是为了测试它)。因此,它显示在同一页面上:

newpage.html

然后在我的process.php页面上,我把:

<?php

session_start();

$dynamicurl = $_GET['url'];

if(empty($_GET))
    echo "No GET variables";
else
    print_r($_GET); 


$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'folder1/folder2/';
header("Location: http://$host$uri/$extra/".$dynamicurl);


?>

但是,每次提交页面时,都不会使用$ dynamicurl变量重定向到网址。

我也尝试过:

header("Location: http://$host$uri/$extra/$dynamicurl");

我做错了什么?

网址必须是动态的,因为我正在创建最终用户将访问的cms页面。我只是希望他们必须先提交电子邮件才能进入每个独特的页面。

1 个答案:

答案 0 :(得分:0)

您的调试语句是问题所在:

if(empty($_GET))
    echo "No GET variables";
else
    print_r($_GET); 

将开始输出,因此无法遵守以下header()。我确定您的日志已满warning: Cannot set header, output already started

使用

if(empty($_GET))
    $message "No GET variables";
else
    $message=var_export($_GET,true); 

echo $message;

header()声明之后。