我正试图找出最好的方法来做到这一点,但可能完全考虑过度了。
我需要用户在获得页面内容之前提交他们的电子邮件。
他们现在不需要确认,只需提交任何电子邮件即可。因此,我创建了一个带有电子邮件字段的简单表单,并使用"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()
语句之后。