作者 主題: php and Apache 有一點小問題.  (閱讀 3879 次)

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

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
php and Apache 有一點小問題.
« 於: 2005-05-17 18:56 »
先大約描述我的架構.
OS: Debian
Apache: 1.3.X
php4
MySQL.

用 browser 去看的時後, form_category_id=2 好像沒辦法傳遞過去.

我如果用 command line 去跑, 並把 form_category_id=2 寫到 category.php 裡, 跑出來的結果是正常的.

而且, 如果我直接把 form_category_id=2 寫到 category.php 裡

也會 show 出所有 form_category_id=2 的產品 (現在我已把它刪了)

我在同一台 server 用其他的 CMS package 都沒有問題.


所以, 和 MySQL 的連結是沒有問題的.

先前用的 server 完全沒有這種問題... 所有的 code 都是從舊的 server 以 tar 的方式轉過來的, 權限也檢查過沒有問題. MySQL 的資料是在 phpmyadmin 下 dump 出來.

絞盡腦汁實在想不出解決方式.

先謝謝大家.

所有的連結已移除. 謝謝.
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

耗呆

  • 憂鬱的高中生
  • ***
  • 文章數: 112
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #1 於: 2005-05-17 19:29 »
疑似變數傳遞問題....= =a
抓一段有用到變數form_category_id的原始碼借看一下

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #2 於: 2005-05-17 20:14 »
category.php 原始檔.

Removed...

原 sevrer 應是用 php3, 現在是 php4... 難道在 php3 可用的, 在 php4 無法相容?
實在不好意思, 我對 php 不熟. 所以我到目前的 debug 都比較偏向 server side.

謝謝.
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

耗呆

  • 憂鬱的高中生
  • ***
  • 文章數: 112
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #3 於: 2005-05-17 20:46 »
bingo!
php4後期版本在php.ini裡的register_globals預設為off
解決方法
[list=1]
  • 將php.ini中的register_globals改為on
  • 將$form_category_id改為$_GET[" form_category_id"]
  • if(!@ini_get('register_globals')) @extract(array_merge($_GET, $_POST, $_COOKIE, $_SESSION), EXTR_OVERWRITE);
  • .htaccess中加上php_flag register_globals on
  • [/list:o]
    四者選一即可
    但第二個方法得注意~
    GET,POST,COOKIE,SESSION幾類的變數使用方式都得相對更改!
    而第三及第四項嘛.....= =a
    去別人家偷來的~第三項試過正常!
    而第四項是否每個主機都通用就不得而知了

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #4 於: 2005-05-17 21:53 »
Thanks. 明天就去試...

果然是不了解 php. :roll:
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #5 於: 2005-05-17 22:34 »
剛剛先試了方法一.
It works great.

真是感謝. 搞了我快三天了.
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

耗呆

  • 憂鬱的高中生
  • ***
  • 文章數: 112
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #6 於: 2005-05-18 22:57 »
突然發現~原來這個問題不但是早就在討論了~還被置頂.......= =a
http://phorum.study-area.org/viewtopic.php?t=23862

引述: "其中ricky"
這是因為register_global的因素啦
這也是的很重要的安全因素
當register_blobal打開時
不論是POST,GET或是SESSION變數
通通都是以$XXXX的型態
如此一來根本分不清楚到底是POST,GET還是SESSION傳來的
因此有心人士可以輕易的使用GET傳入一個變數
誤導程式導致嚴重的系統漏洞
所以後來php預設值才會將register_global給關閉了

所以啊~還是建議第二種做法!

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #7 於: 2005-05-18 23:07 »
Soga. 謝謝指教.

說真的, 如果不是您提供 solution, 我可能還卡在這.
因為我不懂 php, 所以不知如何有效的 search. 看到了答案可能也不自知...

突然想到一些人問 Linux 相關問題時... 真的有可能像我碰到 php 一樣. :roll:

真汗顏...
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

耗呆

  • 憂鬱的高中生
  • ***
  • 文章數: 112
    • 檢視個人資料
php and Apache 有一點小問題.
« 回覆 #8 於: 2005-05-18 23:18 »
= =a......這篇我也是剛發現......
把他掃過一遍熊熊發現"原來如此"........= =a