2013-05-27 62 views
16

我想將一個PHP頁面的變量傳遞給另一個頁面。我沒有表單,變量是目標頁面出現錯誤時要顯示的一些消息。如何將這些變量傳遞給另一個PHP頁面,同時保持它們不可見在兩個PHP頁面之間傳遞變量而不使用表格或頁面的URL

例如假設我有這兩個變量:

//Original page 
$message1 = "A message"; 
$message2 = "Another message"; 

我想將它們從page1.php傳遞給page2.php。我不想通過URL傳遞它們。

//I don't want that 
'page2.php?message='.$message1.'&message2='.$message2 

有沒有辦法(也許通過$ _POST?)?如果有人想知道爲什麼我希望它們變得不可見,我只是不想要一個大的URL地址,例如「& message =上傳文件時出現問題。這不是一個有效的.zip文件」,我沒有太多的參數有時間改變我的頁面的重定向,以避免此問題。

+7

會議我的朋友,會議。 – user2406160

回答

32

會議將是你不錯的選擇。從PHP Manual看看這兩個例子:使page2.php中的page1.php中

代碼

<?php 
// page1.php 

session_start(); 

echo 'Welcome to page #1'; 

$_SESSION['favcolor'] = 'green'; 
$_SESSION['animal'] = 'cat'; 
$_SESSION['time']  = time(); 

// Works if session cookie was accepted 
echo '<br /><a href="page2.php">page 2</a>'; 

// Or maybe pass along the session id, if needed 
echo '<br /><a href="page2.php?' . SID . '">page 2</a>'; 
?> 

代碼

<?php 
// page2.php 

session_start(); 

echo 'Welcome to page #2<br />'; 

echo $_SESSION['favcolor']; // green 
echo $_SESSION['animal']; // cat 
echo date('Y m d H:i:s', $_SESSION['time']); 

// You may want to use SID here, like we did in page1.php 
echo '<br /><a href="page1.php">page 1</a>'; 
?> 

要收拾的東西 - SID is PHP's predefined constant其中包含會話名稱及其ID。例如SID值:

PHPSESSID=d78d0851898450eb6aa1e6b1d2a484f1 
3

您是否嘗試過將兩者都添加到$_SESSION

然後在你使page2.php的頂部只需要添加:

<?php 
session_start(); 
2

使用Sessions

第1頁:

session_start(); 
$_SESSION['message'] = "Some message" 

第2頁:

session_start(); 
var_dump($_SESSION['message']); 
+0

而是session_start(); – Robert

4
<?php 
session_start(); 

$message1 = "A message"; 
$message2 = "Another message"; 

$_SESSION['firstMessage'] = $message1; 
$_SESSION['secondMessage'] = $message2; 
?> 

商店第1頁上的會話,然後第2頁上做

<?php 
session_start(); 

echo $_SESSION['firstMessage']; 
echo $_SESSION['secondMessage']; 
?> 
7

這裏是簡短的清單:

  • JQuery的使用JSON的東西。(http://www.w3schools.com/xml/xml_http.asp

  • $ _SESSION - 可能是最好的辦法

  • 自定義的cookie - 將 *總是*工作。

  • HTTP頭 - 某些代理可以阻止它。

  • 數據庫,MySQL和Postgres的或其他的東西,Redis的或Memcached的(例如,類似於自制會議, 「鎖定」 通過IP地址)

  • APC - 類似的數據庫,將 *總是*工作。

  • HTTP_REFERRER

  • URL散列參數,例如http://domain.com/page.php#param - 您將需要一些JavaScript來收集散列。 - 重郵件使用這個。

+0

而不是數據庫,可以使用/ tmp /或/ dev/shm /中的純文本文件 – Nick