Odczyt pliku ini z serwera, najlepiej poprzez http

Odpowiedz Nowy wątek
2011-08-21 14:52
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;
}
 
edytowany 1x, ostatnio: Dawid-Neo, 2011-08-21 14:52
W adresach uniksowych, czy tam webowych nie trzeba omijać znaku / znakami //, tak jak to ma się w przypadku domyślnego separatora ścieżek w windowsie: \, bo \ służy do poprzedzenia znaku specjalnego. - Razi91 2011-08-21 15:21

Pozostało 580 znaków

2011-08-21 14:59
Kumashiro
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.

Chyba źle zrozumiałeś pytanie ;) Pewnie ma dostęp do serwera. - Patryk27 2011-08-21 15:41
Jakie pytanie? - Kumashiro 2011-08-21 17:39

Pozostało 580 znaków

2011-08-21 15:40
0

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


Pozostało 580 znaków

2011-08-21 15:55
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.

edytowany 1x, ostatnio: Dawid-Neo, 2011-08-21 15:56

Pozostało 580 znaków

2011-08-21 16:04
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.


edytowany 3x, ostatnio: Patryk27, 2011-08-21 16:04

Pozostało 580 znaków

2011-08-21 17:27
0

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

Pozostało 580 znaków

2011-08-21 17:47
Kumashiro
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.

Połączy się - jeśli jest na tym samym serwerze. A z wypowiedzi autora wątku nie wynika jasno gdzie się znajduje... - vpiotr 2011-08-22 10:11
Z wypowiedzi autora (oraz tytułu wątku) wynika, że chce on pobierać plik po HTTP. Nie ma znaczenia gdzie on się znajduje. Nawet jeśli serwer stoi na jego desktopie (co już samo w sobie jest bzdurą), to problem wciąż dotyczy przesyłania danych protokołem sieciowym. - Kumashiro 2011-08-22 10:53

Pozostało 580 znaków

2011-08-22 10:24
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...

Pozostało 580 znaków

2011-08-22 10:48
Kumashiro
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.

Potencjalna luka w skrypcie nie jest wadą metody tylko konkretnego skryptu. Luki są w każdym sofcie - także w serwerach WWW... - vpiotr 2011-08-22 10:56
Luka w skrypcie jest bardziej prawdopodobna. Jeśli istnieje luka w serwerze, jest większe prawdopodobieństwo, że zostanie załatana. - Kumashiro 2011-08-22 14:02

Pozostało 580 znaków

2011-08-22 10:54
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. ;)


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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