SQL登录仅在访问登录页面后有效

时间:2013-04-24 05:40:54

标签: php mysql

我很难过。我有一个login.php页面,其中包含我的index.php页面顶部包含的SQL登录信息(主机名,数据库,用户名,密码)(使用require_once)。登录信息位于条件语句中,用于确定我是在远程服务器还是本地测试服务器上,并提供正确的登录信息。现在这是它变得奇怪的地方,当我直接进入远程服务器上的index.php页面时,它不起作用(因为它不与数据库建立连接)但是它确实可以在测试服务器上工作如果我首先访问远程服务器上的login.php站点(它不回显任何内容),然后访问远程服务器上的index.php页面,则可以正常工作。我禁用了缓存。为什么会发生这种情况,我该如何解决?首先访问http://distantfuturejosh.com/playground/pendingaxioms(不起作用),然后访问http://distantfuturejosh.com/playground/pendingaxioms/login.php(提供空白页面)然后返回http://distantfuturejosh.com/playground/pendingaxioms(它会起作用,你会自己动手)看到图像出现了。)

这是login.php页面:

<?php

    $requesturi = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $pos = strpos($requesturi, "www.distantfuturejosh.com");

    if ($pos === 0)
    {
        $db_hostname = "xxxxxxxx";
        $db_database = "xxxxxxxx";
        $db_username = "xxxxxxxx";
        $db_password = "xxxxxxxx";
    }
    else
    {
        $db_hostname = "localhost";
        $db_database = "xxxxxxxx";
        $db_username = "root";
        $db_password = "root";
    }

?>

2 个答案:

答案 0 :(得分:1)

尝试使用

session_start();

在您的文件开头。

答案 1 :(得分:0)

尝试使用if ($pos === false)代替if ($pos === 0)这样的

<?php

    $requesturi = $_SERVER['HTTP_HOST'];
    $pos = strpos($requesturi, "distantfuturejosh");

    if ($pos === false)
    {  //local
        $db_hostname = "localhost";
        $db_database = "xxxxxxxx";
        $db_username = "root";
        $db_password = "root";
    }
    else
    {  //remote
        $db_hostname = "xxxxxxxx";
        $db_database = "xxxxxxxx";
        $db_username = "xxxxxxxx";
        $db_password = "xxxxxxxx";
    }

?>

我想您检查用户登录并在login.php

的其他PHP页面中包含include /subfolder/login.php;