台灣最大程式設計社群網站
線上人數
1000
 
會員總數:246135
討論主題:189716
歡迎您免費加入會員
討論區列表 >> PHP >> 資料庫新增的一個「邏輯上的錯誤」!找不出問題~
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
資料庫新增的一個「邏輯上的錯誤」!找不出問題~
價值 : 20 QP  點閱數:504 回應數:3
樓主

阿醜
初學者
15 120
1250 174
發送站內信

首先我作了一個 轉址的程式 ,只要輸入錯誤就跳回指定的頁面 如下列1

我作了一個更新密碼的程式 如下列2

問題是:

今天使用者輸入錯誤後,應該要轉到我指定的頁面,而下面的資料庫不再新增,可是無論怎麼弄,頁面跳開後,資料庫還是被更改了
我花了三個小時找不出為什麼?


各位大大,指導一下我吧。






本篇文章發表於2013-12-16 02:12
1樓
回應

得意
捐贈 VP 給 得意 檢舉此回應
你要不要把帳號存成session看看
很少看到用COOKIE存帳號的

本篇文章回覆於2013-12-16 10:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

迷路
捐贈 VP 給 迷路 檢舉此回應
又是一個弄混基本觀念的問題
分不清楚PHP和JS

你在18行和23行的判斷式只會在網頁原始碼產生6行的JS
但是並不會中斷PHP的執行
等執行到28行時因為有帳號而繼續執行下去
所以資料庫還是會修改

整個程式有很多問題
最快修改到能跑的方法
第1
把37和39行搬到
31行下面
如果沒符合條件也不需要在執行那兩行了
第2
在第7行下面加上

在11、20和25行下面加上

第28行改成


這樣應該就勉強能運行了
但是如果我是學校老師
這樣的程式估計只會給60分
因為雖然能跑但是流程上的問題太多是個不合格的程式
本篇文章回覆於2013-12-16 11:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

LaLa
檢舉此回應
其實他這樣還是可以執行下去,
因為php是直譯的語言,他有先include my_msg.php進來,
且程式不是當頁就判斷,而是表單送出後,取得$_POST的封包內容後才做的,所以還是可以執行,
但這樣混用的方法,的確不好。

最大的問題點是出在 isset($_COOKIE['cookie_id'] 及 my_msg.php裡的return。

加了return,就是叫程式返回繼續執行。並不是像加了"exit"叫程式中斷執行。
所以在它跳轉之前的時間,它會繼續返回做call function之後的事情,直到跳轉完成才會完全中斷。

然後isset($_COOKIE["cookie_id"]) 若是你先前browser裡就有cookie的值,對它來說,就是已經set了。
所以這個部份它就會當做是true,而繼續執行裡面的內容。
一般建議會使用session,因為session值是存放於server中,(linux中,安裝完php預設是放在/tmp中,window放的路徑較複雜,若有興趣再來聊聊)
而cookie因是存放在使用者端,對於控制來說,session會較cookie來得優。

本篇文章回覆於2013-12-16 11:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.