作者 主題: [問題]網頁傳值  (閱讀 30806 次)

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

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 於: 2003-06-25 10:49 »
請問各位大大

<input name="Submit" type="submit" id="Submit5" value="修改" onClick="location.href='test.php?no=<?php echo "$no" ?>'">

不使用  from , 單純用 submit 配合 onClick 功能
當我按下按鈕時, 有跳到下一頁, 且瀏覽器網址部份亦有顯示

http://xx.xx.xx.xx/test.php?no=66 <--- 66 是上一頁 $no 的值

但我實際上就是沒辦法抓到 no 的值, 是我傳值的方式有誤嗎 ??
 貓咪.水族.我的論壇 -

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #2 於: 2003-06-25 12:31 »
引述: "paulso"
http://phorum.study-area.org/viewtopic.php?t=16434&highlight=%B6%C7%AD%C8


ㄜ .....

果然讓大大誤會了, 一般的傳值我都很正常, 但唯獨是這一個不行

我只使用 submit 的 onclick 功能, 按下後 location.href='test.php?no'
會呼叫 test.php 這一頁, 並將 no 值帶到下一頁, 下一頁的網址列

http://xx.xx.xx.xx/test.php?no=66 <----值有出現

但在內頁就讀不到 no 的值
上面的 submit 是在不使用表單的情形下使用的
 貓咪.水族.我的論壇 -

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #4 於: 2003-06-26 09:00 »
無法顯示網頁 @@?
 貓咪.水族.我的論壇 -

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #5 於: 2003-06-26 09:16 »
今早才 down... 若你昨晚看會看倒的...
我那台老耶機,今晚回家會弄一弄

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #6 於: 2003-06-26 09:46 »
麻煩大大了 ..... :oops:

順便問一下, http://xxx.xxx.xxx.xxx/test.php?no=56

其中 56 這個數值要如何取出來使用 ??

是像一般的 $no  = $HTTP_POST_VARS['no'] 嗎?
這我試過不行, 還是有其它方式 ???
 貓咪.水族.我的論壇 -

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #7 於: 2003-06-26 09:51 »
$HTTP_POST_VARS['no'];
是要這樣:
代碼: [選擇]
<form action="" method=POST>
<input type=text name=no>
<input type=submit value=SUBMIT>
</form>

按了 submit button 之後才能取出 post 了的 vars 的

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #8 於: 2003-06-26 09:59 »
可是那已經是由上一頁傳送過來的值, 在這頁還要在做一次表單  :o
 貓咪.水族.我的論壇 -

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #9 於: 2003-06-26 10:00 »
pass1.php
代碼: [選擇]
<form action="pass2.php" method=POST>
<input type=text name=no>
<input type=submit value=SUBMIT>
</form>

pass2.php
代碼: [選擇]
<?echo $HTTP_POST_VARS['no']?>

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #10 於: 2003-06-26 10:16 »
大大說的表單傳值我會用

那假設我在 A 頁先從 MySQL select 所有資料出來, 然後每筆資料都跟著一個
submit, 按下後會將該筆資料的 no 送出, 因為 A 頁沒有要輸入資料, 所以不是用表單的方式, 如 :

<input name="Submit" type="submit" value="修改" onClick="location.href='test.php?no=<?php echo "$no" ?>'">

(我在 A 網頁並未使用 <form /form>)

按下 submit 後, 會到 B 網頁, B 網頁的網址列就會變成

http://xx.xx.xx.xx/b.php?no=33 <-----33 就是 A 網頁從 MySQL 其中一筆
資料取出的 no 值

我的疑問是, 這個 33 我要怎麼在 B 網頁中使用??
不是用表單方式送出的值該怎麼取出呢??
 貓咪.水族.我的論壇 -

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #11 於: 2003-06-26 10:20 »
對,我這頁是你這樣做沒有用 form 的
引述: "paulso"
http://s01.no-ip.org/~test/test/pass_var1.php

所以我今晚回去弄好我的老耶機^^

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #12 於: 2003-06-26 10:23 »
那我只好再等到晚上囉, 感謝大大 ..... :)
 貓咪.水族.我的論壇 -

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4050
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
[問題]網頁傳值
« 回覆 #13 於: 2003-06-26 10:26 »
如果你已經可以使你的網址帶有變數值了

