0

我难住了。我有一个 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";
    }

?>
4

2 回答 2

1

尝试使用

session_start();

在文件的开头。

于 2013-04-24T05:42:55.857 回答
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;

于 2013-04-24T06:57:35.890 回答