Archive

‘PHP’ 分類過的Archive

程式中如何檢查PHP版本及函式是否有提供

2013年6月7日 尚無評論

最近在處理PHP,有用到一些PHP函式都有限定PHP某版本之後才支援或是某版本之後有些參數就作廢了

以前其實很好區分,多半只要注意PHP 3 4 5 這種大版本就好,但像PHP 5.3.0 之前及之後就有蠻多差別

所以如要判斷時,只要在程式中用phpversion()即可得到目前使用的PHP版本號
 

<?

 if(phpversion()>='5.3.0') echo "HI";

?>

詳請參考http://tw1.php.net/manual/en/function.phpversion.php

就是這麼簡單,那如果要判斷這函式是否有提供呢? 我們可以用function_exists即可判斷:

<?
if (function_exists('imap_open')) {
    echo "IMAP functions are available.<br />\n";
} else {
    echo "IMAP functions are not available.<br />\n";
}
?>

詳請參考http://php.net/manual/en/function.function-exists.php

 

如果我們要找某個PHP系統參數值呢? 我們可以用get_ini來查出來

詳請參考http://php.net/manual/en/function.ini-get.php

Categories: PHP, 程式開發 Tags:

PHP如何取得目前網址及參考連結

2012年12月18日 尚無評論

剛好有需要用到,這種找GOOGLE比自己看函式庫來的快

這篇寫的蠻好的,直接使用即可上手

php中要取得目前網址要用字串組合的方式
$_SERVER[‘HTTP_HOST’] //網址
$_SERVER[‘REQUEST_URI’] //包含參數(包含目錄)
$_SERVER[‘PHP_SELF’] //只有檔案名稱(包含目錄)
$_SERVER[QUERY_STRING] //只取後面參數

 

以 http://www.gocar.idv.tw/phpbb3/viewforum.php?f=1  網址為例
$_SERVER['HTTP_HOST']  : www.gocar.idv.tw
$_SERVER['REQUEST_URI'] :/phpbb3/viewforum.php?f=1
$_SERVER['PHP_SELF'] : /phpbb3/viewforum.php
$_SERVER[QUERY_STRING] : f=1
所以

$ThisURL = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $ThisURL ;
會得到 
http://www.gocar.idv.tw/phpbb3/viewforum.php?f=1

$ThisFile = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo $ThisFile ;
會得到
http://www.gocar.idv.tw/phpbb3/viewforum.php

還有順帶一提,如果需要知道參考連結可以利用以下語法即可取得到

$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

 

參考來源:

  • http://www.gocar.idv.tw/phpbb3/viewtopic.php?f=9&t=21
  • http://www.electrictoolbox.com/php-http-referer-variable
Categories: PHP, 程式開發 Tags:

排除PHP-Error-The-script-tried-to-execute-a-method-or-access-a-property

2012年12月14日 尚無評論

很有趣的一件事,每當許久沒去寫程式,往往在撰寫的過程中,就會出現一些奇怪的問題

這次遇到這個問題 The script tried to execute a method or access a property

在PHP使用session 及物件上遇到的,看了網路上一堆文章說

這是因為程式某些操作產生Incomplete Object(__PHP_Incomplete_Class),並且呼叫了此物件的函式。產生Incomplete Object的原因是序列化的資料轉回原始物件時,該物件的類別並未被定義

原以為物件放入session要先序列化,但印象中以前沒有做過呀~,後來瞭解後,其實問題很簡單
就是你從session取出時,你要操作這物件,但你並未先宣告這個物件過,意思就是~忘了include 這物件宣告

就是這麼容易,但這問題也花了不少時間去懷疑自己的邏輯….^^||

 

參考連結:http://emn178.pixnet.net/blog/post/87731583-%E8%A7%A3%E6%B1%BAthe-script-tried-to-execute-a-method-or-access-a-prope

Categories: PHP, 程式開發 Tags: ,

如何排除php Warning Cannot send session cache limiter

2012年11月27日 尚無評論

很怪的問題又發生了,明明先前安裝系統時設定都很正常

但這次就是遇到了

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent

 

去查了一下說要在使用session前要先session_start(),印象中系統裡使用session時都有先寫session_start

不管如何,有一個快速的解決方案,就是改php.ini就OK啦

找到session.auto_start 參數

預設應該為0 只要改成1 即可排除這問題

 

 

Categories: PHP, 程式開發 Tags:

PHP ini_set 可設定之項目

2012年7月13日 尚無評論

PHP有提供ini_set() 函式 可以在程式之中動態調整相關系統參數,有時一些虛擬平台不能讓你去設定參數時
或是你可以設定程式是否要動態啟用debug display時 就可以用這個方法去調整
不過要注意,並不是所有的參數設定都適用
目前只有 Changeable 欄位為 PHP_INI_USER 或 PHP_INI_ALL 才可以接受 ini_set() 設定。

http://tw.php.net/manual/en/ini.list.php

Categories: PHP Tags:
分頁: 上一頁 1 2 3 4 下一頁