С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 21

Данные из приложения в PHP

10.02.2011, 05:15. Показов 2810. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Возникла такая задача:
Существует ИС написанная с использованием C++ Builder. Сейчас решили планомерно переводить ее на web. Так вот вопрос такой - Как передать данные из проги в php? А именно нужно передать логин и пароль, т.е. юзер логинется в старой системе и, например, по нажатию по кнопке должен открыться браузер с нужной ссылкой и он(юзер) автоматом должен там залогинется.

Есть ли какое то решение данной задачи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2011, 05:15
Ответы с готовыми решениями:

Есть AJAX код, который отправляет POST данные в php. Как их принять в php?
Всем привет! AJAX код отправляет post данные в php файл. Как принять эти post данные в php? Вот AJAX: ...

Как в php сделать поиск? Вводить данные, нажимать на кнопку, скрипт по базе ищет данные и выводит
Можно ли в php сделать поиск? Вводить данные например, нажимать на кнопку и он по базе ищет эти данные и выводит И подскажите...

Разработка приложения "Столбчатая диаграмма": заполнить данные DataGridView загрузить данные в программу
Пожалуйста, мне нужно заполнить данные DataGridView для диаграммы и загрузить данные в диаграмму.

10
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
10.02.2011, 09:31
Код на c++ должен передать логин и пароль php скрипту, а уже php создаст сессию и залогинет пользователя (в случае верного ввода данных). Запрос можно отправить методами post или get.

Примерно так отправляется POST-запрос:
C++
1
2
3
4
5
6
idHTTP1 * http = new idHTTP1();
TStringList * lst = new TStringList();
lst->Add("comp_login");
lst->Add("login");
lst->Add("password");
http->Post("http://example.com", lst);
А php обрабатывает этот запрос:
PHP
1
2
3
4
5
6
7
8
9
10
<?php
     if($_POST['comp_login'])
     {
          $user = mysql_escape_string($_POST['user']);
          $password = mysql_escape_string($_POST['password']);
          /*
          *Действия с логином и паролем
          */
     }
?>
2
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 21
10.02.2011, 12:34  [ТС]
Спасибо большое!
Теперь знаю в какую сторону смотреть.

Добавлено через 1 час 15 минут
С этим все понятно. Проблема вот какая теперь: как же все таки по нажатию на кнопку, открыть браузер (по умолчанию) и перенаправить его на нужный url. Это вообще возможно? Т.е. браузер-то открыть не сложно, а вот отправить его на нужный адрес...
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
10.02.2011, 14:27
C++
1
ShellExecute(Handle, "open", "http://www.google.com/webhp?hl=en&tab=iw", 0, 0, SW_SHOWNORMAL);
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
10.02.2011, 18:04
Поправку сделаю, забыл значения присвоить POST-запросам:
C++
1
2
3
lst->Add("comp_login=true");
lst->Add("login=name");
lst->Add("password=1234");
Добавлено через 12 минут
Если через ShellExecute(), то придётся передать get запрос.

C++
1
2
3
4
ShellExecute(Handle, "open", "http://example.com/?comp_login=true&user=" + userName + "&password=" + password, 0, 0, SW_SHOWNORMAL);
/*
*userName и password - переменные типа String, в которых содержатся данные
*/
PHP
1
2
3
4
5
6
7
8
9
10
<?php
     if(isset($_GET['comp_login']))
     {
          $user = mysql_escape_string($_GET['user']);
          $password = mysql_escape_string($_GET['password']);
          /*
          *Действия с логином и паролем
          */
     }
