PHP函数调用停止页面加载,除非它被刷新

时间:2016-09-27 16:25:56

标签: php html

从HTML代码调用PHP函数时遇到问题。我的PHP代码主要连接到我的Java服务器并请求有关Twitter帐户的信息。我要求获取他们的个人资料图片的URL和他们的Twitter处理。此信息正在网站上显示。

PHP :(我正在工作的.php文件的顶部)

<?php
session_start();
if(!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
    header('Location: ../account/login.php?loggedin=no');
} else {

}
class Functions {
    public static function getName() {
        if(!isset($_SESSION['twittername'])) {
            include '../client.php';
            $_SESSION['twittername'] = Client::send("gettwittername:-1", null, -1);
        }
        return $_SESSION['twittername'];
    }

    public static function getPFP() {
        if(!isset($_SESSION['twitterpic'])) {
            include '../client.php';
            $_SESSION['twitterpic'] = Client::send("gettwitterpic", null, -1);
        }
        return $_SESSION['twitterpic'];
    }
}
?>

HTML :(与上面的PHP代码在同一个文件中)

<div class="logcontainer">
    <div class="profilepic">
        <img src="<?php echo Functions::getPFP(); ?>" style="margin: 0px 10px 0px 0px;">
    </div>
    <ul>
        <li class="loggedin"><b><span style="color: #AFAFAF;">CURRENTLY LOGGED IN AS</span>
        <br>
        <span style="color: #5d9dfd; font-size: 14px;"><?php $name = Functions::getName(); echo "<a href='http://twitter.com/" . $name . "' target='_blank'>" . $name . "</a>"; ?></span>
        </b>
        </li>
    </ul>
</div>

运行此代码时,它会显示我的个人资料图片。服务器还记录它收到“gettwitterpic”命令。这一切都很好,但是当要求获得名称时,几行下来似乎从未调用该函数。我从来没有在我的服务器上记录任何内容,它停止加载页面的其余部分。每当我刷新页面时,它都会很好地加载Twitter名称,但是在第一次加载页面时却没有。即使在初始页面加载时,有关如何使其始终有效的任何想法?此外,我确信有更好的方法来编写这些代码,我是Web开发的新手。我怎么能一般地改进这个功能?感谢您阅读

2 个答案:

答案 0 :(得分:3)

这两个函数都会包含client.php文件,这可能就是您的问题。

在第一页加载:

函数getPFP()会检查$_SESSION['twitterpic']是否未设置,然后包含client.php文件。

然后,函数getName()将验证$_SESSION['twittername']是否也未设置,并尝试再次包含client.php文件,这是您的问题。

在第二页加载:

函数getPFP()会检查$_SESSION['twitterpic']是否已设置,并且不会尝试包含client.php文件。

然后函数getName()将验证$_SESSION['twittername']未设置并包含client.php文件,这次没有问题,因为它只被包含一次。

您必须更改逻辑,因此文件只包含一次。

答案 1 :(得分:0)

调用时很可能会超时:

$_SESSION['twittername'] = Client::send("gettwittername:-1", null, -1);

下次调用该函数时,twittername显然已被检索并显示,但第一次需要很长时间才能得到结果。

另外:将:-1放在getwittername之后的原因是什么?