http://xx.xx.xx.xx/b.php?no=33

那在 b.php 應該只要使用 $no 來使用就可以了吧 @@"

echo $no; //可以看到 33 嗎???

沒試過!不過如果這個方法可行的話那我又學到一招了 ^^
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4050
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
[問題]網頁傳值
« 回覆 #14 於: 2003-06-26 10:30 »
人太懶惰果然不行!回覆後馬上試了一下,結果是可以的!

1.php
<?
$no = 33;
?>
<input type="submit" value="修改" onClick="location.href='2.php?no=<?php echo "$no" ?>'">

2.php
<?
echo $no;
?>

2.php 可以顯示出 33,不知道是否就是你的疑惑???
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #15 於: 2003-06-26 10:43 »
我也是這樣說,我也可以做到,為何你不行:\
不如你把那兩頁的 script 貼上來看看

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #16 於: 2003-06-26 10:49 »
我也是這樣寫的呀, 就是因為不行所以才納悶

test.php

=============================
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>

<body>
   <?php
      $n = "4321";
   ?>
    <input type="button" value="修改" onClick="location.href='test1.php?no=<?php echo "$n" ?>'">
</body>
</html>
=============================

test1.php
=============================
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=big5">

</head>

<body>
<?php
   $no = $HTTP_POST_VARS['no'];
   echo "$no";
?>
</body>
</html>
=============================

