php 如何隱藏url地址欄參數

來源:互聯網
上載者:User
我用PHP做的頁面,如果點擊某使用者查看該使用者資訊時,在URL欄上出現:http://www.abc.com/index.php?user_id=39,修改數字就可以查看另外的使用者。這樣太不安全了吧?

用什麼方法可以避免此問題,讓URL上只出現"http://www.abc.com/"或"http://www.abc.com/index.php"這樣的資訊?
請教具體做法!


回複討論(解決方案)

修改數字就可以查看另外的使用者。這樣太不安全了吧?
這個安全問題不需要隱藏URL參數來解決,用$_SESSION來判斷目前使用者是否是參數user_id的值,如果是,可以查看,否則不能查看。而且查看別的使用者的資訊應該是被允許的,你可以在視圖裡過濾掉一些隱私的資訊

可通過 cookie 或 session 傳遞

可以寫一下 詳細代碼嗎,急求 ,謝謝

修改數字就可以查看另外的使用者。這樣太不安全了吧?
這個安全問題不需要隱藏URL參數來解決,用$_SESSION來判斷目前使用者是否是參數user_id的值,如果是,可以查看,否則不能查看。而且查看別的使用者的資訊應該是被允許的,你可以在視圖裡過濾掉一些隱私的資訊





具體怎麼寫可以 附上代碼嗎 實在是不懂

這是許可權控制問題
比如 http://my.csdn.net/xuzuning 和 http://my.csdn.net/ 呈現出來的就不一樣

最簡單的就是用session進行比對
至於代碼 自己寫 有bug或者不能跑再問

//首先,你得在使用者登入後把uid存到session裡,比如在login.php中$_SESSION['uid'] = XXX //XXX為使用者登入時給他的sessionID(和user表的uid值相同)//比如在userinfo.php中if($_SESSION['uid'] == intval($_GET['user_id'])){//顯示當前登入使用者資訊}else{//可以顯示別的使用者的資訊(用$_SESSION['uid']查詢user表的uid,並根據需要展示資訊)//也可以直接給出error資訊,告訴他不能查看該使用者的資訊}

//首先,你得在使用者登入後把uid存到session裡,比如在login.php中$_SESSION['uid'] = XXX //XXX為使用者登入時給他的sessionID(和user表的uid值相同)//比如在userinfo.php中if($_SESSION['uid'] == intval($_GET['user_id'])){//顯示當前登入使用者資訊}else{//可以顯示別的使用者的資訊(用$_SESSION['uid']查詢user表的uid,並根據需要展示資訊)//也可以直接給出error資訊,告訴他不能查看該使用者的資訊}




不好意思 還是不太懂,$_SESSION['uid'] = XXX 是放在那個登陸時的html頁面 還是放在 php 頁面 ,if($_SESSION['uid'] == intval($_GET['user_id'])){ 具體是放在哪兒呢,放在登陸後的html頁面上呢,還是放在登陸後做判斷的 php頁面呢

$_SESSION['uid'] = XXX放在php指令碼裡,在該指令碼中:在完成了登入資訊檢查之後,設定$_SESSION['uid'] =XXX,該XXX應該是根據使用者登入的表單欄位從user表取出的uid。

if($_SESSION['uid'] == intval($_GET['user_id']))應該放在登陸後做判斷的 php指令碼裡,如果GET傳來的user_id和$_SESSION['uid']一致,則從使用者資訊表取出使用者資訊賦值給$userinfo,再引入html頁面,在html頁面裡嵌入php代碼,比如使用者名稱:
如果傳來的參數和$_SESSION['uid']不相同,則表示要查看的使用者資訊不是當前登入的使用者,這時,如果你想顯示出該使用者的資訊,仍然是從根據GET的user_id從使用者資訊表查資訊,你可以選擇性地展示一些使用者資訊,不展示一些隱私的資訊;如果你不想顯示當前登入使用者之外的其他使用者的資訊,直接header(location:XXXXX);跳轉到錯誤頁面,提示不能查看他的資訊

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.