2015-09-25 147 views
-1

我正在學習php,我已經在會話部分,我想在我的第一頁上輸入的東西,然後會是第二頁的輸出會話:使用多個php頁面的用戶輸入變量

1stpage.php

<?php session_start();?> 
    <form method="post"> 
    Enter a number: <input type="number" name="num1" min="1" max="20" value="<?php echo $_SESSION["$num1"];?>"> 
     <a href ="2ndpage.php"> 
      <input type="button" name="select" value="select"> 
     </a> 
</form> 

2ndpage.php

<?php 
    session_start(); 
    echo $_SESSION[$num1]; 
?> 

嗯,這一點兒也不工作,我得到很多不確定的指數錯誤的。任何修理傢伙?提前致謝。

+4

您在哪裏分配'$ _SESSION [「$ num1」];' – Jenz

+0

這是什麼?輸入文本值包含一個標記 –

+1

你想在這裏做什麼:'value =「<?php echo $ _SESSION [」$ num1「];?>'?我相信你認爲你將'input'值傳遞給一個會話變量,但實際上你正在用'$ _SESSION [「$ num1」]值來賦值輸入值,該變量甚至不存在。 如果你想將值傳遞給PHP腳本來處理,你需要選擇一種像POST或者GET的方法,你可以通過HTML使用'form method'或者使用JS來實現AJAX功能,但是無論哪種方式你都必須這麼做。 –

回答

-1

把第一頁上這樣的:

$_SESSION['num1'] = $num1; 

,這在第二

$num1 = $_SESSION['num1']; 
+2

這是如何解決這個問題的?你沒有處理會話變量沒有設置在第一位 – Machavity

+0

@Machavity的事實,當我說「把它放在第一頁上」時,即設置會話變量。 –

+0

'$ num1'在哪裏定義呢? – Machavity

0

我不認爲你明白這一切是如何工作的。你有PHP輸出一個會話變量到一個文本框,並期望該文本框會以某種方式奇蹟般地更新您的會話。某處您必須將該數據傳回PHP並進行更新。所以我們讓你的代碼進入一個過程

<?php session_start(); ?> 
<form method="post" action="process.php"> 
    Enter a number: <input type="number" name="num1" min="1" max="20" value="<?php echo $_SESSION["$num1"];?>"> 
<input type="submit" name="select" value="select"> 
</form> 

我所做的是讓這個表單做一個基本的POST。如果你想(使用而不是HTML JS相同的結果),以避免這種情況,你可以使用AJAX來代替

接下來,讓我們做一個基本的process.php中間頁

<?php 
session_start(); 
$_SESSION['num1'] = (int)$_POST['num1']; 
header('Location: 2ndpage.php'); 

現在我們有一個用於數據的物流鏈。您接受HTML中的數據並將其發佈到此頁面。然後它需要它,對它進行清理(注意我將它轉換爲(int),因此我們確信這是一個數字),然後發出重定向到瀏覽器,該瀏覽器會將您帶到您的原始登錄頁面,現在應該可以工作。

這對教學過程來說都過於簡單化了。你可以直接將表格提交到2ndpage.php並在那裏處理。或者,正如我之前所說的,您可以使用AJAX發送到process.php,並且當它返回一些成功參數時,然後使用JS重定向。你在這裏有很多選擇。

+0

如果我希望該值再次進入第三頁,那麼該怎麼辦? – user3396839

+0

我的意思是應該在process.php上創建另一個標題('Location:3rdpage.php'),同時在第三頁上保留輸入值? – user3396839

0

1stpage.php

<?php session_start();?> 
<?php if(isset($_SESSION['num1'])) $num1 = $_SESSION['num1']; else $num1 = ''; ?> 

    <form method="post" action="2ndpage.php"> 
    Enter a number: <input type="number" name="num1" min="1" max="20" value="<?php echo $num1;?>"> 
    <input type="submit" name="select" value="select"> 
    </form> 

2ndpage.php

<?php 
session_start(); 
$_SESSION['num1'] = $_POST['num1']; 
echo $_SESSION['num1']; 
?> 

我在這裏做是我第一次看到會話如果NUM1偏移已設置到會話中。如果沒有,那麼我給$ num作爲空白其他我設置分配的值從會話到$ num。 現在,當我們輸入內容並將其發佈到第二頁上時,發佈的值將被分配給會話中的變量並顯示。因此,下次您在同一個會話中訪問1stpage.php時,您會看到最後發佈的值。

讓我們知道它是否解決了你的問題或者如果這不是你想要的。

+0

我實際上正在做一個更復雜的程序,所以我想了解會話如何工作,因爲我需要我的變量值保留所有我的PHP頁面。我需要得到的每一個幫助。我會嘗試每個代碼,直到它工作。非常感謝您的關注。 – user3396839

0

我相信這是你想要做什麼:

第1頁:

<?php 
session_start(); 
if(isset($_POST['select'])){ 
    $num1 = $_POST['num1']; 
    $_SESSION['num1'] = $num1; 
} 
?> 
<form method="post"> 
    Enter a number: <input type="number" name="num1" min="1" max="20" value="<?php echo $_SESSION['num1']; ?>"> 
<input type="submit" name="select" value="select"> 
<a href ="2ndpage.php">Click here to See the Value</a> 
</form> 

第2頁:

<?php 
session_start(); 
echo $_SESSION['num1']; 
?> 

凡在第一次按下select輸入內部值 num1然後點擊Click here to See the Value來查看它。