php动态url重定向使用头位置和会话


php dynamic url redirection using header location and sessions

我正试图找出最好的方法来做到这一点,但可能完全考虑过度了。

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

他们现在不需要确认,只需提交任何电子邮件即可。因此,我创建了一个带有电子邮件字段的简单表单,并使用"POST"将其提交到我的流程页面

然而,我需要他们在提交电子邮件后重定向到一个动态url。

因此,我希望能够在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);

?>

然而,每次我提交页面时,它都不会重定向到带有$dynamiccurl变量的url。

我也试过:

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

我做错了什么?

url必须是动态的,因为我是从cms创建页面的,最终用户会去。我只希望他们必须提交一封电子邮件,然后才能访问每个唯一的页面。

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

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()语句之后。