test1.php 的網址列確是有看到值, 但就是不知為何取不出來 ..... :(
 貓咪.水族.我的論壇 -

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #17 於: 2003-06-26 10:56 »
用 GET 或 Query_string 吧
$HTTP_GET_VARS['no']

$_GET['no']  // 這一個有點忘了怎寫了...用那一種和 PHP 版本可能有關

n3856120

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
    • http://www.andyo.idv.tw
[問題]網頁傳值
« 回覆 #18 於: 2003-06-26 11:02 »
賓果, 答案揭曉

果然必須用 $HTTP_GET_VARS['no'] 來取得網址上的值

感謝 abelyang 大大的提醒

也感謝 paulso 和 hoyo 大大熱情的協助

希望有看到的人也可以記起來, 很有幫助唷 .....  :wink:

p.s 因為我的 register_globals = off , 所以才必須以標準的語法取值
 貓咪.水族.我的論壇 -

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4050
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
[問題]網頁傳值
« 回覆 #19 於: 2003-06-26 11:13 »
拍謝!php 新手問一個問題!

最近常看到大家將 register_globals = off 然後都遇到變數傳遞的問題,當然大家都說安全性有問題!

問題是..................到底將 register_globals = on 會有什麼 "隱藏性" 或是 "實際上" 的安全問題呢?
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #20 於: 2003-06-26 11:36 »
我也不知道是什麼安全問題,也想知道答案
post 與 get 我也不知道有什麼分別,只知道 get 有長度限制 post 沒有

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #21 於: 2003-06-26 11:48 »
在 google 搜的:
[code]傳送資料給 CGI 的的方式,可選值為 POST, GET,它們的分別會在【CGI剖析】 再詳細敘述。你只需記住POST容許傳送大量資料,但 GET則只接受低於 1K 的資 料,所以你若看過別人的表單原始碼的話,你會發
http://beagle.mis.cycu.edu.tw/QA4.htm

這個介紹得很棒,在一半之下,大約 3/4 那個位
http://www.sinica.edu.tw/~ihsko/homepage/advance.html

也許這頁就是說安全的吧... 我花少少時間消化先
http://taiwan.cnet.com/builder/backend/story/0,2000033958,20000156-20000940c,00.htm

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4050
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
[問題]網頁傳值
« 回覆 #22 於: 2003-06-26 11:52 »
post 並不會在網頁上出現變數值 get 會!所以根據以上的 1.php 的話使用 post 只會出現

http://www.abc.om/1.php

後面不會出現變數值,但是 get 就會出現

http://www.abc.com/1.php?no=33

兩者都有優缺點,以前我喜歡 post 因為網址看起來比較乾淨,但是最近偏愛 get ,因為我的網頁需要使用 session 來傳遞網頁資料,使用 post 因為變數沒有在網址上傳遞,所以按上一頁之後會出現 "網頁已經過期" 的問題,但是 get 就沒有這個問題!

不過如果網頁有使用框架又沒有傳遞資料大小的問題那使用 get 會比較好喔!
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #23 於: 2003-06-26 12:00 »
引用
兩者都有優缺點,以前我喜歡 post 因為網址看起來比較乾淨,但是最近偏愛 get ,因為我的網頁需要使用 session 來傳遞網頁資料,使用 post 因為變數沒有在網址上傳遞,所以按上一頁之後會出現 "網頁已經過期" 的問題,但是 get 就沒有這個問題!


這個問題, 你到 www.php.net 將 header 的說明, 含範例全部都看完就知道
如何解了, 如果你真的不知道我再將答案告訴你....

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #24 於: 2003-06-26 12:04 »
多貼一個
http://ind.ntou.edu.tw/~dada/cgi/CGIprog.htm

我有時自己會用這樣的
<a href="http://xxx/test1.php?no=<?echo $no?>"
要傳值過去,不用 form 用這個粉方便,不過若 client 懂 get 的話,可以嘗試改這個 value 的話... :\
那麼看來要多做 checking

duan

  • 榮譽博士
  • 活潑的大學生
  • ***
  • 文章數: 253
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #25 於: 2003-06-26 13:32 »
引述: "hoyo"

問題是..................到底將 register_globals = on 會有什麼 "隱藏性" 或是 "實際上" 的安全問題呢?


如果不用 $_GET 和 $_POST 來把變數取得的範圍分開, 那變數的來源就有可能
造成問題. 比如今天一個 form 會去取得一個欄位內容叫  serial , 傳遞方式是用
post . 於是用  $serial 去取得變數內容. 但是因為沒有區隔  GET or POST , 使用者
可以在網址後面加上  ?serial=12345  , 就可能改變到 serial 傳來的值.  雖然 php.ini
裡有設定 get/post/cookie 取值的先後順序, 但是還是不夠安全.  

舉一個簡單的例子, 今天有一個討論區, 不去區分 get /post 變數, 那就慘了. 想破
壞的人只要寫一個很簡單的 script 就可以洗版了 (下列程式為示意圖):
for i=0;i<1000000;i++
    request http://phorum.study-area.org/post.php?serail=i&title=test&content=test
輕鬆就搞破壞了.

那改成這樣就安全了嗎? 也不是, php.net 只是提高安全性而已, 避免寫程式時
的疏忽. 只是用 post 照樣也可以寫程式來傳值, 只是難度比用 get "略高".

因此安全是掌握在自己手上的, 一句前輩的名言:
"不要相信任何使用者傳來的參數"
大家供勉之.   :)

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4050
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
[問題]網頁傳值
« 回覆 #26 於: 2003-06-26 13:40 »
哇!高手出現果然就是不一樣,多謝 abelyang、paulso、duan 的指導,受益良多!只是還需要相當時間來消化吸收。

再次感謝 ^^
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #27 於: 2003-06-26 15:57 »
[code]for i=0;i<1000000;i++
request http://phorum.study-area.org/post.php?serail=i&title=test&content=test
輕鬆就搞
那要怎樣防?

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #28 於: 2003-06-26 17:02 »
引述: "paulso"
代碼: [選擇]
for i=0;i<1000000;i++
request http://phorum.study-area.org/post.php?serail=i&title=test&content=test
輕鬆就搞?#125;壞了.

那要怎樣防?


不管理post用get,只要這個變數會在內部處理
一定要先做一次最基本的過濾...
才不會有安全性的問題

比如?
我有一個變數 var,我執行的內容是
insert into tablename (var)values('$var');
這樣子,$var不經過在處理,會發生什麼事?試試看吧

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
[問題]網頁傳值
« 回覆 #29 於: 2003-06-26 18:59 »
不經過處理會有很多一樣的東西 insert 入 資料庫
全部一樣,waste server resources