Передать переменную из php в c#

goodoker

Постоялец
Регистрация
7 Окт 2012
Сообщения
120
Реакции
53
Подскажите, как это можно сделать?
 

NIKSU

Постоялец
Регистрация
6 Июн 2011
Сообщения
136
Реакции
98
Сохраняешь переменную в файл в одной программе и читаешь из файла в другой?
 

Шумадан

Хабарра!!11
Регистрация
6 Фев 2008
Сообщения
1.746
Реакции
2.208
Подскажите, как это можно сделать?
в каком случае? веб, десктоп, консоль? распишите детально, что и как в С#, что и как в пхп, что кого вызывает и каким образом
 

goodoker

Постоялец
Регистрация
7 Окт 2012
Сообщения
120
Реакции
53
php
Код:
    $result = mysql_query("SELECT * FROM users WHERE login = '$login' AND password = '$pass'") or die(mysql_error());
    $row = mysql_fetch_array($result);   
    $id = $row['id'];
    $pc = $row['pc'];
c#
Код:
using xNet.Net;
using xNet.Collections;

  Form2 form2 = new Form2();

  private void button1_Click(object sender, EventArgs e)
  {
  HttpRequest req = new HttpRequest();
  HttpResponse resp;
  req.Cookies = new CookieDictionary();

  var urlParams = new RequestParams();

  urlParams["login"] = textBox1.Text;
  urlParams["pass"] = textBox2.Text;

  resp = req.Get("http://test/script.php", urlParams);

  form2.label2.Text = resp.ToString();
  form2.ShowDialog();
  }
Нужно вывести значения переменных $id, $pc в form2.label1 и form2.label2.
Если вывести через echo, то выводятся оба значения само собой. Как их разделить, чтобы присвоить каждому лейблу отдельное значение?
Код:
    echo $pc;
    echo $id;
 

Шумадан

Хабарра!!11
Регистрация
6 Фев 2008
Сообщения
1.746
Реакции
2.208
отдавать пхп и принимать в нете json либо сериализированый в base64 массив, так проще намного
Для просмотра ссылки Войди или Зарегистрируйся
Код:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 

goodoker

Постоялец
Регистрация
7 Окт 2012
Сообщения
120
Реакции
53
Спасибо! Получилось сделать.
php
Код:
$arr = array('id' => $id, 'pc' => $pc);

echo json_encode($arr);

c#
Код:
using xNet.Net;
using xNet.Collections;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

  Form2 form2 = new Form2();

  private void button1_Click(object sender, EventArgs e)
  {
  try
  {
  HttpRequest req = new HttpRequest();
  HttpResponse resp;
  req.Cookies = new CookieDictionary();

  var urlParams = new RequestParams();

  urlParams["login"] = textBox1.Text;
  urlParams["pass"] = textBox2.Text;

  resp = req.Get("http://test/script.php", urlParams);
  string json = resp.ToString();
  try
  {   
  JObject data = JObject.Parse(json);
  int dataId = (int)data["id"];
  string dataPc = (string)data["pc"];
  form2.label1.Text = dataPc;
  form2.label2.Text = dataId.ToString();
  if (dataId > 0)
  {
  form2.ShowDialog();
  }
  }
  catch (Exception ex)
  {
  MessageBox.Show("Ошибка авторизации", "Error");
  }  
  }
  catch (Exception ex)
  {
  MessageBox.Show("Нет соединения с сервером ", "Error");
  }
  }
 
Последнее редактирование:

goodoker

Постоялец
Регистрация
7 Окт 2012
Сообщения
120
Реакции
53
json_encode() не работает с кириллицей.
В бд utf8_general_ci
Подключаюсь к бд и меняю кодировку на cp1251
PHP:
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");

PHP:
$arr = array('id' => $id, 'surname' => $surname, 'name' => $name, 'patronymic' => $patronymic, 'pc' => $pc);
Выводится:
{"id":"1","surname":null,"name":null,"middlename":null,"pc":"d"}
 

goodoker

Постоялец
Регистрация
7 Окт 2012
Сообщения
120
Реакции
53
добавил
PHP:
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
, но всё по прежнему...

Вижу, что
The use of this solution worked for me with the Latin and the Cyrillic alphabet, with PHP 5.5
Надо будет обновить.
 
Последнее редактирование:

goodoker

Постоялец
Регистрация
7 Окт 2012
Сообщения
120
Реакции
53
{"id":"1","surname":"аПаВаАаПаВаА","name":"аПаАаВаПб‹","patronymic":"аВаПб‹аВ","pc":"d"}

Уже лучше, но проблема с кодировкой.

PHP:
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");

Убрал, т.к. с ней совсем ничего не выводило.

Проблема решена назначением кодировки ut8 http серверу по умолчанию.
 
Последнее редактирование модератором:
Сверху