跳到主要內容

文章

目前顯示的是 二月, 2009的文章

使用php取得網址

在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


引述自


http://www.gocar.idv.tw/phpbb3/viewtopic.php?f=9&t=21&p=22

Session注意事項2-傳送Class的問題

這一次做了一個嘗試,之前都不曉得session有這麼的神通廣大,發現可以將Class傳入Session中

<?php
sessiont_start();

class SaveSession{
function echoDate(){
echo "God, I can save Class in session.";
}
}

$test = new SaveSession();
$_SESSION['name'] = $test;
?>

我們可以將內容到另外一個頁面來讀取看看


<?php
session_start();

$load = $_SESSION['name'];
echo $load->echoDate();
?>

奇怪怎麼會發現沒有任何東西輸出呢?我們將這個資訊輸出看一下,我們會發現裡面給了一些有趣的訊息:

[__PHP_Incomplete_Class_Name]

原來是因為我們沒有定義這個Class所以沒有辦法得知內部的資料,所以我們可以將剛剛Class SaveSession再這個頁面重新定義一次,也就是include


<?php
sessiont_start();

class SaveSession{
function echoDate(){
echo "God, I can save Class in session.";
}
}

$load = $_SESSION['name'];
echo $load->echoDate();
?>

完成了嗎?輸出的資料還是一樣null,這是為何呢?這是因為我們的Class必須要在session開啟之前就定義,我們將位置交換一下

<?php
class SaveSession{
function echoDate(){
echo "God, I can save Class in session.";
}
}

sessiont_start();

$load = $_SESSION['name'];
echo $load->echoDate();
?>

Session注意事項

很多人要使用session時都發現,為何沒有辦法讀出來沒有值呢?像底下這樣子

<?php
echo $_SESSION['name']; //null
?>


這是因為前面沒有加上session_start();,正確的Code應該這樣子寫

<?php
session_start();
echo $_SESSION['name']; //null
?>


但是有時候還是會出現一些錯誤,例如常見的

cannot send session cache limiter-headers already sent (output start at ............)

ok,出現這樣子的訊息有兩種可能性,目前我所遇到的狀況也只有這兩種
1.
在使用session_start();之前輸出了資料,例如

<html>
<head>
</head>
</html>


諸如此類的型態都會產生錯誤,最好的方式就是直接在每個要使用session的頁面直接第一行就執行session_start();

2.
引用了UTF-8格式的文件,解決這種方式有兩種

第一種方式:
在php.ini底下修改,將output_buffering = off,改成output_buffering = 4096

第二種方式:
就是將檔案格式改成utf-8 無 BOM的格式,改的方式就是
開啟notepad++>格式>轉換至UTF-8碼無BOM



Reservation Work log(2)

Today, I finished login page, I rewrite it to a class model for maintaning easy and cleanly. But it waste much time to do, I am not used this type of coding. But I trust it if I want to go up stair, I have to learn it.

It is a mash day. tomorro will be better. Fight!