簡體   English   中英

如何在沒有JavaScript,jquery或HTML表單的情況下將數據發送到另一個頁面?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM