2016-09-27 26 views
0

我從我的HTML代碼調用PHP函數時遇到問題。我的PHP代碼主要連接到我的Java服務器並請求有關Twitter帳戶的信息。我要求獲取他們的個人資料圖片的網址和他們的Twitter處理。這些信息正在網站上顯示。PHP函數調用停止頁面加載,除非它被刷新

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開發新手。我怎樣才能改進這個功能呢?感謝您閱讀

回答

3

這兩個函數將包括client.php文件,這可能是您的問題。


在第一個頁面加載:

功能getPFP()將檢查$_SESSION['twitterpic']沒有設置,則包括client.php文件。

然後功能getName()將驗證$_SESSION['twittername']也未設置,並嘗試再次包括client.php文件,這是您的問題。


在第二個頁面加載:

功能getPFP()將檢查$_SESSION['twitterpic']設置,並且不會嘗試包括client.php文件。

然後功能getName()將驗證$_SESSION['twittername']沒有設置,幷包括client.php文件,這次沒有問題,因爲它只包含一次。


你必須改變你的邏輯,所以文件只包含一次。

+0

感謝您的幫助 –

+0

另外,您應該在代碼中看到錯誤。你有錯誤報告嗎? – Phiter

+0

不是在這個頁面上,在索引上我有「ini_set('display_errors',1);」。這會影響我當前頁面上的任何內容嗎? –

0

最有可能你會得到一個超時調用時:

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

你叫twittername顯然已被檢索和顯示的功能,但它第一次需要到下一次很長時間才能得到結果。

另請參見:在此行中getwittername之後放:-1的原因是什麼?

+0

服務器可以檢查任何Twitter帳戶的名稱,並且每個服務器都已經附加了一個Twitter帳戶。 -1正在說「使用您附加的Twitter帳戶」 –

相關問題