我有一个问题..
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL.'?app_not_found';
}
通过该功能,我正在获取当前的URL .... 现在我有两个条件
if($databaseAppVersion == $appVersionName)
{
//echo curPageURL();
header('Location: '.curPageURL());
}
else
{
$url ="www.google.com";
//echo $url;
header('Location: '.$url);
}
当我打印它们时,回声正在发生,但问题是它没有将我重定向到预期的页面...... 在第一个条件我想重定向到有消息的当前页面 即localhost / test / index.php?app_not_found 但这没有发生
答案 0 :(得分:0)
如果您的网页是这样的:
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL.'?app_not_found';
}
if($databaseAppVersion == $appVersionName)
{
//echo curPageURL();
header('Location: '.curPageURL());
}
else
{
$url ="www.google.com";
//echo $url;
header('Location: '.$url);
}
我不希望重定向到www.google.com以外的任何内容,因为您没有设置$databaseAppVersion
和$appVersionName
如果您在标题调用之前有任何echo
或print
函数,重定向将无效,因为标题已经发送。请参阅How to fix "Headers already sent" error in PHP。
另一张纸条;你的curPageURL()不一定会返回你期望的内容:
如果您提供http://www.example.com它将返回http://www.example.com https://www.example.com将返回https://www.example.com:443,因为您只检查端口80.
您可以轻松修改代码:
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80" || ($_SERVER["SERVER_PORT"] != 443 && $_SERVER["HTTPS"] == "on")) {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL.'?app_not_found';
}