[英]How can I send data to another page without javascript, jquery, or an HTML form?
我是Web編程的新手,我所學的一切基本上都是從在線查找文檔中學到的。 我有一個網站正在運行一種帶有庫存等游戲。 我似乎無法想到一種向用戶提供物品的干凈方法。 它當前使用JavaScript函數,但是我意識到用戶可以只從URL欄中調用該函數並利用系統。
在給定的頁面上,這是要求給出項目的代碼。 用戶將單擊“獲取帽子”按鈕之類的按鈕,並將重定向到另一個頁面:
<script>
function giveitem(name, quant)
{
document.getElementById("itemnamefield").value=name;
document.getElementById("itemquantfield").value=quant;
document.itemform.submit();
}
</script>
<form id="itemform" name="itemform" action="./itemget.php" method="post">
<input type="hidden" id="itemnamefield" name="itemnamefield" value="">
<input type="hidden" id="itemquantfield" name="itemquantfield" value="">
</form>
<input type="button" onClick="javscript: giveitem('Hat',1);" value="Get Hat"><br>
然后,itemget.php使用上一頁中的發布數據執行此功能。 $ id是存儲在Cookie中的用戶ID號,$ name是商品的標題,$ quant是所需的商品數量。
function additem($id, $name, $quant){
include 'sqlconnect.php';
$result = mysqli_query($con, "SELECT * FROM inventory WHERE id='$id' AND name='$name'");
if ($row = mysqli_fetch_array($result)){
mysqli_query($con, "UPDATE inventory SET quant=quant+'$quant' WHERE id='$id' AND name='$name'");
}
else{
$subresult = mysqli_query($con, "SELECT name FROM itemdef WHERE name='$name'");
$subrow = mysqli_fetch_array($subresult);
mysqli_query($con,"INSERT INTO inventory (id, quant, name) VALUES ('$id', '$quant', '$subrow[name]')");
}
}
然后,itemget.php顯示用戶收到了哪些項目。 所以我不能使用javascript,因為這是可利用的。 除了標准的HTML和PHP外,我並不是真的打算使用jquery或其他任何東西(我試圖保持簡單是因為我沒有經驗)。 我唯一的選擇是為每個“ give x item”按鈕創建一個新表單嗎?
您可以使用javascript,表格或簡單的超鏈接。
訣竅是讓服務器知道用戶具有哪些可能性。 因此,當您生成頁面時,可以在生成了“ get hat”鏈接的服務器上的用戶會話中進行存儲,因此“ get hat”是一個有效的命令。
如果收到的命令無效,則用戶可能在作弊,或者他們單擊“后退”並從過時的頁面執行了命令。 無論如何,您然后可以忽略該命令或顯示一條消息。
因此,訣竅是將驗證保留在服務器上。 這樣,他們就不會作弊,因為除了您提供的命令以外的所有內容都被阻止了。
因此,您可以使用PHP編寫游戲邏輯和會話處理,並使用純HTML(超鏈接)來呈現命令。 如果您願意,也可以使用Javascript / JQuery或表單,如果您認為它更容易或使您的游戲性更好。 只要您在服務器上進行檢查,就可以了。
小例子。 當您將數據發送到.php文件以進一步處理信息時,總是,而且我的意思是總是感到恐慌(不像是嚴重的恐慌,而是要小心),不要信任用戶信息。 如果您知道變量$ x應該只是整數,則使用if條件確保它是整數,這樣壞/惡意數據就不會成為問題。
使用由<?php session_start(); ?>
初始化的PHP會話<?php session_start(); ?>
<?php session_start(); ?>
,那么您可以存儲由會話ID的cookie引用的服務器上存儲的信息。
例如,不要將用戶的ID存儲在cookie中,請使用會話: <?php $_SESSION['user_id'] = 1; ?>
<?php $_SESSION['user_id'] = 1; ?>
然后,例如,您也可以在該會話中存儲可用項目。
game.com/view-x.php
<?php
session_start();
...
$_SESSION['items_available'] = array('hat', 'shoe');
?>
例如,當用戶通過html表單,鏈接,...請求項目時:
game.com/item-add.php?item=stone
<?php
session_start();
...
if (in_array($_GET['item'], $_SESSION['items_available'])) {
..
}
else {
// 'stone' is not an available item
}
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.