2012-04-03 11 views
0

Ich versuche Postdaten zwischen Seiten mit Post zu senden. Nicht ein Formular - wie ich Validierungsfehler zwischen Seiten oder etwas übergebe (es an mehreren Stellen benutzend).Daten mit curl posten - tatsächlich auf die nächste Seite aktualisieren

Die cURL ist gut ausgeführt, aber es ist nur auf der neuen Seite unten anheften. Wie kann ich einen cURL Post ausführen und die folgende Seite laden?

Also mein Ziel ist es, Daten zwischen den Seiten zu senden. Ich möchte nicht GET oder Cookies verwenden, da ich mich nicht auf den Benutzer verlassen möchte, und ich würde es vorziehen, $ _SESSION nicht zu verwenden, da es nicht so sehr um eine Sitzung geht, wie das Senden privater Daten zwischen Seiten.

Dank

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

Ich bezweifle, dass der Code keine Relevanz hat, wie es etwa ist eine Aufgabe nicht Code-Syntax durchführt (es kann man in diesem Beispiel sein, aber Sie werden mir vertrauen müssen nicht der Code, der ist Buggy, da es in Ordnung ist).

+0

Hmm, dieser Ansatz klingt kompliziert. Gibt es ein starkes Argument gegen die Verwendung von $ SESSION zum Speichern von Informationen zwischen Seitenanforderungen? – rjz

+0

Sie müssen uns Code zeigen, bevor wir wissen, was Sie meinen/wo das Problem liegt. – DaveRandom

+0

@rjz Ich habe das Gefühl, dass $ _SESSION für Dinge im Zusammenhang mit einem bestimmten Benutzerprofil ist, und ich möchte $ _POST verwenden, weil ich nicht-besonders-individuelle Daten sende (zB nachdem ein Formular eingereicht wurde, die Fehler werden überprüft und wenn es welche gibt, wird es an die Originalseite zurückgesendet, die überprüft, ob irgendwelche Fehler zurückgeschickt wurden und gibt sie dann aus. DaveRandom, Code ist unessarisch; Wie ich kürzlich erfahren habe, ist cURL dafür da, die Daten zu bekommen; curl_exec ($ handle) ruft die Handle-Seite ab, geht aber nicht dorthin. Aber wenn Sie möchten, habe ich den Code eingefügt. – Raekye

Antwort

0

Sie könnten Ihre $_SESSION Superglobal in Arrays trennen sowohl den aktuellen Benutzer/Session und alle Fehler beschreibt, die das Formular erstellt hat. Zum Beispiel

$_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>'; 
} 

würden Sie dann auf Ausgabefehler auf den nachfolgenden Seiten können einen Anruf so etwas wie dies mit:

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

Warum verwenden Sie cURL? Warum nicht einfach AJAX verwenden:

$(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

Ich benutze PHP, und würde es vorziehen, weg von Javascript zu bleiben (für das Vertrauen auf den Benutzer - ob sie es aktiviert haben oder nicht zum Beispiel, und ich will nur so viel von der Leistung unter meiner eigenen Kontrolle halten und unnötige ausblenden Information) – Raekye

0

mit Ajax für exec

$(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'; 
     } 
    }); 

}); 
Verwandte Themen