使用C#代替表单URL将数据发布到PHP页面

使用C#代替表单URL将数据发布到PHP页面,c#,post,webrequest,C#,Post,Webrequest,我有一个C#cart应用程序,它需要将一些数据发布到PHP页面,并将用户重定向到该页面以查看数据。一切正常!那么,问题是什么 由于我们使用Javascript函数通过将表单的操作设置为PHP URL将表单发布到PHP页面,因此它不允许我们用购物车内容清除会话变量 一旦用户单击checkout并发送到第三方站点,我们希望存储其购物车内容的会话变量消失。据我所知,我无法通过Javascript来清除这一点,因此我的想法是通过C#代码将POST数据和用户发送到PHP页面 当用户单击checkout时,

我有一个C#cart应用程序,它需要将一些数据发布到PHP页面,并将用户重定向到该页面以查看数据。一切正常!那么,问题是什么

由于我们使用Javascript函数通过将表单的操作设置为PHP URL将表单发布到PHP页面,因此它不允许我们用购物车内容清除会话变量

一旦用户单击checkout并发送到第三方站点,我们希望存储其购物车内容的会话变量消失。据我所知,我无法通过Javascript来清除这一点,因此我的想法是通过C#代码将POST数据和用户发送到PHP页面

当用户单击checkout时,Javascript重新加载页面,将购物车数据设置为字符串变量,清除会话,然后发布数据并将用户发送到PHP页面

除了发布数据和重定向用户之外,所有这些都在工作。不幸的是,出于安全原因,第三方页面无法接受URL.PHP?=var类型参数,因此我们必须发布它


使用WebRequest,我相信我可以获得发布的数据,但我无法让用户重定向到该页面以完成他们的订单。有什么想法吗?

您可以继续使用Javascript解决方案,只需添加一个Ajax调用即可放弃会话

我建议您实现一个中间页面来准备数据并清理会话。“checkout”链接只需将用户导航到此中间页面,即可执行以下操作:

  • 从会话中收集用户的购物车数据
  • 清除会话
  • 使用WebRequest发布到PHP页面
  • 从MSDN上:


    我只是在这里猜测,但您应该能够在WebBrowser控件项中传输数据,这样它将发送post数据并重定向。

    我从未使用过Ajax-您对此有参考资料或解释此想法的方法吗?谢谢你的回复!您并不真正需要AJAX(异步JavaScript和XML),您只需要一个或异步JavaScript调用。我想你可以从搜索“asp.net webmethod”或“asp.net ajax”开始。我会做更多的调查——我曾试图在Javascript函数中找到一种清除会话的方法,但没有成功。我将搜索异步调用,看看我从何而来。如果您试图用javascript函数解决这个问题,您可能会对客户端和服务器端有点混淆。会话保存在服务器上,而javascript保存在客户端。是的,我意识到了这一点。这就是困境。我们创建这个应用程序时没有想到用户会想要返回到原始页面,而大多数人不会这样做。他们将结帐、付款、关闭浏览器,否则会话将超时。然后我们意识到,可能有人下了一个订单,然后决定下另一个订单——然后我们需要在结帐时清除会话变量,但我们必须在不重新设计所有内容的情况下完成。因此,如果我们能够通过从客户端Javascript调用服务器端函数来解决这个问题,那将是一场胜利。嘿,Kenley!事实上,我刚刚做了这项工作,并且知道WebRequest将完成将数据发布到php页面的技巧-但是,用户必须重定向到数据发布到的页面,因为数据用于完成他们的签出。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 ();
            }
        }
    }