Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML中包含的PHP代码不会更新_Php_Html_Include - Fatal编程技术网

HTML中包含的PHP代码不会更新

HTML中包含的PHP代码不会更新,php,html,include,Php,Html,Include,我目前有一个PHP文件,它将搜索我的MySQL数据库,并查看是否有用户登录。如果他们登录,它将回显欢迎的“用户名”。注销,如果他们没有登录,它将回显登录。登记 如果我直接查看这个PHP文件,它将根据我是否登录而回显正确的文本。但是,如果我使用include将其放入HTML文件中,它将只回显已注销的文本,而不管我是否已登录 PHP和HTML之间是否存在冲突,这可能会阻止它打印出正确的文本?奇怪的是,它可以打开PHP文件本身,但当它包含在HTML中时就不行了 HTML代码: <?php inc

我目前有一个PHP文件,它将搜索我的MySQL数据库,并查看是否有用户登录。如果他们登录,它将回显欢迎的“用户名”。注销,如果他们没有登录,它将回显登录。登记

如果我直接查看这个PHP文件,它将根据我是否登录而回显正确的文本。但是,如果我使用include将其放入HTML文件中,它将只回显已注销的文本,而不管我是否已登录

PHP和HTML之间是否存在冲突,这可能会阻止它打印出正确的文本?奇怪的是,它可以打开PHP文件本身,但当它包含在HTML中时就不行了

HTML代码:

<?php include "loginreg/check.php"; ?>
它在子文件夹中这一事实会有所不同吗?没有包含PHP代码,因为它本身正在工作,但是如果您需要查看,我已经获得了它

干杯

PHP代码:

// Gets IP address
$ip = visitorIP();

// Connect to database
mysql_connect(localhost, $username, $password);
@mysql_select_db($database) or die('Unable to select database');

$query  = "SELECT * FROM loggedin WHERE userip='$ip'";
$result = mysql_num_rows(mysql_query($query));
if ($result == '0') {
    mysql_close();
    loggedOut();
    return;
}

if (isset($_COOKIE['sid'])) {
    $sessionid = $_COOKIE['sid'];
}

$result = mysql_query($query);
while ($row    = mysql_fetch_assoc($result)) {
    if ($row['sessionid'] == $sessionid) {
        mysql_close();
        loggedIn($row['id']);
    } else {
        mysql_close();
        loggedOut();
    }
}

function visitorIP() {
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $TheIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $TheIp = $_SERVER['REMOTE_ADDR'];
    }
    return trim($TheIp);
}

function loggedIn($id) {
    global $username, $password, $database;
    mysql_connect(localhost, $username, $password);
    @mysql_select_db($database) or die('Unable to select database');

    $query  = "SELECT * FROM users WHERE id='$id'";
    $result = mysql_query($query);

    while ($row = mysql_fetch_assoc($result)) {
        $fname = $row['fname'];
        $sname = $row['sname'];
    }

    echo "<div class=\"fltrt\">Welcome, " . $fname . ". <a href=\"http://redsquirrelsoftware.co.uk/loginreg/logout.php\">Logout</a></div>";
}

function loggedOut() {
    echo "<div class=\"fltrt\"><a href=\"http://redsquirrelsoftware.co.uk/loginreg/login.html\">Login</a> <a href=\"http://redsquirrelsoftware.co.uk/loginreg/register.html\">Register</a></div>";
}

没有看到这两个脚本的代码,这只是一个猜测,但一个可能的问题是,您正在输出html任何内容。。。在包含loginreg/check.php脚本之前

这将使包含的文件中的任何session_start语句都变得无用,因为已经发送了头。而无法进入会话将导致您描述的错误


编辑:对于Cookie,同样的原则也适用,它们需要在发送标题之前进行设置,以便在您将任何内容输出到浏览器之前进行设置。

您的问题是您在子目录中设置Cookie。使用setcookie的path参数确保您正在网站的根文件夹中设置cookie:

// Sets the cookie for the root of the domain:
setcookie("username", "foo", time() + 60 * 60, "/");

如果我错了,请纠正我,但是您是否正在尝试在HTML文件中使用PHP包含?如果是这样的话,除非您有一些自定义的服务器配置来解析HTML文件中的PHP代码,否则这将永远不会起作用


PHP代码用于PHP文件。HTML代码可以在HTML和PHP文件中工作。你不能在HTML文件中包含PHP。

显示loginreg/check.PHP的内容。我的第一个想法是路径问题。如果你使用会话来检查登录状态,你必须在任何HTML启动[link]之前启动会话。这可能无助于回答你的问题,但你应该停止使用mysql_*函数。他们被弃用了。请改用从PHP5.1起支持的或从PHP4.1起支持的。如果您不确定使用哪一个,@ArunKumar no我不确定,当用户登录时,我会获取他们的IP地址并生成一个随机会话ID,该ID存储在数据库中。然后在用户的系统上放置一个cookie来存储sessionID。当我检查时,我会获取用户的IP地址,从数据库中查找,从数据库中获取匹配的sessionID,并检查存储在他们系统中的cookie我根本没有使用任何session_start语句。我在include语句之前输出HTML-如果我把它放在HTML文件的开头,然后,我将如何获取PHP的输出并将其放在HTML文件中的正确位置?@Crazyloonybin只需将输出放在字符串中而不是将其回显出来,然后在HTML文件中将该字符串回显到您想要的位置。我是将include放在标记中还是之前?如果我返回字符串而不是回显,那么在任何输出之前,包括空格、新行等,我如何在?@Crazyloonybin中访问该字符串。包含文件时不需要返回任何内容,只需将其分配给变量,该变量将在包含后在html文件中可用。当您说“分配给变量”时,是指在PHP位内吗?例如,然后我想在哪里输出它?对不起,我在这里太傻了!啊,救命恩人!我在网上找到了setcookie位的示例代码,它不包括path参数,所以我假设它只接受了2个参数!非常感谢你!!是的,我修改了.htaccess文件来解析HTML文件中的PHP,因为我不想把我所有的HTML都写成PHP文件中的echo语句=