Witam, mam napisaną aplikację w PHP. Zawiera ona 2 funkcje form (Pole tekstowe i button) oraz główny kod PHP który pobiera dane z internetu i wyświetla zdjęcie i text. Teraz chciałbym to przenieść do aplikacji tylko za nic nie wiem jak. Czy są do tego jakieś programy?
Z tego co wiem to nie ma możliwości konwersji z PHP to C++. Musisz niestety przepisać kod samodzielnie
Jeśli chodzi o C++ dopiero zaczynam naukę i nie wiem jak napisać to:
$data=@json_decode(file_get_contents('http://adresstrony.pl/'.$_POST['id']),true);
$_POST[‘id’] pobiera mi dane z pola tekstowego
a potem wykorzystać pobrane dane w kodzie.
Hmm… C++ jako tako nie ma parsera JSONa w sobie więc musisz poszukać jakiejś gotowej biblioteki do tego
To było przygotowane pod PHP 5.3. Może istnieje jakiś inny sposób importu danych? Po wczytaniu strony wyświetla mi się to tak:
{
"first_name": "Imie",
"last_name": "Nazwisko",
"image": "nazwa zdjęcia"
}
Zależy - jeśli ma to być oparte np na WinForm to będzie to bardzo prosto pobrać informacje z pól tekstowych
HipHop for PHP ale to już wyższa szkoła jazdy
A co byś zrobił gdybyś nie miał w php json_decode? Zapewne użył regex lub ręcznego wyszukiwania. C++11 ma regexy które co prawda mi nie działają pod mingw32-g++(kompiluje się wszystko). Trzeba używać <boost/regex.hpp> (niestandardowe), lub ręcznego wyszukiwania. Przykład z ręcznym wyszukiwaniem:
#include <iostream>
#include <string>
using namespace std;
//odpowiednik function
string jsonpseudo(string szukane,string body)
{
szukane='"'+szukane+'"'+": "+'"';
int a=body.find(szukane);
if (-1==a) return "NIEMA";
body=body.substr(a+szukane.length());
a=body.find('"');
if (-1==a) return "NIEMA";
body=body.substr(0,a);
return body;
};
int main()
{
string body=R"raw(
{
"first_name": "Imie",
"last_name": "Nazwisko",
"image": "nazwa zdjęcia"
}
)raw";
cout << "last_name" " = "<< jsonpseudo("last_name",body)<<endl ;
cout << "first_name" " = "<< jsonpseudo("first_name",body)<<endl ;
cout << "image" " = "<< jsonpseudo("image",body)<<endl ;
cout << "sex" " = "<< jsonpseudo("sex",body)<<endl ;
return 0;
}
Sformatowane: http://pastebin.com/WMvzcxaV
W C++ nie ma też wczytania pliku z internetu. Musisz pod Windows użyć bibliotek WinInet, libcurl lub WinSocks.
Nie ma. W tytule było o C++ I VB. Po co Ci akurat te języki?
Możesz też swoją aplikację webową przerobić na exe za pomocą PHP Desktop https://code.google.com/p/phpdesktop/ . Nie próbowałem, ale chyba będzie to najlepsze rozwiązanie.
Jak chcesz robić aplikacje dekopowo-okienkowe w php to masz PHP-Qt i wxPHP.
C++ nie ma w standardzie gui, więc musisz znaleźć sobie jakąś bibliotekę która będzie wyświetlała i obsługiwała przyciski i strony www.
W Windows froms (.NET) do wyświetlania strony w okienku własnej aplikacji służy classa WebBrowser
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx
W win32 używało sie:
http://msdn.microsoft.com/en-us/library/aa752127(v=vs.85).aspx
http://www.codeproject.com/Articles/3365/Embed-an-HTML-control-in-your-own-window-using-pla
W qt używa się QWebView/QWebPage (za pomocą webkita)
http://qt-project.org/doc/qt-4.8/examples-webkit.html
Oczywiście qt ma też obsługe json https://qt-project.org/doc/qt-5.0/qtcore/json.html
Co byś nie wybrał będzie źle. Lepiej żebyś dobrze opanował c++ trenując na aplikacjach konsolowych zanim weźmiesz się za programy okienkowe.
Co do kodu php to C++ ma uruchamianie innych programów.
#include <stdlib.h>
system ("dir");
Kod php można uruchomić z linii poleceń:
php.exe -f upload.php >> wynik.txt
czyli
system ("php.exe -f upload.php >> wynik.txt");
Potem w C++ odczytujemy plik wynik.txt (lepsze by było użycie named pipe).
Oczywiście musiałbyś skopiować php.exe, wszystkie jego biblioteki i pliki. U mnie katalog php zajmuj jakieś 90 mega.
Z pewnością można zamiast php.exe użyć biblioteki php5ts.dll.