转到HTTPS时,在URL末尾双击?

时间:2010-05-11 21:27:57

标签: php html session slash

我的网站目前根据网站上收集的数据使用http和https部分(表单数据使用https)。

在我的索引页面上,我在顶部有PHP代码:

<?php
    session_start();
    ob_start();
    if( $_SERVER['SERVER_PORT'] == 443) {
        header('Location:http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])); 
        die();
    } 
?>

但是,页面不会加载,我收到404错误。同样,当我使用头代码访问具有https安全性的部分时:

<?php
session_start();
ob_start();
    if( $_SERVER['SERVER_PORT'] == 80) {
        header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF'])); 
        die();
    }
?>

网站没有响应并且由于某种原因在从http切换到https时会产生双斜杠。

示例:http://www.abc.com/,然后点击要转到enroll.php的按钮,显示http://www.abc.com//enroll.php

为什么需要双斜线并且任何人都可以帮助解决404错误?

1 个答案:

答案 0 :(得分:2)

dirname()无法在PHP_SELF上运行,因为它不一定是完整目录。

dirname("/enroll.php")会正确返回一个空字符串,这又会导致双//

你究竟想做什么?