第 1 頁 (共 2 頁)
[問題] 虛擬股票..修改(感謝t大&倉大)...現在已經是一編教學了
發表於 : 2005-09-08 21:45
由 233062306
問題外掛:虛擬股票
參考連結:
http://chung51.myweb.hinet.net/i-mod.exe
使用版本:phpbb 2.0.17
網站位置:
http://2306zone.wagoo2.com
狀況描述: 買入股票 or 貸款時.......輸入5*100000 或1*9999999
簡單的說......1股50元....打入 "10*5".....自動買入了50股.....
一般而言.....金額50x50=2500元....但輸入時打入 "*" 這東西....金額只要250元就可以買50股了.....
我暈倒了
我知道i-mod已經不再開發了....
所以應該作者不會修改這個bug的....
但是....我自己想了個方法.....
在輸入數字時....當使用者輸入不是數字的東西時....例如!#$#%*)_>:";'{}[]\|..........
就會發出警告.....
我不太會php.....所以用其他方式表示吧= =
if(輸入的變數中有不是數字的符號)
echo "這不是數字";
就是這樣了......
發表於 : 2005-09-09 19:37
由 233062306
剛剛試了修改股票的php....
還是失敗=.=.....
發表於 : 2005-09-09 21:56
由 *tytsim*
我試過在\r
代碼: 選擇全部
$total_buy = $HTTP_POST_VARS['stock_buy'];
加
代碼: 選擇全部
if ($total_buy = "*" || $total_buy = "\/" || $total_buy = "+" || $total_buy = "-")
{
message_die(GENERAL_ERROR, '不能使用符號,<a href="'.append_sid("sm_volume.$phpEx?id=".$id).'">返回</a>');
}
雖然有少少用...
但是IF根本沒執行到@@~
就算買1個股票
就會出現\r
不能使用符號
發表於 : 2005-09-09 22:01
由 233062306
IF根本沒執行到??
那...即是.....不明白= =....
不明白是否可以避免這個bug

發表於 : 2005-09-10 00:54
由 ~倉木麻衣~
*tytsim* 寫:我試過在\r
代碼: 選擇全部
$total_buy = $HTTP_POST_VARS['stock_buy'];
加
代碼: 選擇全部
if ($total_buy = "*" || $total_buy = "\/" || $total_buy = "+" || $total_buy = "-")
{
message_die(GENERAL_ERROR, '不能使用符號,<a href="'.append_sid("sm_volume.$phpEx?id=".$id).'">返回</a>');
}
雖然有少少用...
但是IF根本沒執行到@@~
就算買1個股票
就會出現\r
不能使用符號
問題就在你的判斷式上
應該要用==來做比對而不是用=
再者如果修改成用==的話, 還是會有問題
以一個最簡單的例子好了, 假設判斷式是這樣子
代碼: 選擇全部
if ($total_buy == "*")
{
message_die(.....);
}
則除非使用者剛好是輸入「*」, 才會被攔截下來
若是輸入*20、20*5或是20.5.10這類的值, 就無法被檢查出來
個人是建議先將輸入的值轉換成int去做檢查\r
一來是可以利用內建的轉換規則把一些不合法的字元去掉
然後再判斷轉換後的值是否小於等於0, 若是, 則show出警告訊息\r
代碼: 選擇全部
$total_buy = intval($HTTP_POST_VARS['stock_buy']);
if ( $total_buy <= 0 )
{
message_die(GENERAL_ERROR, '您輸入的數字不合規定, 請輸入大於0的正整數<br><a herf="' . append_sid("sm_volume.$phpEx?id=" . $sid) . '">返回</a>');
}
發表於 : 2005-09-10 10:40
由 233062306
=="*"的問題我也有留意到....
除非是用char的array了.....
倉大真是利害....
發表於 : 2005-09-10 10:48
由 233062306
測試完畢!!
輸入1*9999999.....
結果只會買入1股....
但不會出現錯誤訊息...
成功了一半
發表於 : 2005-09-10 12:36
由 *tytsim*
我記得"="是解只要裡面有就會有就會出現~
可能記錯了asp@@~
發表於 : 2005-09-10 14:21
由 ~倉木麻衣~
*tytsim* 寫:我記得"="是解只要裡面有就會有就會出現~
可能記錯了asp@@~
ASP 的=確實是這樣子
在ASP裡的「=」包含了二種意義\r
一個是指定運算子, 例如 A=2 , 表示將A的值設定2
一個是比較運算子, 例如 If A=2 Then ... , 代表判斷A的值是否等於2
不過, 在C/C++、Java、JavaScript、PHP、JSP等程式裡, 則是用「==」代表比較運算子
發表於 : 2005-09-10 16:59
由 ~倉木麻衣~
233062306 寫:測試完畢!!
輸入1*9999999.....
結果只會買入1股....
但不會出現錯誤訊息...
成功了一半
購買股數的input欄位本來就不應該接受1*999這種不合規定的輸入, 而是應該只能接受大於0的正整數才合理
除非你什麼也沒輸入, 或是輸入小於等於0的值(例如-21), 才會出現警告訊息\r
否則將會對你所輸入的值進行intval轉換
轉換規則是\r
1.無法轉成數字的會被視為0
2.遇到無法轉換的數字則會停止轉換, 即使後頭還有可轉換的內容
例如
輸入12.8→12
輸入12/7→12
輸入1024*8→1024
輸入*12→0
輸入-33.3/3→-33
輸入 3→0 (註:在3之前的是2個全型的空格)
輸入3.14→0
所以並不需要去理會1*99這種不合法的輸入, 且會被直接視為購買1股
發表於 : 2005-09-11 02:06
由 233062306
倉大利害@o@.....
我學c及c++時知道用array就可以查出輸入的是否數字....(用askii code)
之前以為php沒有這樣東西....
這編回覆的教學真好...
因為我認識的人有很多都有裝i-stock...
我在竹貓發了這編文之後我的金融市場就突然受到一大堆"測試人員"不斷鋪天蓋地的"測試"這個bug= =
那"測試人員"當然是沒有真名的.....但我心裡有數是哪個竹貓會員\r
當中一個還跟人說自己是2有錢的....而且收購了所有公司...無聊....我一按還原就取消了......
幸好有backup
對他這種不知所謂的行為
我不會作出任何批評
因為我的批評是給一些不是白目,無知,卑鄙,下流的人
他跟本配不上
發表於 : 2005-09-11 17:30
由 233062306
那個"測試人員"
今日又來了....
他聰明地...不斷找新的bug賺錢~~開了n間公司\r
不過我也不笨...利用他找出新bug= =
他還以為自己聰明得很.......我倒也要感謝他了~
我又重施故技.....還原...
當然....我不會把他的帳戶刪除

