iT邦幫忙

0

Session存一般變數並跨頁傳送一般變數

  • 分享至 

  • xImage

各位大大好
小弟在撰寫公司網頁的時候發現
公司的Session可以直接以 一般變數來代替
假設現在有兩個檔案
  
login.php(登入頁面):

<?php 
session_start();
$_SESSION['username'] = $_POST['username']; //把帳號存進session
$_SESSION['password'] = $_POST['password']; //把密碼存進session

//存進一般變數
$_user = $_SESSION['username']; 
$_pw = $_SESSION['password'];  

  
test.php(並沒有include或require任何檔案 也沒有任何POST GET):

<?php
session_start();
echo $_user;

  
這樣竟然有辦法呼叫得出來值
簡單一句就是"有辦法透過Session指派給一般變數 把一般變數當成session來傳遞"
想請問各位大大這是怎麼達到的?
是不是在php.ini有辦法設定呢?

Franky Chen iT邦研究生 3 級 ‧ 2020-08-11 10:03:13 檢舉
關鍵字:php superglobal
st474ddr iT邦新手 2 級 ‧ 2020-08-11 10:21:10 檢舉
@陳軒立 大大
這好像只有說明Session是通用的
沒有看到存一般變數也可以通用的說明@@
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2020-08-11 15:17:12
最佳解答
register_globals ON

這個設定,但我記得這在5.3版後就被棄用了。
你的php是跑在5.2版的嘛?

這個設定為 on 後,一些原全域變成如 $_POST $_GET ...
所帶的key本身就會變成變數名。

不過上面的說法也並不能解釋為何你的 $_user 可以使用。
目前我推測可能有在其它地方用了 global 宣告了吧。
雖然你說沒有。
你可以直接輸出 $GLOBAL 看看有沒有 _user 這個key存在。
有的話就是被用 global 宣告了。

st474ddr iT邦新手 2 級 ‧ 2020-08-11 16:19:24 檢舉

感謝大大
我們版本確實是5.2版
再加上 register_globals 是 ON

我再透過確實有存在$GLOBALS
這樣應該就是global可以跨網頁傳遞的原因

「感謝大大大大」........
那個,我的沒很大。夠用而已。而且只給我家xx用。

st474ddr iT邦新手 2 級 ‧ 2020-08-11 16:55:02 檢舉

哈哈 不知道怎麼多打兩個

1
WQ
iT邦新手 2 級 ‧ 2020-08-11 13:57:17
<?php
session_start();
$_user = $_SESSION['username']; //你要多寫這一行,才能把SESSION取回來...
echo $_user;  <---這個只是變數

--------------請刪文--------------------

fillano iT邦超人 1 級 ‧ 2020-08-11 14:04:37 檢舉

他的問題是:為什麼沒加那一行,echo $_user;也有值吧?

WQ iT邦新手 2 級 ‧ 2020-08-11 14:15:27 檢舉

抱歉,看錯了~

st474ddr iT邦新手 2 級 ‧ 2020-08-11 14:45:14 檢舉

@fillano 大大您說的對
@WQ 大大 沒關係 沒有指派session就能取用是我好奇的地方

我要發表回答

立即登入回答