2017-08-14 62 views
0

我試圖通過PHP會話將值從一個WordPress頁面傳遞到另一個。我在這兩個頁面上都有一個下拉列表,除了選項值以外,它們是相同的。我希望在頁面加載時在第二頁上選擇的選項反映在第一頁上提交的選定值。傳遞PHP會話值

我看了很多問題,但一直沒有找到我需要的東西。任何幫助將不勝感激!

第1頁:

<?php 
    if(!isset($_SESSION)) { 
     session_start(); 
     echo $_SESSION['state']; 
     $var_value = $_SESSION['state']; 
    } 
?> 

<form> 
    <input type=hidden name="retURL" value="page2.php"> 
    <select id="state" name="state"> 
     <option>State 1</option> 
     <option>State 2</option> 
     <option>State 3</option> 
    </select> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

第2頁:

<?php 
    session_start(); 
    if(isset($_POST['state'])){ 
     $_SESSION['state'] = $_POST['state']; 
    } 
?> 

<select> 
    <option <?php if($var_value == 'State 1') echo 'selected'; ?> value="http://customizedlink">State 1</option> 
    <option <?php if($var_value == 'State 2') echo 'selected'; ?> value="http://customizedlink">State 2</option> 
    <option <?php if($var_value == 'State 3') echo 'selected'; ?> value="http://customizedlink">State 3</option> 
</select> 
+1

哪裏是在發佈首頁時運行的代碼? –

+2

_「在第一頁上提交的選定值」_ - 已提交_where to_?由於您爲「頁面2」顯示的代碼只是從$ _POST讀取值,因此我認爲「頁面2」是您首先將數據發送到的地方?如果是這樣,是什麼讓你覺得這需要會議......?您已通過$ _POST訪問這些值。 – CBroe

回答

0

你忘了告訴我們你是如何從第1頁前往第2頁。但是,讓我們假設你的時候第1頁中的SELECT再次被調用。在這種情況下,你需要之前,從第2頁將您$_SESSION['state'] = $_POST['state'];分配到第1頁。這必須發生你移動到第2頁。

另外,第2頁是用一種叫$var_value未設定您示例中的任何位置。你的意思是在第2頁的SELECT以上的某處執行$var_value = $_SESSION['state'];

如果這不會導致您找到答案,請提供有關代碼上下文的更多信息。


試試這個。你的第1頁FORM元素,提交時,要求第1頁。所以...

<?php 
    if(!isset($_SESSION)) { 
     session_start(); 
     if(isset($_POST['state'])){ 
      $_SESSION['state'] = $_POST['state']; 
     } 
     echo "Page 1: ".$_SESSION['state']; 
    } 
?> 

<form method="post"> 
    <input type=hidden name="retURL" value="page2.php"> 
    <select id="state" name="state"> 
     <option>State 1</option> 
     <option>State 2</option> 
     <option>State 3</option> 
    </select> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

第2頁

<?php 
    session_start(); 
    echo "Page 2: ".$_SESSION['state']; 
    $var_value = $_SESSION['state']; 
?> 

<select> 
    <option <?php if($var_value == 'State 1') echo 'selected'; ?> value="http://customizedlink">State 1</option> 
    <option <?php if($var_value == 'State 2') echo 'selected'; ?> value="http://customizedlink">State 2</option> 
    <option <?php if($var_value == 'State 3') echo 'selected'; ?> value="http://customizedlink">State 3</option> 
</select> 

你應該看到(運行1後)爲$_SESSION['state']在第2頁正確的值IF我已經正確理解你的代碼的意圖。

+0

感謝您的回覆,並感到抱歉不清楚。$ var_value的目的是爲頁面1中所選字段的值創建一個變量。我希望瀏覽器在頁面2時記住頁面1的值,並使用它來確定哪些字段應該標記爲選擇。 – usefulbattery

+0

我認爲是這樣,但你不能在頁面1中設置它,並期望它在頁面2中可用。不要使用它。直接使用'$ _SESSION ['state']'。 – JBH

+0

@usefulbattery,我添加了一些代碼。 – JBH

1

WordPress核心不使用PHP會話。 WordPress的平臺完全是無狀態的,並提供了用於保持用戶登錄 cookie的外部使用的會話不支持 。

WordPress的核心不使用PHP會議,但有時它們是由您的使用要求 - 案例,一個插件或主題。

您可以使用WordPress Native PHP Sessions插件來實現PHP的本地會話處理程序,由WordPress數據庫支持。

請參閱Using the PHP Session in WordPress