2011/11/17

php中require/include 包含相對路徑的解決辦法

在PHP中require,include一個文件時,大都是用相對路徑,是個很頭疼的問題。

問題:
在1.php中通過include("../B/2.php")來引入B目錄下的2.php文件;
在index.php中通過include("A/1.php")來引入A目錄下的1.php文件;
運行出來當然會出現問題,找不到../B/2.php文件。

這是因為:
1.php被編譯到index.php中執行,也就是相當於1.php同index.php一樣位於網站根目錄下,但是在1.php別忘記了一斷代碼include("../B/2 .php");

"../"意味著什麼?上一級目錄,現在1.php已經在根目錄下了,這時候再上一級,那就已經找不到2.php了,所以問題就出現在此。

很多人會想到include("/B/2.php"),這樣不就好了,同樣不行php不同於我們的jsp,在include中使用"/"並不是我們所想像的網站根目錄,它代表的的當前的目錄,因此還是不行。
既然不能用相對的,那我們可以改用絕對路徑的方式。只是在包含文件之前,先包含一個global.php文件。

這個文件的內容是:
chdir(dirname(__FILE__));
它的作用是將當前目錄切換到global.php所在的路徑。 將global.php放在根目時錄下,在這之後包含的所有文件就會以根目錄為基準了。

例如,在2.php中引用1.php,則,通過2步:

1.require(dirname(__FILE__).'/../global.php');//視具體的目錄情況,反正是要指回到根目錄下的global.php 
 2.require('A/1.php')//從根目錄開始定位


這樣的話,不管頁面在哪一級目錄,我都可以去引用,不用再擔心路徑問題了!

2011/07/26

facebook sharer.php

set icon and description

<link rel="image_src" href="http://icons.iconarchive.com/icons/walrick/openphone/256/Phone-icon.png" />
<meta name="description" content="TESTING: This is the description of my webpage that I really want to have shared on Facebook!" />

2011/05/25

[DEBUG]jquery drop down menu hover後快速閃動

http://www.queness.com/resources/html/dropdownmenu/index.html

做DROP DOWN MENU 時, 用左JQUERY的 SLIDEUP同 SLIDEDOWN 來用作ANIMATION , 好似以上網址中的DEMO 咁

$('#nav li').hover(
function () {
//show its submenu
$('ul', this).slideDown(100);

},
function () {
//hide its submenu
$('ul', this).slideUp(100);
}
);
但發現到一個BUG, 就係當你好快咁mouseenter , 再好快咁mouseleave 個submenu, bug就產生了, 竟然見到個sub menu 不斷咁出現→消失→出現→消失...

最後發覺, 係個animation 問題, 當你移出/移入pointer既時候, slidedown animation 未完成又開始做slideup animation, 就會loop死左

解決方法原來好簡單, 就是在開始ANIMATION前STOP左去先

$('#nav li').hover(
function () {
//show its submenu
$('ul', this).stop(true, true).slideDown(100);

},
function () {
//hide its submenu
$('ul', this).stop(true, true).slideUp(100);
}
);

完成!

2011/05/20

jquery 改iframe content

有時逼不得已要用到iframe, 而iframe 入要的內容又想改wo
咁點做好呢?

以下方法只適用於same domain, protocol and port~!

//HTML
<iframe src="" frameborder="0" scrolling="no" id="iframe1" />

//JS
//找出header然後remove
$("#iframe1").attr('src', 'someURL');

$('#iframe1').live('load', function (){
    $("#iframe1").contents().find("div.header").remove();
});