Linux xampp Couldn't start MySQL
XAMPP: Starting MySQL...
XAMPP: Couldn't start MySQL!
可能原因
檔案權限,導至系統無法建立mysql.sock檔
chmod -R 775 /opt/lampp/var/mysql
chown -R nobody:root /opt/lampp/var/mysql
2014年12月26日 星期五
2014年12月25日 星期四
CentOS 7 開機啟動
讓 XAMPP 在開機的時候自動啟動
#nano /etc/rc.d/rc.local
在裡面新增一行
/opt/lampp/lampp start
加上執行權限
#chmod 744 /etc/rc.d/rc.local
-----------------------
[開機啟動] 關閉
chkconfig mysql off
chkconfig httpd off
重新啟動apache
service httpd restart
#nano /etc/rc.d/rc.local
在裡面新增一行
/opt/lampp/lampp start
加上執行權限
#chmod 744 /etc/rc.d/rc.local
-----------------------
[開機啟動] 關閉
chkconfig mysql off
chkconfig httpd off
重新啟動apache
service httpd restart
2014年12月23日 星期二
php貪婪與非貪婪比對
轉自
http://note.tc.edu.tw/868.html
https://disp.cc/b/11-2q1S
貪婪與非貪婪
當要抓取一段不固定的字串,例如 <b> 與 </b> 中間的字
最常看到的方法就是使用正規表示式 regular expression (以下簡稱 regex):
/<b>(.*?)<\/b>/
http://note.tc.edu.tw/868.html
https://disp.cc/b/11-2q1S
貪婪與非貪婪
當要抓取一段不固定的字串,例如 <b> 與 </b> 中間的字
最常看到的方法就是使用正規表示式 regular expression (以下簡稱 regex):
/<b>(.*?)<\/b>/
2014年12月18日 星期四
CentOS 7 防火牆設定
CentOS 7 防火牆設定
#firewall-cmd --list-all
查看一下防火牆現在開啟了哪些服務和端口:
暫時開起or關閉
# firewall-cmd --add-service=https
# firewall-cmd --remove-service=https
永久開起
# firewall-cmd --add-service=ftp --permanent
查看防火牆
# iptables -L
開啟port
# /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
關閉port
# /sbin/iptables -I INPUT -p tcp --dport 80 -j REJECT
#firewall-cmd --list-all
查看一下防火牆現在開啟了哪些服務和端口:
暫時開起or關閉
# firewall-cmd --add-service=https
# firewall-cmd --remove-service=https
永久開起
# firewall-cmd --add-service=ftp --permanent
查看防火牆
# iptables -L
開啟port
# /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
關閉port
# /sbin/iptables -I INPUT -p tcp --dport 80 -j REJECT
2014年12月11日 星期四
linux 設定永久 alias(別名)
linux 永久 alias(別名)
例如每次下 #ls -al時,想直接下簡短指令#ll (可自訂)
#cd ~
#ls -al
#nano .bashrc
最後一行加入alias ll='ls -al'
例如每次下 #ls -al時,想直接下簡短指令#ll (可自訂)
#cd ~
#ls -al
#nano .bashrc
最後一行加入alias ll='ls -al'
2014年10月29日 星期三
Linux 64bit 安裝xampp 錯誤訊息
Ubuntu用
XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system.
XAMPP只支援32bit作業系統,若系統為64bit,只要安裝32bit lib就可以了
sudo apt-get install ia32-libs
or
sudo apt-get install lib32stdc++6
-----------------------------
CentOS用
yum install -y glibc*i686
加 -y 參數,就可跳過詢問(y/n)的過程,直接執行至完成安裝。
Ubuntu SSH遠端開機Grub開機卡住
修改Ubuntu的Grub菜單的超時時間
nano /etc/default/grub
#GRUB_HIDDEN_TIMEOUT=0
update-grub
nano /boot/grub/grub.cfg
if [ "${recordfail}" = 1 ]; then
set timeout=5 <==改成別的數字
else
set timeout=5
fi
nano /boot/grub/grub.cfg
if [ "${recordfail}" = 1 ]; then
set timeout=5 <==改成別的數字
else
set timeout=5
fi
2014年9月29日 星期一
jquery document.ready 與 window.load分別
jQuery(document).ready(function() { … })
《 或簡寫為 $(function() { … }); 》當 document 物件下所有 DOM 物件都可以正確取得時,就會觸發 jQuery.ready() 註冊的 function,這時雖然後 <img src="…" /> 定義的圖片正在下載,但由於 <img> 這個 DOM 物件已經都 ready 了,所以 jQuery 並不會等圖片全部下載完畢才執行 ready 事件。
jQuery(window).load(function() { … })
而使用 window 的 load 事件,卻是完全不同的行為,jQuery 裡的 window 的 load 事件與 JavaScript 裡的 window.onload 事件一模一樣,註冊在這裡面的事件都會等到整個視窗裡所有資源都已經全部下載後才會執行,例如該頁面有 100 張圖片就會等 100 圖片都下載完才會執行,其中也包括所有 iframe 子頁面的內容必須完整載入。截取自
http://blog.miniasp.com/post/2010/07/25/jQuery-ready-vs-load-vs-window-onload-event.aspx
2014年9月25日 星期四
win 2003 mysql 安裝出現error 1045
mysql安裝出現error Nr.1045
我們在windows下安裝mysql時會出現Access denied for user 'root'@localhost'(using password:No)的問題,這個問題是因為你的機器上之前安裝過mysql,或者這 一次安裝配置了新密碼,進入應用的最後一步時候由於某些原因卡出了或者由於服務未啟動等原因導致無法配置成功,最終結果是,配置未成功,密碼設置已經保存 進去了。這樣我們調整好了服務等原因後,進行重新配置的時候,會發現在設置密碼的時候,多了一個舊密碼輸入框。其實這也沒什麼,在密碼知道的情況下,輸入 舊密碼重新設置密碼並不難,而問題關鍵在於即使舊密碼正確,你依舊無法完成配置,在最後一個環節密碼認證的時候又出錯了,出錯原因是密碼問題,提示舊密碼 不對。
我們在windows下安裝mysql時會出現Access denied for user 'root'@localhost'(using password:No)的問題,這個問題是因為你的機器上之前安裝過mysql,或者這 一次安裝配置了新密碼,進入應用的最後一步時候由於某些原因卡出了或者由於服務未啟動等原因導致無法配置成功,最終結果是,配置未成功,密碼設置已經保存 進去了。這樣我們調整好了服務等原因後,進行重新配置的時候,會發現在設置密碼的時候,多了一個舊密碼輸入框。其實這也沒什麼,在密碼知道的情況下,輸入 舊密碼重新設置密碼並不難,而問題關鍵在於即使舊密碼正確,你依舊無法完成配置,在最後一個環節密碼認證的時候又出錯了,出錯原因是密碼問題,提示舊密碼 不對。
2014年7月1日 星期二
linux vim常用指令
一般模式可用的按鈕說明,游標移動、複製貼上、搜尋取代等
指令列模式的可用的按鈕說明
G | 移動到這個檔案的最後一行(常用) |
gg | 移動到這個檔案的第一行,相當於 1G 啊! (常用) |
/word | 向下尋找word字串。例如要在檔案內搜尋 vbird 這個字串,就輸入 /vbird 即可! (常用) |
?word | 向上尋找word字串。 |
n | 『重複前一個搜尋的動作』。 |
dd | 刪除游標所在的那一整列(常用) |
yy | 複製游標所在的那一行(常用) |
p | p 為將已複製的資料在游標「下」一行貼上 |
u | 復原前一個動作。(常用) |
[Ctrl]+r | 重做上一個動作。(常用) |
[Ctrl]+v | 區塊選擇,可以用長方形的方式選擇資料 |
v | 字元選擇,會將游標經過的地方反白選擇! |
. | 小數點!重複前一個動作的意思。 如果你想要重複刪除、重複貼上等等動作,按下小數點『.』就好了! (常用) |
指令列模式的可用的按鈕說明
:w | 將編輯的資料寫入硬碟檔案中(常用) |
:q | 離開 vi (常用) |
:q! | 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。 |
:set nu | 顯示行號 |
:set nonu | 為取消行號! |
2014年6月23日 星期一
PHP array 排序
在這裡介紹所有PHP排序陣列的功能
sort:排序「值」,從小到大
rsort:排序「值」,從大到小
ksort:排序「Key」,從小到大
krsort:排序「Key」,從大到小
asort:排序「值」,從大到小,且保留原本的index(asort跟sort差別在sort之後會改變原本的index順序,而asort會保留原本的index)
arsort:排序「值」,從小到大,且保留原本的index
sort:排序「值」,從小到大
rsort:排序「值」,從大到小
ksort:排序「Key」,從小到大
krsort:排序「Key」,從大到小
asort:排序「值」,從大到小,且保留原本的index(asort跟sort差別在sort之後會改變原本的index順序,而asort會保留原本的index)
arsort:排序「值」,從小到大,且保留原本的index
2014年4月14日 星期一
OpenSSL安全性漏洞 檢測及更新
官方建議 升級到最新版本OpenSSL 1.0.1g。
無法立即升級的用戶可以以-DOPENSSL_NO_HEARTBEATS開關重新編譯OpenSSL。
而1.0.2-beta版本的漏洞將在beta2版本修復。當然,升級後別忘記提醒用戶更改密碼、提醒雲服務使用者更新SSL密鑰重複證書。
舊版的openssl(1.0.0之前)由於沒有使用heartbeat這個extension,反而無此風險,1.0.1之後的版本,通常有使用此extension
2014年4月13日 星期日
ubuntu下apt-get 命令參數大全
apt-cache search package 搜索包
apt-cache show package 獲取包的相關資訊,如說明、大小、版本等
sudo apt-get install package 安裝包
sudo apt-get install package – - reinstall 重新安裝包
sudo apt-get -f install 修復(依賴)安裝“-f = ——fix-missing”
sudo apt-get remove package 刪除包
sudo apt-get remove package – - purge 刪除包,包括刪除配置檔等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 升級系統
2014年4月11日 星期五
linux 系統 LOG syslog 設定檔位置
syslog 設定檔位置
/etc/rsyslog.d/50-default.conf
傳送 log 到遠端 log server 上
規則
log 等級 @log_server_ip (預設為 upd 514 port)
範例
auth.=alert @192.168.1.2
修改完後,重新啟動 syslog
sudo /etc/init.d/rsyslog restart
是否有啟動 syslogd
# ps aux | grep syslog
/etc/rsyslog.d/50-default.conf
傳送 log 到遠端 log server 上
規則
log 等級 @log_server_ip (預設為 upd 514 port)
範例
auth.=alert @192.168.1.2
修改完後,重新啟動 syslog
sudo /etc/init.d/rsyslog restart
是否有啟動 syslogd
# ps aux | grep syslog
2014年4月10日 星期四
Mail Server Postfix 清除佇列
佇列
/var/spool/postfix/
查看某個佇列的信件
#postcat /var/spool/postfix/deferred/D/D4079168B30
清除單一封
#postsuper -d QUEUE_ID
刪除所有在 Queue 中的郵件
#postsuper -d ALL(不建議這麼做,除非你真的清楚知道你不要所有的信件!)
2014年4月9日 星期三
Codeigniter email 中文亂碼解決
修正Codeigniter email 中文亂碼解決
在libraries/Email.php找到function subject($subject),改成如下
class CI_Email
{
function subject($subject)
{
//修正中文亂碼
$subject = '=?'. $this->charset .'?B?'. base64_encode($subject) .'?=';
$this->_set_header('Subject', $subject);
return $this;
}
...
}
2014年3月22日 星期六
Ubuntu 12.04 設定 Apache 使用 SSL 網站
1.安裝 OpenSSL
Ubuntu 在 10.04 後,好像就有預裝 OpenSSL 了,可以用下面的指令裝裝看,有裝過再裝一遍也不會有事的哩 !
sudo apt-get install openssl
2014年3月21日 星期五
ubuntu 12.04 安裝Apache+PHP+Mysql+phpmyadmin
ubuntu 12.04 安裝Apache+PHP+Mysql+phpmyadmin
一.安裝Apache
apt-get install apache2
之後輸入網址會出現it works
sudo a2enmod rewrite #若有需要,自行開啟mod_rewrite(可用於防範Dos攻擊)
sudo a2enmod proxy_http #若有需要,自行開啟proxy_http
sudo a2enmod proxy_balancer #若有需要,自行開啟proxy_balancer
Apache設定檔:/etc/apache2/apache2.conf
一.安裝Apache
apt-get install apache2
之後輸入網址會出現it works
sudo a2enmod rewrite #若有需要,自行開啟mod_rewrite(可用於防範Dos攻擊)
sudo a2enmod proxy_http #若有需要,自行開啟proxy_http
sudo a2enmod proxy_balancer #若有需要,自行開啟proxy_balancer
Apache設定檔:/etc/apache2/apache2.conf
2014年3月20日 星期四
Ubuntu 修改主機名稱
# vim /etc/hostname
內容改為自己要的名字
# vim /etc/hosts
這邊最好也要改,免得有些 service 會出錯
# /etc/init.d/hostname.sh
重新啟動
# hostname
驗證是否已經修改完畢。
內容改為自己要的名字
# vim /etc/hosts
這邊最好也要改,免得有些 service 會出錯
# /etc/init.d/hostname.sh
重新啟動
# hostname
驗證是否已經修改完畢。
2014年3月12日 星期三
CodeIgniter _remap
注意:如果你的控制器中包含一個名為_remap ( )的方法,那麼不管你的URI中包含什麼,它總會被忽略掉這個方法會廢除掉由URI。片段来决定哪个方法被调用的规则,允许你重新定义调用方法的规则(方法的路由规则)。
但問題是,手冊上這樣說的,會有什麼用處呢其實用處有兩個? :
1 ,改變URL ,隱藏方法,比如你的應用中,原來的URL,方法是:
http://anmsaiful.net/blog/display_successful_message
現在想改變顯示的方法名為:
http://anmsaiful.net/blog/successful
但顯示雖然是成功的,但實際上是調用存在的display_successful_message
方法,這就要用到_remap方法了。
2還可以借這個函數做簡單的函數方法控制,比如:
公共職能_remap ( $方法, $ PARAMS =陣列( ) )
{
$ user_type = $ _SESSION [ ' user_type '] ;
$ ACCESS_CONTROL = $這個 - > validate_access ( $ user_type , $方法) ;
如果($ ACCESS_CONTROL ) {
$本 - > $ ()的方法;
}
其他{
$這個 - > show_message ( ) ;
}
}
但問題是,手冊上這樣說的,會有什麼用處呢其實用處有兩個? :
1 ,改變URL ,隱藏方法,比如你的應用中,原來的URL,方法是:
http://anmsaiful.net/blog/display_successful_message
現在想改變顯示的方法名為:
http://anmsaiful.net/blog/successful
但顯示雖然是成功的,但實際上是調用存在的display_successful_message
方法,這就要用到_remap方法了。
2還可以借這個函數做簡單的函數方法控制,比如:
公共職能_remap ( $方法, $ PARAMS =陣列( ) )
{
$ user_type = $ _SESSION [ ' user_type '] ;
$ ACCESS_CONTROL = $這個 - > validate_access ( $ user_type , $方法) ;
如果($ ACCESS_CONTROL ) {
$本 - > $ ()的方法;
}
其他{
$這個 - > show_message ( ) ;
}
}
2014年3月7日 星期五
CodeIgniter HMVC 實作 REST
如果有在用 CodeIgniter 來當作 REST Server 的朋友們,我相信都會找到 philsturgeon 所寫的 codeigniter-restserver,此套件幫你完成底層 API Response 動作,讓你可以輕易處理 REST URL
PHP REST 介紹
自制jQuery plugin
轉自http://blog.johnsonlu.org/jquery%E8%87%AA%E8%A8%82jquery-plugin/
平常都會使用網路上所釋出的jQuery plugin,像這樣: <script src="xxx.js"></script>
如果是自己的功能要一直重複使用的話,做成plugin會比較方便,維護容易,使用上彈性也比較高 最精簡的jQuery plugin主要有兩個部份要處理 1.用jQuery.fn註冊plugin名稱 2.定義回傳function的動作
2014年3月6日 星期四
PHP CI 各種製作 多國語系 方法
CodeIgniter 各種製作 多國語系 方法
- CodeIgniter有提供自訂URI的功能
http://www.codeigniter.org.tw/user_guide/general/routing.html
在application/config/routes.php 裡面加上下列參數
$route['([a-zA-Z]{2})/(:any)'] = '$2';
$2表示(:any),$1表示([a-zA-Z]{2})
ex:
一個「http://127.0.0.1/tw/blogs/users」URL,將重新對應到「blogs」類別以及「users」方法。
2014年2月27日 星期四
具有來自不受信任來源之憑證的 Java 應用程式
官網:http://www.java.com/zh_TW/download/help/appsecuritydialogs.xml
從 Java 7 Update 51 開始,預設會封鎖含自行簽署憑證的應用程式。此類型的應用程式存在最高程度的風險,因為無法識別發行者且應用程式可能會取得存取電腦上個人資料的權限。
尋找目標:
採取的動作:
如何管理與設定例外網站清單?
順利將此應用程式 URL 新增至清單後,此應用程式即可在某些安全性警告之後執行。
從 Java 7 Update 51 開始,預設會封鎖含自行簽署憑證的應用程式。此類型的應用程式存在最高程度的風險,因為無法識別發行者且應用程式可能會取得存取電腦上個人資料的權限。
尋找目標:
- 對話方塊標題:應用程式已封鎖
- 發行者名稱:未列出發行者
- 顯示的訊息:您的安全性設定已封鎖自行簽署的封閉測試環境應用程式,使其無法執行。
採取的動作:
- 強烈建議您不要執行此類型的應用程式。但是,如果您已瞭解相關風險且仍要執行該應用程式,可以將此應用程式的 URL 新增至位於「Java 控制面板」中「安全性」頁籤下的例外網站清單。
如何管理與設定例外網站清單?
順利將此應用程式 URL 新增至清單後,此應用程式即可在某些安全性警告之後執行。
2014年2月23日 星期日
Codeigniter 2.1 HMVC 實作
轉自http://eugg.blogspot.tw/2012/11/codeigniter-21-hmvc.html
何謂HMVC?
可以直接看wiki的解釋:http://zh.wikipedia.org/wiki/HMVC
簡單解釋就是模組化。
以下實作版本是wiredesignz的5.4版
可以到官方的http://bitbucket.org下載最新的版本
而Codeigniter的版本是 2.1.0
實作
Step 1 - 解壓、複製檔案:
下載好HMVC的檔案後,直接解壓縮,裡面會有二個檔案夾:
可以直接看wiki的解釋:http://zh.wikipedia.org/wiki/HMVC
簡單解釋就是模組化。
以下實作版本是wiredesignz的5.4版
可以到官方的http://bitbucket.org下載最新的版本
而Codeigniter的版本是 2.1.0
實作
Step 1 - 解壓、複製檔案:
下載好HMVC的檔案後,直接解壓縮,裡面會有二個檔案夾:
- core
- third_party
2014年2月18日 星期二
ps 系統程序PID
終端機中輸入 ps -aux 就可以知道有多少服務同時在你的主機上面跑了
查系統程序PID
ps axu | grep php
正常的結束程序
kill -l
kail -15 PID
查系統程序PID
ps axu | grep php
正常的結束程序
kill -l
kail -15 PID
2014年2月16日 星期日
Linux 各種壓縮與解壓縮指令
Linux 各種壓縮與解壓縮指令
壓縮:tar -jcv -f ffmpeg.tar.bz2 ffmpeg
解壓縮:tar -jxv -f ffmpeg.tar.bz2 -C /usr/local/src/
.tar (未壓縮)
套件名稱:tar。
打包:$ tar cvf FileName.tar DirName
解包:$ tar xvf FileName.tar
壓縮:tar -jcv -f ffmpeg.tar.bz2 ffmpeg
解壓縮:tar -jxv -f ffmpeg.tar.bz2 -C /usr/local/src/
.tar (未壓縮)
套件名稱:tar。
打包:$ tar cvf FileName.tar DirName
解包:$ tar xvf FileName.tar
linux覆蓋資料夾,不出現提示訊息
linux覆蓋資料夾,不出現提示訊息
查了鳥哥的私房菜,mv指令有提到
「-f :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋;」
試過用「mv -f」或「mf -rf」但都失敗
想說沒錯啊!用cp指令也還是會出現提示訊息!
google查了一下,原來~/.bashrc檔案裡,加了「alias cp='cp -i'」
所以只要下cp指令就會自動加上-i參數。
這是遇防檔案誤刪或誤覆蓋的防呆機制。
解決辦法
方法一:修改bashrc文件禁用掉cp的alias
[root@linux ~]# nano ~/.bashrc
在alias cp='cp -i'前加上"#"注釋,重新登錄即可實現複製不提示。
方法二; 直接輸入命令即可實現
[root@linux ~]# \cp -rf aaa bbb
在cp前加上 \
查了鳥哥的私房菜,mv指令有提到
「-f :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋;」
試過用「mv -f」或「mf -rf」但都失敗
想說沒錯啊!用cp指令也還是會出現提示訊息!
google查了一下,原來~/.bashrc檔案裡,加了「alias cp='cp -i'」
所以只要下cp指令就會自動加上-i參數。
這是遇防檔案誤刪或誤覆蓋的防呆機制。
解決辦法
方法一:修改bashrc文件禁用掉cp的alias
[root@linux ~]# nano ~/.bashrc
在alias cp='cp -i'前加上"#"注釋,重新登錄即可實現複製不提示。
方法二; 直接輸入命令即可實現
[root@linux ~]# \cp -rf aaa bbb
在cp前加上 \
2014年1月30日 星期四
file_get_contents("php://input")
本文出自 “濤石的博客” 博客,請務必保留此出處http://taoshi.blog.51cto.com/1724747/1165499
$data = file_get_contents("php://input");
$data = file_get_contents("php://input");
php://input 是個可以訪問請求的原始資料的唯讀流。 POST 請求的情況下,最好使用 php://input 來代替 $HTTP_RAW_POST_DATA,因為它不依賴於特定的 php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 預設沒有填充, 比啟動 always_populate_raw_post_data 潛在需要更少的記憶體。 enctype="multipart/form-data" 的時候 php://input 是無效的。
1, php://input 可以讀取http entity body中指定長度的值,由Content-Length指定長度,不管是POST方式或者GET方法提交過來的資料。但是,一般GET方法提交資料 時,http request entity body部分都為空。
2,php://input 與$HTTP_RAW_POST_DATA讀取的資料是一樣的,都唯讀取Content-Type不為multipart/form-data的數據。
學習筆記
1,Coentent-Type僅在取值為application/x-www-data-urlencoded和multipart/form-data兩種情況下,PHP才會將http請求資料包中相應的資料填入全域變數$_POST
2,PHP不能識別的Content-Type類型的時候,會將http請求包中相應的資料填入變數$HTTP_RAW_POST_DATA
3, 只有Coentent-Type為multipart/form-data的時候,PHP不會將http請求資料包中的相應資料填入php://input,否則其它情況都會。填入的長度,由Coentent-Length指定。
4,只有Content-Type為application/x-www-data-urlencoded時,php://input資料才跟$_POST資料相一致。
5,php://input資料總是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更湊效,且不需要特殊設置php.ini
6,PHP會將PATH欄位的query_path部分,填入全域變數$_GET。通常情況下,GET方法提交的http請求,body為空。
form enctype=multipart/form-data作用
在設計表單時,如果內容有檔案時,我們都會在上面加上enctype="multipart/form-data"。其實form的enctype有三種
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
預設的狀況下都是以application/x-www-form-urlencoded為主,會將資料做編碼傳送(空白以+代替,而特殊字元則傳成ASCII HEX。而multipart/form-data則是不做任何編碼,如果需要上傳文件時,就要使用它;text/plan則是僅將空白以+代替,常見於電子郵件表單。
轉自:http://superlevin.ifengyuan.tw/form%E5%8A%A0%E4%B8%8Aenctypemultipartform-data%E4%BD%9C%E7%94%A8/
$_SERVER['PATH_INFO']
PHP中的全域變數$_SERVER['PATH_INFO']是一個很有用的參數,眾多的CMS系統在美化自己的URL的時候,都用到了這個參數。
對於下面這個網址:
http://www.test.com/index.php/foo/bar.html?c=index&m=search
我們可以得到 $_SERVER['PATH_INFO'] = ‘/foo/bar.html’
而此時 $_SERVER['QUERY_STRING'] = 'c=index&m=search';
通常,我們最初開始PHP程式編寫的時候,都會使用諸如: http://www.test.com/index.php?c=search&m=main 這樣的URL,這種URL不僅看起來非常奇怪,而且對於搜尋引擎也是非常不友好的。很多搜尋引擎收錄的時候,都會忽略Query String之後的內容,google雖然不會忽略Query String,但是對於其他不含Query String的頁面,會給于比較高的PR值。
<?php
echo $_SERVER['REQUEST_URI']
?>
本地測試地址:http://localhost/a.php 得到結果:/a.php
測試地址二:http://localhost/a.php?id=123 得到結果:/a.php?id=123
測試地址三:http://localhost/a.php/123.html 得到結果:/a.php/123.html
即$_SERVER['REQUEST_URI']基本得到的是位址中/後的所有內容
將a.php代碼改為如下:
<?php
echo $_SERVER['PATH_INFO']
?>
本地測試地址:http://localhost/a.php 得不到任何結果,很鬱悶,不懂什麼意思;
測試地址二:http://localhost/a.php?id=123 同樣得不到任何結果,更鬱悶,因為不懂,所以確實不曉得這個函數什麼意思,感覺挺不舒服的。正當準備放棄繼續baidu時,無意中做了下面的測試,挺幸運
測試地址三:http://localhost/a.php/123.html 得到結果/123.html再在後面加東西,
測試地址四:http://localhost/a.php/123.html?id=2222 結果為:/123.html
什麼意思自己看就應該明白了。是不是還有我沒測試到的作用,不得而知了。希望對各位有用。
本文轉自
http://hi.baidu.com/flyrat/item/44623a365c656ff42784f496
對於下面這個網址:
http://www.test.com/index.php/foo/bar.html?c=index&m=search
我們可以得到 $_SERVER['PATH_INFO'] = ‘/foo/bar.html’
而此時 $_SERVER['QUERY_STRING'] = 'c=index&m=search';
通常,我們最初開始PHP程式編寫的時候,都會使用諸如: http://www.test.com/index.php?c=search&m=main 這樣的URL,這種URL不僅看起來非常奇怪,而且對於搜尋引擎也是非常不友好的。很多搜尋引擎收錄的時候,都會忽略Query String之後的內容,google雖然不會忽略Query String,但是對於其他不含Query String的頁面,會給于比較高的PR值。
<?php
echo $_SERVER['REQUEST_URI']
?>
本地測試地址:http://localhost/a.php 得到結果:/a.php
測試地址二:http://localhost/a.php?id=123 得到結果:/a.php?id=123
測試地址三:http://localhost/a.php/123.html 得到結果:/a.php/123.html
即$_SERVER['REQUEST_URI']基本得到的是位址中/後的所有內容
將a.php代碼改為如下:
<?php
echo $_SERVER['PATH_INFO']
?>
本地測試地址:http://localhost/a.php 得不到任何結果,很鬱悶,不懂什麼意思;
測試地址二:http://localhost/a.php?id=123 同樣得不到任何結果,更鬱悶,因為不懂,所以確實不曉得這個函數什麼意思,感覺挺不舒服的。正當準備放棄繼續baidu時,無意中做了下面的測試,挺幸運
測試地址三:http://localhost/a.php/123.html 得到結果/123.html再在後面加東西,
測試地址四:http://localhost/a.php/123.html?id=2222 結果為:/123.html
什麼意思自己看就應該明白了。是不是還有我沒測試到的作用,不得而知了。希望對各位有用。
本文轉自
http://hi.baidu.com/flyrat/item/44623a365c656ff42784f496
訂閱:
文章 (Atom)