C# 有什么方法可以从php获得结果并在c上使用它吗?想要登录吗?

C# 有什么方法可以从php获得结果并在c上使用它吗?想要登录吗?,c#,php,C#,Php,这是我的PHP文件 require "conn.php"; $user_name = $_POST["user_name"]; $user_pass = $_POST["password"]; $mysql_qry = "select * from companies where company_username like '$user_name' and company_password like '$user_pass'"; if(mysqli_num_rows($result) >

这是我的PHP文件

require "conn.php";
$user_name = $_POST["user_name"];
$user_pass = $_POST["password"];
$mysql_qry = "select * from companies where company_username like '$user_name' and company_password like '$user_pass'";


if(mysqli_num_rows($result) > 0)
{
echo "Company Login Successful";
}
else{
echo "Login Error! Please try again";
}
我应该使用WebClient吗?
对不起,我只是个新手,谢谢:

有很多可能性。我将介绍一个,但这远远不是一个

首先,我不会使用标准的内容类型,最有可能是text/html,但我没有检查它。您可以使用JSON或XML作为内容类型,我将在这里使用JSON

header("Content-Type: application/json");
这是不必要的,我们可以不考虑内容类型头来解析JSON,但这样更干净

接下来,我们必须生成输出

$arr = array('Status' => 1, 'Message' => 'Company Login Successful'); //or otherwise, depending on if the login *was* successful
echo json_encode($arr);
在C端,您可以使用HttpClient类来获取结果

HttpClient httpClient = new HttpClient();
var httpResponseMessage = await httpClient.PostAsync($"http://www.yourserver.net/login.php", loginHttpContent);
var stream = await httpResponseMessage.ReadAsStreamAsync();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(LoginResult));
var loginResult = serializer.ReadObject(stream) as LoginResult;
登录结果类:


请注意:提供的代码只是一个草图,完全没有准备好生产。例如,此时不应创建HttpClient或DataContractJsonSerializer、正确处置资源、处理异常等。

我搜索了解决方案,发现了一种从PHP获取结果的简单方法

private void SubmitData()
{
try
{
     string user = tbUsername.Text;
     string pass = tbPassword.Text;
     string url = "--my_php_url--";

     WebClient webclient = new WebClient();
     NameValueCollection formData = new NameValueCollection();
     formData["user_name"] = user;
     formData["password"] = pass;

     byte[] responseBytes = webclient.UploadValues(url, "POST", formData);
     string responsefromserver = Encoding.UTF8.GetString(responseBytes);
     MessageBox.Show(responsefromserver);
     webclient.Dispose();
}
catch (Exception e )
{
MessageBox.Show("Error :" + e.Message);
}

谢谢你的帮助!:

永远不要以明文形式存储密码!。只存储密码哈希!使用PHP的和。如果您运行的PHP版本低于5.5,我真的希望您不是,那么您可以使用来获得相同的功能。您非常愿意并且应该真正使用,而不是连接查询。特别是因为你根本没有逃避用户的输入!请检查这个不清楚你想如何使用c?好的,先生,谢谢你告诉我这些缺陷。我会注意到@MagnusEriksson
private void SubmitData()
{
try
{
     string user = tbUsername.Text;
     string pass = tbPassword.Text;
     string url = "--my_php_url--";

     WebClient webclient = new WebClient();
     NameValueCollection formData = new NameValueCollection();
     formData["user_name"] = user;
     formData["password"] = pass;

     byte[] responseBytes = webclient.UploadValues(url, "POST", formData);
     string responsefromserver = Encoding.UTF8.GetString(responseBytes);
     MessageBox.Show(responsefromserver);
     webclient.Dispose();
}
catch (Exception e )
{
MessageBox.Show("Error :" + e.Message);
}