?>
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
10.02.2011, 19:23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    TStringList *list = new TStringList;
    list->Add("login=login");
    list->Add("password=password");
    String temp_hash;
    /*
    ПУСТЬ php скрипт выдает временный хеш (разумеется не связанный с паролем или логином),
    например от времени его генерировать и с жизнью 5 сек 
    и переменная temp_hash будет иметь вид "827ccb0eea8a706c4c34a16891f84e7b"
 
    если login\pwd не верные то вернуть строку "bad_login_or_pwd"
    */
    temp_hash = IdHTTP1->Post("http://site.ru/newl.php", list);
 
    if(temp_hash != "bad_login_or_pwd")
    {
        temp_hash.Insert("http://site.ru/myphpscript.php?comp_login=true&thash=", 0);
        ShellExecute(Handle, "open", temp_hash.c_str(), 0, 0, SW_SHOWNORMAL);
    }
    else
    {
        ShowMessage("Bad LOGIN or PASSWORD");
    }
 
    delete list;
    list = NULL;

примерно так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
     if(isset($_GET['comp_login']))
     {
          $user = mysql_escape_string($_GET['login']);
          $password = mysql_escape_string($_GET['password']);
          // обработка логин\пароль
 
          // if все правльно то 
          // {
          //      генерируем хеш, заносим в базу, и echo hash;
          // }
          // else
          // {
          //      echo "bad_login_or_pwd";
          // }
     }
?>
примерно такой же алгоритм как при подтверждении email при регистрации
только юзер не идет на мыло и не кликает по ссылке
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
10.02.2011, 19:26
Одна проблема, не безопасно через get логинеться... URL сохранится в истории.
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
10.02.2011, 19:57
Цитата Сообщение от VtaMC Посмотреть сообщение
Одна проблема, не безопасно через get логинеться... URL сохранится в истории.
так логинется через пост

Добавлено через 2 минуты
ааааа понятно, сам код вы не смотрели, только увидели isset($_GET['comp_login'])
да, забыл поправить

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
     if(isset($_POST['comp_login']))
     {
          $user = mysql_escape_string($_POST['login']);
          $password = mysql_escape_string($_POST['password']);
          // обработка логин\пароль
 
          // if все правльно то 
          // {
          //      генерируем хеш
          //      заносим в базу
          //      echo hash;
          // }
          // else
          // {
          //      echo "bad_login_or_pwd";
          // }
     }
?>

отправляес скрипту ПОСТ запрос с логином\паролем
если они соответствуют условиям то
генерируем хеш (заносим в базу) и делаем ему жизнь 5 сек, то есть подобрать - нереально, случайно попасть тоже не вохможно так как по прошествии 5 секунд хеш онулируется
посылаем юзера поссылке
как юзер перешел по ссылке вешаем ему кукисы, удаляем хеш из базы

банальная форма логина с промежуточной страницей
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
10.02.2011, 20:06
Gremlin, дак вы отправляете данные get запросом, а принимаете post. =)
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
10.02.2011, 20:13
VtaMC,
C++
1
2
3
4
5
6
    TStringList *list = new TStringList;
    list->Add("login=login");
    list->Add("password=password");
    String temp_hash;
    temp_hash = IdHTTP1->Post("http://site.ru/newl.php", list); // пост
    ..........
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
10.02.2011, 20:26
Gremlin, а, вы про это... Просто отправка данных в ShellExecute() идёт методом post.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2011, 20:26
Помогаю со студенческими работами здесь

Html и PHP... Не пойму как считать данные с html форм в PHP.
Прошу не ругаться. Но что то я не пойму. Ну например в PHP указывают файл: &lt;?php $file = 'example.txt'; ?&gt; а что надо...

данные приложения
Есть некоторые данные приложения типа картинок и текстовых файлов, необходимо что бы они устанавливались автоматически вместе с...

Данные приложения в Setting
Доброго времени суток! Нужно сохранить несколько чисел, чтобы при повторном открытии данные снова были. Попробовал такой метод ...

Безопасность PHP приложения.
Добрый вечер. Настал тот день и тот час, когда мою систему на PHP нужно выложить в сеть. Система возьмет на себя довольно...

Логика приложения на PHP
Здравствуйте! У меня есть класс сайт и его методы: 1. Прикрепление алиасов (доменов) к сайту 2. Открепление доменов (алиасов) от сайта ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru