2013-01-02 36 views
0

我無法調試我的代碼出了什麼問題。 以下是我在做什麼:php base64_decode函數在服務器上運行不正確

對於Ajax查詢,我設置了一個會話變量:sessiontoken,並對其進行編碼和解碼以確保請求來自正確的會話/頁面,如下所示,代碼存在在每一頁上,然後在javascript我回應這個變量,並使用阿賈克斯調用:

我的問題是,雖然腳本工作完美罰款本地服務器(xampp)上的每個頁面上,在現場服務器上給出了問題。 當我登錄到現場,主頁上的解碼值正確顯示在javascript函數中,但是當我點擊鏈接到myprofile或轉到任何其他頁面時,解碼後的sessiontoken值顯示奇怪的字符。 您能否讓我知道可能是什麼問題,因爲在當地它工作得很好。 thanx。

<?php 
    session_start(); 
    if(!(isset($_SESSION['id']) && isset($_SESSION['username']))) { 
      header("location: index.php"); 
      exit(); 
     } 
    if(!isset($_SESSION['sessiontoken'])) { 
      $thisRandNum = rand(999999,99999999); 
      $_SESSION['sessiontoken'] = base64_encode($thisRandNum); 
     } else { 
      $thisRandNum = base64_decode($_SESSION['sessiontoken']); 
     } 
?> 

<html> 
    <head> 
    <script type="text/javascript"> 
     function refreshWall() { 
      $.post('scripts/refreshlist.php', {thistoken: <?php echo $thisRandNum ?>}, 
      function(data) { 
      }, "json"); 
     } 
    </script> 
    </head> 
    <body> 
    </body> 
</html> 
+2

爲什麼你首先在Base 64中編號? – kmkaplan

+0

我認爲OP可能會認爲它更安全= o \ –

+0

@kmkaplan:這是一些教程中使用的一種做法,它表示它將使其更安全,因此我繼續使用它。 – vicked

回答

0

我將PHP版本升級到5.3版本,它解決了我的問題。

相關問題