我正在努力找出实现这一目标的最佳方式,并且可能完全不考虑它。
我需要用户在获取页面内容之前提交他们的电子邮件。
此时他们无需确认只提交任何电子邮件。所以我创建了一个带有电子邮件字段的简单表单,并使用“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页面。我只是希望他们必须先提交电子邮件才能进入每个独特的页面。
答案 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()
声明之后。