Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-C#双向通信_C#_Php_Mysql_Soap - Fatal编程技术网

PHP-C#双向通信

PHP-C#双向通信,c#,php,mysql,soap,C#,Php,Mysql,Soap,我正在创建一个连接到MySQL数据库的PHP网站。接下来,我需要编写一个使用相同数据库的C#桌面应用程序。不幸的是,我无法从远程位置直接连接到DB,我的托管公司也不允许SSH 那么我有什么选择呢?如果托管公司支持.NET,这不会是一个问题,但我对PHP没有太多经验。我是否需要编写一个PHP服务(SOAP?),然后在我的桌面应用程序中使用它?另外,如何从桌面应用程序与服务器通信 感谢您的帮助 根据安全性要求,您能否在PHP中编写一个通用SQL执行页面,将SQL作为字符串参数,并以字符串数组的形式返

我正在创建一个连接到MySQL数据库的PHP网站。接下来,我需要编写一个使用相同数据库的C#桌面应用程序。不幸的是,我无法从远程位置直接连接到DB,我的托管公司也不允许SSH

那么我有什么选择呢?如果托管公司支持.NET,这不会是一个问题,但我对PHP没有太多经验。我是否需要编写一个PHP服务(SOAP?),然后在我的桌面应用程序中使用它?另外,如何从桌面应用程序与服务器通信


感谢您的帮助

根据安全性要求,您能否在PHP中编写一个通用SQL执行页面,将SQL作为字符串参数,并以字符串数组的形式返回结果(可能还需要一些元数据或其他什么)

除此之外,我唯一能想到的就是某种web服务


SOAP也可以双向工作,您可以从C#app读写,无需在两端编写Web服务,除非您需要从服务器通知您的C#app某些信息(在这种情况下,您可以随时尝试从C#app进行频繁轮询)

根据安全要求,您是否可以用PHP编写一个通用SQL执行页面,将SQL作为字符串参数,并以字符串数组的形式返回结果(可能还需要一些元数据或其他什么)

除此之外,我唯一能想到的就是某种web服务


SOAP也可以双向工作,您可以从C#app读写,无需在两端编写Web服务,除非您需要从服务器通知您的C#app某些信息(在这种情况下,您可以随时尝试从C#app进行频繁轮询)

您可以做的是提供一些PHP包装,您可以从C#代码访问这些包装。例如,您可以使用关于C#/PHP通信的讨论


基本上,您可以向PHP发送HTTP请求,并使用C#检索其返回值。然后PHP将执行DB请求。如果您在网站上使用AJAX,使用相同的通信接口应该很容易。

您可以做的是提供一些PHP包装,您可以从C#代码访问这些包装。例如,您可以使用关于C#/PHP通信的讨论


基本上,您可以向PHP发送HTTP请求,并使用C#检索其返回值。然后PHP将执行DB请求。如果您在网站上使用AJAX,使用相同的通信接口应该很容易。

我认为以下链接将对您有所帮助


    • 我认为以下链接将对您有所帮助


        • 这是答案的第一段。 但是,您以何种形式将数据发送回应用程序? 也许是JSON

          PHP webpage
          
          <?php
          
          $host = "host.host.com";
          $user = "XXXXX";
          $password = "XXXX";//plaintext :)
          
          $connection = mysql_connect($host, $user, $password);
          
          $database = "XXXXX";
          
          
          $syntax = $_GET['syntax']; //www.example.com/help.php?syntax=DROP%20TABLE%20XXX
          
          $result = mysql_query($syntax);
          
          //somehow output the $result in C# readable form
          
          ?>
          
          PHP网页
          
          这是马特·费罗斯答案的第一段。 但是,您以何种形式将数据发送回应用程序? 也许是JSON

          PHP webpage
          
          <?php
          
          $host = "host.host.com";
          $user = "XXXXX";
          $password = "XXXX";//plaintext :)
          
          $connection = mysql_connect($host, $user, $password);
          
          $database = "XXXXX";
          
          
          $syntax = $_GET['syntax']; //www.example.com/help.php?syntax=DROP%20TABLE%20XXX
          
          $result = mysql_query($syntax);
          
          //somehow output the $result in C# readable form
          
          ?>
          
          PHP网页
          
          最好的选择是在PHP站点中创建一组RESTful服务

          需要考虑的最重要的事情之一是REST更多地按照约定进行配置,并且不需要SOAP之类的东西,这对于您的解决方案来说可能是一种绝对的过度使用

          您只需从PHP发送JSON,而.NET Windows应用程序将把它解析为CLR对象

          一个示例场景是:

          • 服务操作: **这将返回类似于
            {“text”:“hello world”}
          • .NET客户端接收此JSON并使用类似Newton JSON解析器的JSON解析器,您可以执行以下操作:

            MessageDto dto=JsonConvert.DeserializeObject([JSON已从服务调用接收]); MessageBox.Show(dto.Text);//这将显示“你好,世界”

          这只是一个非常简单的例子,但它会让你知道接下来会发生什么

          您可以使用WebRequest/WebResponse.NETBCL类查询RESTAPI


          PHP只需要发送一个web响应,其中包括输出流中的JSON,仅此而已。没有SOAP,没有XML,没有复杂性。保持简单。

          最好的选择是在PHP站点中创建一组RESTful服务

          需要考虑的最重要的事情之一是REST更多地按照约定进行配置,并且不需要SOAP之类的东西,这对于您的解决方案来说可能是一种绝对的过度使用

          您只需从PHP发送JSON,而.NET Windows应用程序将把它解析为CLR对象

          一个示例场景是:

          • 服务操作: **这将返回类似于
            {“text”:“hello world”}
          • .NET客户端接收此JSON并使用类似Newton JSON解析器的JSON解析器,您可以执行以下操作:

            MessageDto dto=JsonConvert.DeserializeObject([JSON已从服务调用接收]); MessageBox.Show(dto.Text);//这将显示“你好,世界”

          这只是一个非常简单的例子,但它会让你知道接下来会发生什么

          您可以使用WebRequest/WebResponse.NETBCL类查询RESTAPI


          PHP只需要发送一个web响应,其中包括输出流中的JSON,仅此而已。没有SOAP,没有XML,没有复杂性。保持简单。

          将SQL作为字符串参数是一个坏主意,因为它会成为一个易于注入的目标,而且即使是在本地服务器之间,这也是一种糟糕的做法。而是提供返回所需对象/字符串或数据的SOAP服务,并避免向web服务器发送SQL。但是我不确定Kolky的第二句话是什么意思——如果不是通过查询字符串,我如何告诉服务器在DB中插入什么?@Kolky,这就是为什么我在这里提出了关于安全性的警告——据我所知,可能绝对没有SQL注入的风险。此外,仅仅因为它使SQL注入更容易,并不意味着他不能从任何参数中解析注入方法,或传递参数