Есть несколько подходов для передачи данных из PHP скрипта в C# приложение (exe). Вот некоторые из них:
1. **Аргументы командной строки:**
Можно передать логин пользователя как аргумент командной строки при запуске exe файла. В PHP это выглядит следующим образом:
```php
$login = 'Пользователь123'; // Получаем логин пользователя
// Запуск exe-файла с аргументом
exec("путь_к_программе/программа.exe " . escapeshellarg($login));
```
Код на стороне C# для чтения аргументов командной строки:
```csharp
static void Main(string[] args)
{
if (args.Length > 0)
{
Console.WriteLine($"Ваш логин: {args[0]}");
}
}
```
2. **Файлы:**
PHP скрипт может записать данные в файл, а приложение на C# прочитать их оттуда:
```php
$login = 'Пользователь123'; // Получаем логин пользователя
file_put_contents('login.txt', $login);
exec("путь_к_программе/программа.exe");
```
Код на стороне C# для чтения из файла:
```csharp
static void Main()
{
string login = File.ReadAllText("login.txt");
Console.WriteLine($"Ваш логин: {login}");
}
```
3. **Сетевое взаимодействие:**
Можно создать простое сетевое взаимодействие, в котором PHP будет отправлять данные на C# сервер.
Пример PHP клиента:
```php
$login = 'Пользователь123';
$fp = fsockopen("tcp://127.0.0.1", 12345, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, $login);
fclose($fp);
}
```
Пример C# сервера:
```csharp
static void Main()
{
TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 12345);
server.Start();
Console.WriteLine("Ожидание подключений...");
TcpClient client = server.AcceptTcpClient();
using (NetworkStream stream = client.GetStream())
using (StreamReader reader = new StreamReader(stream))
{
string login = reader.ReadLine();
Console.WriteLine($"Ваш логин: {login}");
}
server.Stop();
}
```
4. **Среда (Environment Variables):**
Используйте переменные среды для передачи информации между скриптами.
Пример PHP:
```php
$login = 'Пользователь123';
putenv("USER_LOGIN=$login");
exec("путь_к_программе/программа.exe");
```
Пример C#:
```csharp
static void Main()
{
string login = Environment.GetEnvironmentVariable("USER_LOGIN");
Console.WriteLine($"Ваш логин: {login}");
}
```
Какой способ выбрать зависит от конкретных требований и настроек вашего приложения. Первый способ с аргументами командной строки является одним из самых простых и часто используемых.