john 12 Kwietnia 2019 12 Kwietnia 2019 Witajcie bardzo serdecznie. Napisałem taki oto skrypt w php: $uid = 11; $bids = "test"; $path = 'https://strona.pl/'; $file_path = $path.'users/'.$uid.'.txt'; $file_handle = fopen($file_path, 'w'); if($file_handle) { echo 'Plik został otwarty'; fwrite($file_handle, $bids); } else { echo 'Błąd :('; } fclose($file_handle); Komunikat o błędzie: fopen(dokładny adres pliku): failed to open stream: HTTP wrapper does not support writeable connections in ŚCIEŻKA on line 22 Jestem w 100% pewny, że fopen nie pozwala mi użyć dokładnego adresu strony, bo jeśli użyję ścieżki na zasadzie users/'.$uid.'.txt', to działa. Jednakże pojawia się taki problem, że muszę podać dokładny adres, ponieważ plik będzie wykonywany na każdej podstronie. Dodam, że allow_url_fopen mam włączone na serwerze. Szukałem w wujku google, jednakże nie mogłem znaleźć rozwiązania problemu. Z góry dziękuję za wszelką pomoc :). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 12 Kwietnia 2019 12 Kwietnia 2019 fwrite() działa w obrębie serwera i wymaga podania ścieżki lokalnej. To co chcesz zrobić (użyć ścieżki z domeną) zezwalałoby na zapisanie / nadpisanie dowolnego pliku, nawet jeżeli nie byłby Twój. A to już poważna luka bezpieczeństwa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
john 12 Kwietnia 2019 Autor 12 Kwietnia 2019 A istniałaby jakaś inna możliwość by bezpiecznie wczytać/nadpisać treść pliku tekstowego? Bardzo mi zależy na tym, by nie używać do tego bazy danych, a pliki lokalne w zupełności mi wystarczą do tego, co chcę zrobić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 12 Kwietnia 2019 12 Kwietnia 2019 No możesz nadal używać fopen, ale jako ścieżkę musisz podać ścieżkę katalogów, a nie z URLem. Opisz swój projekt i to co dokładnie chcesz zrobić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
john 12 Kwietnia 2019 Autor 12 Kwietnia 2019 Korzystam z forum na IPS. Planuję zorganizować konkurs, który będzie polegał na znalezieniu wszystkich zajączków wielkanocnych. Znalezione zajączki zapisywałyby się w users/ID_UŻYTKOWNIKA.txt i byłby wymienione po przecinku. O ile z wczytywaniem danych nie ma problemu (funkcja ajax w jquery), tak z nadpisaniem ich/stworzeniem nowego pliku już jest. Zajączki (div o odpowiedniej klasie i unikalnym id) byłyby poukrywane w tematach, działach, podstronach, stąd konieczność podania dokładnej ścieżki aby zapisać te dane. Zapis odbywałby się poprzez odwołanie do pliku upload.php z użyciem ajaxa i metody post (przesyłane dane to id użytkownika oraz id znalezionych zajączków w formie stringa wypisane po przecinku). Nie chcę używać do tego bazy danych, ponieważ już kiedyś mieliśmy włam na forum, nie znam się na pisaniu pluginów do ipsa, a nie chciałbym tworzyć potencjalnej furtki, która to umożliwi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 12 Kwietnia 2019 12 Kwietnia 2019 No ale skoro każdy zajączek będzie mieć unikalne ID, to po co Tobie pełna ścieżka? Do danych z POSTa, które będziesz przesyłać do pliku PHP, dopisz zmienną np. 'page' i przypisz do niej: $(location).attr('href'); Jak ktoś będzie chciał 'się pobawić' i podmieni URL w request, to szybko to wyłapiesz No i ID użytkownika pobieraj już w pliku PHP - IPS ma pewnie zmienną globalną odpowiedzialną za to. Ale nie pisałem żadnej wtyczki pod IPS, więc nie za bardzo pomogę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
john 12 Kwietnia 2019 Autor 12 Kwietnia 2019 No ale nawet jeśli zrobiłbym to na zasadzie sprawdzania adresu url to te dane muszę gdzieś zapisać i tutaj zamyka się błędne koło, bo muszę je zapisać do pliku tekstowego. Potrzebuję pełnego adresu ponieważ załóżmy jestem na http://strona.pl/ Klikam w zajączka i chcę wysłać ajaxem dane do pliku strona.pl/system/upload.php aby zaktualizować system/users/id.txt o kolejne id. W tym przypadku jeśli zajączek byłby na stronie głównej to taki zapis $path = '../users/id.txt'; powinien zadziałać (jestem na telefonie, nie upewnię się w 100%, ale raczej zrozumiesz o co chodzi). No dobra, ale wchodzę na http://strona.pl/temat/id Powyższy zapis nie zadziała, bo ajax uzna, że users/id.txt znajduje się w katalogu strona.pl/temat. Dlatego potrzebuję dokładnego adresu strony do głównego katalogu, aby móc działać na pozostałych podstronach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-n3veR 12 Kwietnia 2019 12 Kwietnia 2019 No to Ci piszę przecież, że path pobieraj z POSTa... Tu masz cały przewodnik: IPS4 Guides - Invision Community Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
john 16 Kwietnia 2019 Autor 16 Kwietnia 2019 Przepraszam, małe zaćmienie umysłu . Bardzo dziękuję za pomoc, problem rozwiązany ;). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kontynuuj dyskusję
Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.