2013-05-27 20 views
16

Tôi muốn chuyển một vài biến từ trang PHP sang trang khác. Tôi không có biểu mẫu, các biến là một số thông báo mà trang đích muốn hiển thị nếu có sự cố. Làm cách nào để chuyển các biến này sang trang PHP khác trong khi vẫn giữ chúng vô hình?Chuyển các biến giữa hai trang PHP mà không sử dụng biểu mẫu hoặc URL của trang

ví dụ: giả sử tôi có hai biến này:

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

và tôi muốn chuyển chúng từ page1.php đến page2.php. Tôi không muốn truyền chúng thông qua URL.

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

Có cách nào (có thể thông qua $ _POST?)? Nếu bất cứ ai thắc mắc tại sao tôi muốn chúng vô hình, tôi không muốn một địa chỉ URL lớn với các thông số như "& message = Sự cố khi tải lên tệp của bạn. Đây không phải là tệp .zip hợp lệ" và tôi không có nhiều thời gian để thay đổi các chuyển hướng của trang của tôi để tránh vấn đề này.

+7

Phiên bạn, phiên của tôi. – user2406160

Trả lời

32

Sessions sẽ là lựa chọn tốt cho bạn . Hãy xem xét hai ví dụ những từ PHP Manual:

Mã của 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>'; 
?> 

Mã của page2.php

<?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>'; 
?> 

Để làm sáng tỏ điều - SID is PHP's predefined constant chứa tên phiên và id của phiên. Ví dụ giá trị SID:

PHPSESSID=d78d0851898450eb6aa1e6b1d2a484f1 
3

Bạn đã thử thêm cả hai vào $_SESSION chưa?

Sau đó ở phía trên cùng của page2.php bạn chỉ cần thêm:

<?php 
session_start(); 
2

Sử dụng Sessions.

Trang1:

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

Page2:

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

thay vì session_start(); – Robert

4
<?php 
session_start(); 

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

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

Stores phiên trên trang 1 sau đó trên trang 2 làm

<?php 
session_start(); 

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

Dưới đây là danh sách ngắn gọn:

  • JQuery với JSON thứ.(http://www.w3schools.com/xml/xml_http.asp)

  • $ _SESSION - có lẽ cách tốt nhất

  • Tuỳ chỉnh Cookie - sẽ không * luôn * làm việc.

  • tiêu đề HTTP - một số proxy có thể chặn nó.

  • cơ sở dữ liệu như MySQL, Postgres hay cái gì khác như Redis hoặc memcached (ví dụ tương tự như phiên sản xuất trong nước, "nhốt" theo địa chỉ IP)

  • APC - tương tự như cơ sở dữ liệu, sẽ không * luôn * công việc.

  • HTTP_REFERRER

  • URL thông số băm, ví dụ http://domain.com/page.php#param - bạn sẽ cần một số JavaScript để thu thập băm. - gmail nặng sử dụng này.

+0

Cũng thay vì cơ sở dữ liệu, một tệp văn bản thuần túy trong/tmp/hoặc/dev/shm/có thể được sử dụng – Nick