是否可以使用Javascript設置PHP會話變量?在PHP中使用javascript設置會話變量
回答
在JavaScript:
jQuery('#div_session_write').load('session_write.php?session_name=new_value');
在session_write.php文件:
<?
session_start();
if (isset($_GET['session_name'])) {$_SESSION['session_name'] = $_GET['session_name'];}
?>
在HTML:
<div id='div_session_write'> </div>
會話存儲在服務器端,因此您無法從JavaScript中爲其添加值。所有你得到客戶端的是包含一個id的會話cookie。一種可能性是向服務器端腳本發送一個AJAX請求,該腳本將設置會話變量。例如使用jQuery的.post()
方法:
$.post('/setsessionvariable.php', { name: 'value' });
你應該,當然,謹慎看待這種暴露腳本。
您不能直接操作Javascript中的會話值 - 它們只存在於服務器上。
雖然您可以通過使用AJAX調用讓Javascript獲取並設置會話中的值。
也
看到,如果你想允許持久性數據的客戶端操作,那麼它最好還是使用cookies。這就是Cookie的設計目的。
但他們提出了限制@lese majeste。所以我期待把我的JavaScript數組從一個頁面轉移到另一個頁面 – saikiran 2014-08-05 15:56:43
不可能。因爲JavaScript是客戶端,會話是服務器端。要做與PHP會話相關的任何事情,你必須去服務器。
或純JS,也看到StackOverflow上: JavaScript post request like a form submit
但爲什麼嘗試設置$ _SESSION與JS?任何JS變量都可以被玩家用 某些第三方工具(螢火蟲)修改,因此任何玩家都可以修改$ _session []! PHP不能給js任何密碼(甚至是[滾動]加密)返回,這一切都是可見的。 Jquery或AJAX無法幫助,最終都是js。
這發生在網絡遊戲設計很多。 (也許有點博弈論?原諒我,我有一個碩士和愛把理論用:))在Crimegameonline.com,像我在 用PHP初始化迷你遊戲拼圖,保存初始板在$ _SESSION ['foo 「]。 然後,我使用PHP來[使HTML]顯示最初的難題開始。然後,js接管,隨着球員的動作觀看按鈕和修改元素xy。我不想玩客戶端服務器(如WOW)並詢問服務器'嘿,我的播放器想移動到xy,我該怎麼辦?'。這是很多帶寬,我不希望涉及的服務器。
而且我可以在玩家每次發生錯誤(或死亡)時發送POST。玩家可以阻止傳出的POST(並且改變本地的JS變量以使其忘記計數),或者簡單地修改傳出的POST數據。是的,人們會這樣做,特別是如果涉及到真錢的話。
如果遊戲規模較小,您可以發送更新後每個動作(單擊按鈕),單向,帶有後兩個動作的後置變量。然後,服務器完整性檢查會持續到$ _SESSION ['allMoves']中。如果遊戲規模龐大,您可以發送所有上一步移動的「中途」更新,並查看它是否與最終更新列表中的內容匹配。
然後,一個js認爲以後我們有一個贏,添加或國防部的按鈕來更改網頁:
document.getElementById('but1').onclick=Function("leave()");
...
function leave() {
var line='crimegameonline-p9b.php';
top.location.href=line;
}
那麼新的一頁的PHP着眼於$ _SESSION [「初始化」],並播放直通各 $ _SESSION ['allMoves']查看它是否真的是贏家。服務器(PHP)必須決定它是否真的是贏家,而不是客戶端(js)。
ps:可能會使用AJAX提交(獲取或發佈)單個動作,而無需轉到動作頁面,然後轉到動作.php頁面,讓它們進入一個會話變量(沒有文本/標題信息)。 – dako 2012-10-08 23:21:33
一個SI設置會話變量的多種方法是通過向另一個PHP文件發送請求。這裏不需要使用Jquery或任何其他庫。
考慮我在那裏,我創造SESSION
變量(比如$_SESSION['v']=0
)如果沒有創建SESSION
否則我會加載其他文件的index.php文件。
代碼是這樣的:
session_start();
if(!isset($_SESSION['v']))
{
$_SESSION['v']=0;
}
else
{
header("Location:connect.php");
}
現在count.html我想成立這個會話變量爲1
含量count.html
function doneHandler(result) {
window.location="setSession.php";
}
在count.html JavaScript部分,發送請求t o另一個PHP文件(比如setSession.php
),我可以訪問會話變量。
所以在setSession.php將寫
session_start();
$_SESSION['v']=1;
header('Location:index.php');
這樣做時要小心,因爲它是一個安全隱患。攻擊者可以將數據反覆注入會話變量,這是存儲在服務器上的數據。這會讓你看到有人用垃圾會話數據重載你的服務器。
這裏的,你會不會想要做的代碼的例子..
<input type="hidden" value="..." name="putIntoSession">
..
<?php
$_SESSION["somekey"] = $_POST["putIntoSession"]
?>
現在,攻擊者可以只改變putIntoSession的值並提交表單十億倍。繁榮!
如果您採取創建AJAX服務的方法來執行此操作,您需要確保強制執行安全措施以確保無法重複請求,截斷收到的值並執行一些基本的數據驗證。
- 1. 設置會話變量在javascript
- 2. 在javascript中設置會話或php變量?
- 3. 在ColdFusion中使用JavaScript設置會話變量
- 4. PHP會話變量設置不正確
- 5. 取消設置php會話變量
- 6. 設置PHP多維會話變量
- 7. PHP會話變量沒有被設置
- 8. 使用ajax設置會話變量
- 9. 使用PDO設置MySQL會話變量()
- 10. 使用NodeJS設置會話變量
- 11. 在perl中使用PHP會話變量
- 12. 在PHP中使用ColdFusion會話變量
- 13. 在php中重置會話變量
- 14. 在Jquery中設置會話變量
- 15. 在grails中設置會話變量1.3.7
- 16. 在Application_BeginRequest中設置會話變量
- 17. 設置會話變量爲paramiko會話
- 18. 會話變量未設置
- 19. 設置會話變量
- 20. 會話變量未設置
- 21. 會話變量已設置
- 22. 設置會話變量
- 23. PHP不訪問通過JavaScript代碼設置的會話變量
- 24. PHP:在多個iframe中使用在iframe中設置的會話變量
- 25. 使用jQuery設置PHP會話變量Ajax
- 26. 使用ajax/jquery設置php會話變量
- 27. 在PHP登錄腳本中使用會話和會話變量
- 28. 如何訪問會話變量並在JavaScript中設置它們?
- 29. 在javascript中設置會話變量或本地存儲器
- 30. 如何在php中設置會話變量的ID
如果人們使用會話變量期望他們只能被設置爲服務器端,這可能會帶來安全風險。 – 2014-04-30 04:06:15