...免費debuger~~wakakak
賣出股票也要修改呀~~
sm_volume.php
經測試是可行的~
而i-stock中...要輸入數字的地方都有一模一樣的bug.....所以....要修改很多地方@o@......
代碼: 選擇全部
$total_sell = intval($HTTP_POST_VARS['stock_sell']);
if ( $total_sell <= 0 )
{
message_die(GENERAL_ERROR, '您輸入的數字不合規定, 請輸入大於0的正整數<br><a herf="' . append_sid("sm_volume.$phpEx?id=" . $sid) . '">返回</a>');
}
發表於 : 2005-09-11 21:38
由 233062306
讓小弟來做個總結吧\r
藍大的stock有3大bug~(希望他不會介意我公開修改吧...始終版權是他的

)
1.購入股票時輸入1*999,會買入999股~但只需要1股的金錢\r
2.賣出股票時輸入1*999,會賣出1股~但該公司要出現多出999股\r
3.(擁有公司的人才出事= =)某公司的董事長發行股票數量輸入1*999~公司會出現多999股~但只需要1股的金錢\r
下面有解決方法~小弟親自試過~
有裝stock的快快修改!!!3個都是十分嚴重的!!!
我的論壇就是一個好例子......
針對問題1
找\r
代碼: 選擇全部
$total_buy = $HTTP_POST_VARS['stock_buy'];
取伐為\r
代碼: 選擇全部
$total_buy = intval($HTTP_POST_VARS['stock_buy']);
if ( $total_buy <= 0 )
{
message_die(GENERAL_ERROR, '您輸入的數字不合規定, 請輸入大於0的正整數<br><a herf="' . append_sid("sm_volume.$phpEx?id=" . $sid) . '">返回</a>');
}
針對問題2
找\r
代碼: 選擇全部
$total_sell = $HTTP_POST_VARS['stock_sell'];
取伐為\r
代碼: 選擇全部
$total_sell = intval($HTTP_POST_VARS['stock_sell']);
if ( $total_sell <= 0 )
{
message_die(GENERAL_ERROR, '您輸入的數字不合規定, 請輸入大於0的正整數<br><a herf="' . append_sid("sm_volume.$phpEx?id=" . $sid) . '">返回</a>');
}
針對問題3
找\r
代碼: 選擇全部
$total_hold = $HTTP_POST_VARS['stock_release'];
取伐為\r
代碼: 選擇全部
$total_hold = intval($HTTP_POST_VARS['stock_release']);
if ( $total_hold <= 0 )
{
message_die(GENERAL_ERROR, '您輸入的數字不合規定, 請輸入大於0的正整數<br><a herf="' . append_sid("sm_volume.$phpEx?id=" . $sid) . '">返回</a>');
}
重申...藍大如果介意的話...我會立即刪除的= =
發表於 : 2005-09-11 21:40
由 w2812451
233062306 寫:重申...藍大如果介意的話...我會立即刪除的= =
放心!他不會鳥你的ˊˋ
發表於 : 2005-09-11 22:22
由 233062306
w2812451 寫:233062306 寫:重申...藍大如果介意的話...我會立即刪除的= =
放心!他不會鳥你的ˊˋ
.....天知道=.=
還是pm他好...