2017-02-12 87 views
0

這可能更像是一個'編程技術'問題,但我不確定應該去哪個部分。有沒有一種方法可以在HTML文檔(或PHP腳本)中攜帶一個變量?

我想製作一個「引導問題和(可用)答案」的網站 - 可能很容易在結構上描述爲「選擇你自己的冒險」類型的方法。

我沒有着手創建一個概括每個「故事情節分支」,然後硬編碼(a href)匹配的錯綜複雜的樹,我想到了一個更加動態的「旅程」,它以一個數組變量概述了將要問的問題的順序。

例如, 如果用戶選擇序列A; $ questionarray = [Q1,Q3,Q2,Q5,Q6] 如果用戶選擇序列B; $ questionarray = [Q1,Q2,Q4,Q3,Q7] 等等。我的第一個嘗試就是嘗試一些簡單的東西,就像[Q1,Q2,Q3,Q4,Q5]一樣,在這種情況下我不需要一個數組,而是一個簡單的遞增變量,比如說$ qnum,並且每個後續文件都會調用下一個文件,如下所示 - Q1.htm調用Q2.htm,Q2.htm調用Q3.htm,但不是因爲它已在每個文件中進行了硬編碼,而是由遞增的「統一變量」 $ qnum。 (這個想法是,如果成功了,那麼將會是一個簡單的例子,用上面提到的數組變量'$ questionarray'替換$ qnum)。

然後問題出現在幾個文檔,HTML甚至PHP,$ qnum不能被「傳送」到下一個文件 - 沒有寫入服務器端的文本文件以跟蹤。我甚至試圖將上面的「兄弟調用兄弟」結構更改爲「父調用子」(通過「包含Q」。$ qnum。「。php」),但$ _POST/document.reload也會結束重置$ qnum返回聲明的值。

有沒有另一種方法我可以使用,我不知道 - 除了從服務器端文本文件寫入/讀取,這將是相當低效,對不對?

+0

的SE想起SSION [這裏是PHP手冊](http://php.net/manual/en/book.session.php) – RiggsFolly

+0

如何使用localstorage?它很容易使用,並將完成您的工作。 –

+0

或者,你可以加密數據併發送GET請求 –

回答

2

在Php中,您可以使用Sessions來跟蹤從一個請求到下一個請求的數據。

您需要先開始會話,然後才能在$_SESSION數組中獲取/設置數據。

例如:

在第一頁

<?php 

session_start(); 

$_SESSION['questions'] = array(1,2,4,3,7); 

?> 

在二級頁面

<?php 

session_start(); 

//Replace with whatever logic is needed 
foreach($_SESSION['questions'] as $q){ 
    echo $q 
} 

注意,您只能每個請求啓動一個會話一次。要檢查是否會話已啓動,建議您做到以下幾點:

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
} 

如果你需要從你可以去它在兩個方面會刪除數據:

要刪除索引所述$_SESSION陣列

unset($_SESSION['questions']); 

摧毀整個會話

session_destroy(); 
+0

啊,SESSIONS!對於如何開始使用會話變量的「入門套件」非常感謝。現在需要更多的東西來學習,這看起來也需要跟蹤用戶。再一次,非常感謝新手的簡單解釋。 –

+0

沒問題,'sessions'的基本用法很簡單,但有很多功能和配置。如果你需要深入瞭解php手冊。有一件事需要注意,如果你有'Objects'或'Classes',你試圖存儲在'session'中,我相信你需要''序列化'它們,然後'unserialze'在下一頁檢索時。不完全確定目前的細節,但如果遇到未按預期保存的事情,這可能是原因。當我開始使用會話時,我努力地解決了這個問題。 –

0

如果你需要在網頁中攜帶變量,Sessions是最好的選擇。會話允許您跨多個頁面傳遞變量,數組等。檢查here進入會話。

相關問題