Odczyt pliku ini z serwera, najlepiej poprzez http

0

Chciałbym umieścić na serwerze plik ini, który byłby odczytywany poprzez program napisany w c++.

Miało by to być coś na kształt:

#include <iostream>
#include <Windows.h>
#define buf_size 256

using namespace std;

int main()
{
   int wartosc = 0;
   wartosc = GetPrivateProfileInt("sekcja1", "wartosc1", 999999, "http:////serwer//pliki//plik.ini");
    cout << wartosc << endl << endl;

   system("pause");
   return 0;
}
1
Dawid-Neo napisał(a)

Chciałbym umieścić na serwerze plik ini, który byłby odczytywany poprzez program napisany w c++.

Każdy ma w życiu jakieś marzenia. Ja np. chciałbym sobie kupić Lamborghini Aventador... Oczywiście bym nim nie jeździł.
Jeśli chcesz umieścić plik na serwerze, to pogadaj raczej z administratorem tego serwera, a nie z nami. Jeśli koleś jest spoko, to z pewnością Ci na to pozwoli.

0

Pobierasz plik na komputer i odczytujesz normalnie, jako zwykły plik INI.
Co w tym takiego trudnego? :P

0

Serwer jest mój, nie o to chodzi :)

Bardziej bym chciał aby program odczytywał plik bezpośrednio z serwera - tak właśnie aby podać mu tylko gdzie znajduje się plik ścieżką tak jak zrobiłem to w przykładzie.

To że plik można pobrać, odczytać i usuną to też wiem, ale chodzi mi o jakiś sposób podania mu ścieżki do pliku i aby stamtąd aby go odczytał, bez pobierania.

0

W takim razie należałoby napisać skrypt PHP*, który będzie obsługiwał odczytanie pliku i wyświetlenie z niego danych (PHP ma tam swoje rzeczy do INI).
Np: program łączy się ze skryptem i wywołuje takie coś: ini.php?file=plik.ini&section=Hello&param=ReadThis, plik ini.php wyświetla wartość "ReadThis", a program pobiera te dane.
plik.ini może wyglądać np.tak:

[Hello]
ReadThis=Elo

Wtedy skrypt "ini.php" wywołany z w/w parametrami wyświetli "Elo".
Chyba rozumiesz? ;)
Ale łatwiej jest ten plik .ini pobrać; no chyba, że ten zajmuje on sporo miejsca...
*oczywiście są także inne języki pisana stron (dobre określenie?). Przyjąłem, że masz na serwerze PHP.

0

Ale takie pytanie mam: co jest bardziej "eleganckie"? Taki skrypt czy pobrać plik i odczytać?

0
Dawid-Neo napisał(a)

Bardziej bym chciał aby program odczytywał plik bezpośrednio z serwera - tak właśnie aby podać mu tylko gdzie znajduje się plik ścieżką tak jak zrobiłem to w przykładzie.

Jeśli funkcja GetPrivateProfileInt() nie obsługuje URLi, to musisz sobie napisać funkcję, która po HTTP pobierze dane pliku INI, zapisze go lokalnie i np. zwróci Ci ścieżkę do lokalnego pliku, której użyjesz jako argumentu.

Dawid-Neo napisał(a)

To że plik można pobrać, odczytać i usuną to też wiem, ale chodzi mi o jakiś sposób podania mu ścieżki do pliku i aby stamtąd aby go odczytał, bez pobierania.

Jak chcesz to zrobić? Pomyśl przez chwilę. Plik leży na serwerze. Żeby odczytać jego zawartość musisz go pobrać. Przecież funkcja nie połączy się "telepatycznie" z dyskiem na serwerze. Jeśli GetPrivateProfileInt() nic nie wie o protokole HTTP, to nie ma pstryczka, przełączenie którego nagle spowoduje że coś zacznie działać tak jak Ty chcesz. Musisz dopisać to, czego Ci brakuje. Na tym polega programowanie.

0
Dawid-Neo napisał(a)

Ale takie pytanie mam: co jest bardziej "eleganckie"? Taki skrypt czy pobrać plik i odczytać?

skrypt jest bezpieczniejszą formą, bo nie musisz udostępniać katalogu i plik może być gdziekolwiek, nawet generowany na podstawie bazy SQL...

0

Skrypt absolutnie nie jest bezpieczniejszy. Jakakolwiek luka w skrypcie lub silniku go napędzającym (np. moduł PHP) naraża cały serwer. Wystawienie jednego pliku spowoduje, że będzie on serwowany jako obiekt statyczny. Nie trzeba też udostępniać całego katalogu. Jeśli nie ma powodu do ograniczania dostępu do określonych sekcji pliku, robienie dynamicznego frontendu do niego jest pozbawione sensu.

0

Zgadzam się.
O ile nie jest to rządowy tajny plik o strefie 51, to jego pobranie i odczytanie zawartości jest najlepszym wyjściem (a zarazem najłatwiejszym).
Jeżeli natomiast chcesz, aby tylko twoje programy mogły go pobierać, to możesz zrobić skrypt PHP, który jest wyżej przeze mnie opisany i dodać dodatkowe pole, np.hasło, czy coś innego. Ale j/w - najlepszym wyjściem będzie po prostu pobranie go. ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0