2009-07-22 3 views
0

Ich habe eine C# -Karrenanwendung, die einige Daten an eine PHP-Seite senden und den Benutzer auf diese Seite umleiten muss, um die Daten anzuzeigen. Alles funktioniert gut! Also, wo liegt das Problem??POST-Daten auf PHP-Seite Verwenden von C# anstelle von Formular URL

Da wir eine Javascript-Funktion verwenden, um das Formular an die PHP-Seite zu senden, indem wir seine Aktion auf die PHP-URL setzen, erlaubt es uns nicht, unsere Session-Variable mit unseren Warenkorb-Inhalten zu löschen.

Sobald der Benutzer auf die Kasse klickt und an die Website eines Drittanbieters gesendet wird, möchten wir, dass unsere Sitzungsvariable den Inhalt des Einkaufswagens speichert. Nach meinem Wissen kann ich dies nicht über das Javascript löschen, also war meine Idee, die POST-Daten und den Benutzer über den C# -Code an die PHP-Seite zu senden.

Wenn der Benutzer auf Auschecken klickt, lädt das Javascript die Seite neu, setzt die Einkaufswagendaten auf eine Zeichenfolgevariable, löscht die Sitzung, sendet die Daten per POST und sendet den Benutzer an die PHP-Seite.

All dies funktioniert, außer für den POST von Daten und Umleiten des Benutzers. Leider kann die Third-Party-Seite aus Sicherheitsgründen keinen URL.PHP? = Var type-Parameter akzeptieren, also müssen wir sie POST senden.

Mit WebRequest glaube ich, dass ich die Daten erhalten kann, aber ich kann nicht den Benutzer auf diese Seite umgeleitet werden, um ihre Bestellung abzuschließen. Irgendwelche Ideen?

Antwort

0

Sie über die Verwendung der Javascript-Lösung halten können und fügen Sie einfach einen Ajax-Aufruf, der die Sitzung

+0

Ich habe noch nie Ajax benutzt - haben Sie eine Referenz dafür oder eine Möglichkeit, die Idee zu erklären? Danke für die Antwort! –

+0

Nun, Sie brauchen nicht wirklich AJAX (asynchrones JavaScript und XML), Sie brauchen nur einen oder asynchronen JavaScript-Aufruf. Ich nehme an, Sie können mit der Suche nach "asp.net webmethod" oder "asp.net ajax" beginnen. –

+0

Ich werde mich mehr umsehen - ich hatte versucht, einen Weg zu finden, um die Sitzung innerhalb der Javascript-Funktion zu löschen, kam aber nirgendwohin. Ich werde bei asynchronen Anrufen suchen und sehen, wo mich das holt. –

2

verlassen wird empfehle ich Ihnen eine vermittelnde Seite zu implementieren, damit Sie die Daten und die Bereinigung der Session vorzubereiten. Die ‚Kasse‘ Link würde navigieren einfach den Benutzer auf diese Vermittler Seite, die die folgenden tun würde:

  1. den Warenkorb Daten des Benutzers sammeln aus der Sitzung
  2. Löschen der Sitzung
  3. Post an die PHP-Seite mit WebRequest

Aus der MSDN auf WebRequest:

using System; 
using System.IO; 
using System.Net; 
using System.Text; 

namespace Examples.System.Net 
{ 
    public class WebRequestPostExample 
    { 
     public static void Main() 
     { 
      // Create a request using a URL that can receive a post. 
      WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx "); 
      // Set the Method property of the request to POST. 
      request.Method = "POST"; 
      // Create POST data and convert it to a byte array. 
      string postData = "This is a test that posts this string to a Web server."; 
      byte[] byteArray = Encoding.UTF8.GetBytes (postData); 
      // Set the ContentType property of the WebRequest. 
      request.ContentType = "application/x-www-form-urlencoded"; 
      // Set the ContentLength property of the WebRequest. 
      request.ContentLength = byteArray.Length; 
      // Get the request stream. 
      Stream dataStream = request.GetRequestStream(); 
      // Write the data to the request stream. 
      dataStream.Write (byteArray, 0, byteArray.Length); 
      // Close the Stream object. 
      dataStream.Close(); 
      // Get the response. 
      WebResponse response = request.GetResponse(); 
      // Display the status. 
      Console.WriteLine (((HttpWebResponse)response).StatusDescription); 
      // Get the stream containing content returned by the server. 
      dataStream = response.GetResponseStream(); 
      // Open the stream using a StreamReader for easy access. 
      StreamReader reader = new StreamReader (dataStream); 
      // Read the content. 
      string responseFromServer = reader.ReadToEnd(); 
      // Display the content. 
      Console.WriteLine (responseFromServer); 
      // Clean up the streams. 
      reader.Close(); 
      dataStream.Close(); 
      response.Close(); 
     } 
    } 
} 
+0

Hey Kenley! Ich habe gerade daran gearbeitet und weiß, dass WebRequest den Trick macht, die Daten auf der PHP-Seite zu veröffentlichen - der Benutzer muss jedoch auf die Seite umgeleitet werden, auf die die Daten gesendet werden, da die Daten verwendet werden, um das Auschecken abzuschließen . Ist das mit WebRequest möglich? Um die Daten nicht nur zu POST, sondern um den Benutzer auf die gleiche Seite zu senden, um die Daten zu sehen? –

0

I Ich spekuliere nur hier, aber Sie sollten in der Lage sein, die Daten in einem WebBrowser-Steuerelement zu übertragen, so dass die Postdaten gesendet und weitergeleitet werden.

Verwandte Themen