2012-04-03 50 views
0

我試圖用Post發送頁面之間的數據。不是一個表單 - 就像我可能會傳遞頁面之間的驗證錯誤或其他東西(在幾個地方使用它)。用curl發佈數據 - 實際刷新到下一頁

cURL執行正常,但它只是在底部的新頁面上。我如何執行cURL Post並加載下面的頁面?

所以我的目標是在頁面之間發送數據。我不想使用GET或cookie,因爲我不想依賴用戶,而且我不希望使用$ _SESSION,因爲它不像在會話之間發送私人數據那麼直接。

感謝

$ch = curl_init($some_url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'myvar=something'); 
curl_exec($ch); 
curl_close($ch); 

我懷疑代碼中有任何相關性,因爲它是關於執行任務不代碼語法(可能有一個在這個例子中,但你必須相信我,它不是說是代碼越野車,因爲它檢索得很好)。

+0

嗯,這種做法聽起來複雜。有沒有強烈的反對使用'$ _SESSION'存儲頁面請求之間的信息? – rjz 2012-04-03 19:11:24

+0

在我們知道你的意思/問題出在哪裏之前,你將不得不向我們展示一些代碼。 – DaveRandom 2012-04-03 19:11:34

+0

@rjz我覺得$ _SESSION是與特定用戶'profile'相關的東西,我想用$ _POST,因爲我發送的不是特別個人的數據(例如,在提交表單後,錯誤被檢查並且如果有的話,它被髮回到原始頁面,該頁面檢查是否有任何錯誤已經被髮回並且如果是的話就輸出它們)。 DaveRandom,代碼是unessary;正如我最近學會cURL是爲了獲取數據; curl_exec($ handle)檢索句柄頁面,但實際上並沒有去往它。但是如果你願意的話,我會包含代碼。 – Raekye 2012-04-04 04:27:04

回答

0

你可以你$_SESSION超全局分成兩個描述當前用戶/會話和表單創建了任何錯誤陣列。例如,

$_SESSION = array(
    'user' => array(), // user data goes here 
    'errors' => array() // validation data goes here 
); 

if (!$_POST['myvar'] == 'something') { 
    $_SESSION['errors']['myvar'] = 'You must specify a value for <code>myvar</code>'; 
} 

你可以這樣能夠在後續頁面輸出錯誤使用調用是這樣的:

if (isset($_SESSION['errors'])) { 
    foreach($_SESSION['errors'] as $error) { 
    echo '<li>' . $error . '</li>'; 
    } 
} 
0

你爲什麼使用cURL?爲什麼不直接使用AJAX

$(function() { 

    // Send data asynchronously 
    $.ajax({ 
     url: '/path/to/your/script.php', 
     type: 'POST', 
     data: 'var1=value1&var2'=$('input.some_class').val(), 
     success: function(data) { 
     // Send the user to another page 
     window.location.href = '/to/infinity/and/beyond'; 
     } 
    }); 

}); 
+0

我正在使用PHP,並且寧願遠離Javascript(依賴於用戶 - 無論他們是否啓用了它,例如,我只是想在我自己的控制下保留儘可能多的性能並隱藏不必要的信息) – Raekye 2012-04-05 02:26:12

0

使用AJAX的高管

$(function() { 

/
     data: 'var1=value1&/ Send data asynchronously 
    $.ajax({ 
     url: '/path/to/your/script.php', 
     type: 'POST',var2'=$('input.some_class').val(), 
     success: function(data) { 
     // Send the user to another page 
     window.location.href = '/to/infinity/and/beyond'; 
     } 
    }); 

});