作者 主題: ---PHP----(字)許功蓋  (閱讀 6553 次)

0 會員 與 1 訪客 正在閱讀本文。

chris1129

  • 憂鬱的高中生
  • ***
  • 文章數: 142
    • 檢視個人資料
---PHP----(字)許功蓋
« 於: 2004-12-17 17:13 »
因為最近剛開始學習PHP,很多不懂,所以也遇到了以下問題,
經過上網查詢,得知結果,分享給各位。
----第一個程式碼------
<?
   $var="1";
   if ($var == "1")
     {
        $output = "輸入成功\";
     }
   else
     {
        $output = "ok";
     }
   echo $output;
?>

------第二個程式碼--------
<?
   $var="1";
   if ($var == "1")
     {
        $output = "輸入成功";
     }
   else
     {
        $output = "ok";
     }
   echo $output;
?>

你認為那一個會執行正確呢???





結果:
第一個成功,第二個有問題。詳情如下:
insert into table values('001','It's book');

如果我們想放資料內容包括 單引號 ' 時
我們會寫成

insert into table values('001','It's book');

請注意SQL語法中 ' 與 ' 的部份

但是,在 Big5 為兩個 byte 組成
第一個 byte 為 128 ~ 255 第二個 byte 為 0~255
其中「功、許…共128個字」都是以 每個 byte 當開頭,卻用和 相同的 Ascii code 結束,因此在留言用到這些字,會讓 SQL 語法誤判

例如

insert into table1 value('001','加入資訊安全實驗室成功\');

會被誤解成

insert into table1 value('001','加入資訊安全實驗室成X\');

在PHP中同理。 :wink: 不曉得對大家有沒幫助。 :)

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
---PHP----(字)許功蓋
« 回覆 #1 於: 2004-12-30 23:48 »
最近從php 4.2.x的版本升級至4.3.10,發現原有的許功蓋問題居然解決了

^_^

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
---PHP----(字)許功蓋
« 回覆 #2 於: 2004-12-31 10:15 »
php 有個方便的 function 叫做 addslashes(vs. stripslashes)
可以參考看看

PHP5 不知道有沒有自動解決這問題...Unicode 才是王道啊!!
'm no more than a fxxking coding monkey....

chris1129

  • 憂鬱的高中生
  • ***
  • 文章數: 142
    • 檢視個人資料
---PHP----(字)許功蓋
« 回覆 #3 於: 2004-12-31 11:33 »
引述: "zoob"
最近從php 4.2.x的版本升級至4.3.10,發現原有的許功蓋問題居然解決了

^_^


剛剛TEST了一下, 我這例題,採用php 4.3.10一樣會有error :wink: