从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开发的新手。我怎么能一般地改进这个功能?感谢您阅读
答案 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
之后的原因是什么?