TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[php] znów sobie nie radzę trochę - jak "wykonać"/includować/ skrypt na innym serwerze? , kubazzz 19/11/08 02:50 tzn mam plik
wyswietlaj.php
ktorym ma cos takiego
if ($gowno == "smierdzi")
{
include("napisy.php");
}
else
{
include("strona.pl/komunikat.php");
}
Chodzi tylko o to, żeby tamten skrypt się wykonał tak jakby był wywołany z zewnątrz, nie trzeba mu niczego przekazywać, nie trzeba mu dawać żadnych danych, on sam sobie radzi.
Coś się pogubiłem jak to zrobić bo normalne include nie działa.
Warning: include() [function.include]: Failed opening 'http://.php' for inclusion (include_path='.:/:/usr/php/pear') in wyswietlaj.php on line 23SM-S908 - for U , Deus ex machine 19/11/08 06:34
http://pl2.php.net/include/
"If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using a URL (via HTTP or other supported wrapper - see List of Supported Protocols/Wrappers for a list of protocols) instead of a local pathname. If the target server interprets the target file as PHP code, variables may be passed to the included file using a URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script. ""Uti non Abuti" - no ale to można tylko w php.ini zmienić , kubazzz 19/11/08 06:42
nie da się tego obejść?SM-S908
- kubazzz, daruj sobie , Grocal 19/11/08 10:19
Po Twoich dotychczasowych postach o PHP widac, ze zachowujesz sie jak robocik, ktory idzie do przodu prosto na sciane. Odbija sie i znowu na sciane i tak w nieskonczonosc.
Zastanawiales sie kiedys nad tym, zeby:
a) czytac ksiazki do PHP
b) przegladac gotowe projekty i analizowac je
c) czytac dokumentacje
d) uzywac google'a
e) ekspertymentowac z kodem?
Pytasz sie, czy opcje ustawiana tylko w php.ini da sie obejsc. Logika podpowiada, ze nie da sie (chyba, ze masz dostep do php.ini). Ale zalozmy, ze uda Ci sie umozliwic include'owanie plikow po protokole http. Wiesz co bedzie nastepne? "Dlaczego mi to nie dziala?" Okaze sie bowiem, ze plik strona.pl/komunikat.php jest wczesniej parsowany a dopiero wynik tego parsowania jest include'owany do Twojego kodu. Z tekstu wynika jednak, ze interesuje Cie jedynie wynik tej strony. Po cholere wiec ten include? Mozna pobrac te tresc na miliard innych sposobow - wget, curl, fopen a moze samo przekierowanie na te strone, wyswietlenie w iframe, itp. Kubazzz, blagam Cie - MYSL! Kombinuj, ekpserymentuj, ucz sie. Wiem, ze kazdy kiedys zaczynal bez wzgledu na dziedzine w jakiej sie specjalizuje, ale mi osobiscie wydaje sie, ze pytanie na forum, to ostatnia deska ratunku uruchamiana kiedy inne metody zawiodly. Twoje dotychczasowe problemy mozna bylo rozwiazac przejrzeniem dokumentacji czy prostymi metodami debugowania (glupie var_dump wystarczy).Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - kubazzz, nie odpuszczaj! , Norton 19/11/08 10:40
Po Twoich dotychczasowych postach o PHP widac, ze zachowujesz sie jak robocik, ktory idzie do przodu prosto na sciane. Odbija sie i znowu na sciane i tak w nieskonczonosc.
Ale w końcu ją rozwalisz albo poprostu przeskoczysz. Najważniejsze żeby nie odpuszczać.
Większość opcji php.ini (jeśli admin nie ma manii prześladowczej) da się zmienić.
Na początku próbuj zmienić w pojedynczym skrypcie przez ini_set()
http://pl2.php.net/ini_set
http://pl2.php.net/manual/en/ini.php#ini.list
Jak nie da rady to przez .htaccess
http://www.webowe.pl/htaccess-podstawy-czesc-ii/
I najważniejsze. Nie słuchaj Grocala!Zmień swój podpis na Boardzie
maks 100 znaków, 3 linie,
zabroniony spam oraz reklama - I jeszcze jedno , Norton 19/11/08 10:42
inkludowanie plików z innego serwera nie jest dobrym pomysłem.
Skopiuj sobie skrypt na swój serwer i odpalaj lokalnie.Zmień swój podpis na Boardzie
maks 100 znaków, 3 linie,
zabroniony spam oraz reklama - właśnie nie mogę skopiować , kubazzz 20/11/08 03:55
postawiono przede mną zadanie, które wydaje się niewtajemniczonym banalne, mi też się wydawało. ale jak się okazuje, przy ograniczonych możliwościach wpływania na konfiguracje mysql/php, jest to skomplikowane.SM-S908
- Include czy wykonanie skryptu , pachura 19/11/08 11:38
Tak jak Grocal slusznie napisal, musisz zadac sobie pytanie:
- czy chcesz wciagnac kawalek kodu PHP z cudzej strony do wlasnego skryptu i go wykonac? (Malo prawdopodobne, idiotyczne)
- czy chcesz po prostu wykonac skrypt na cudzym serwerze, tak samo jakby ludzki uzytkownik wpisal jej adres w browserze ?
Include/Require sluzy do pierwszego, zas drugie zrobilbym ukrytym IFRAME-m (zakladajac ze nie interesuje Cie wynik dzialania tego cudzego skryptu).- jak chcesz go wykonać jak z zewnątrz , Wedrowiec 19/11/08 11:47
a nie includować to fopen / curl"Widziałem podręczniki
Gdzie jest czarno na białym
Że jesteście po**bani" - Z tym ze , pachura 19/11/08 11:54
Skoro URL wrappers sa zablokowane (w includzie Kubazowi nie zadzialaly), to i w fopenie bedzie kicha. Zostaje CURL (niekoniecznie zainstalowany) albo <IFRAME SRC="http://www.satan.com/..."></IFRAME>.
- Miszczu poczytaj o CiURLaniu, to rozwiąże Twój problem. , Mcmumin 19/11/08 13:23
BTW. sorki, jakoś nie mogę się zebrać do części drugiej "poradnika", ale obiecuję poprawę :) Po prostu jak wracam z pracy to mój słodziak nie pozwala mi pracować i zamiast grzebać w pehapie ganiam z myszą :)- wyślij mi chociaż jego foty , kubazzz 19/11/08 18:51
bo szczerze mówiąc php to męczę z konieczności, a tego bandziora to z przyjemnością bym zobaczył:DSM-S908
- trochę wyjaśnienia , kubazzz 19/11/08 19:03
z tym PHP to u mnie jest tak, że "nie chcem ale muszem". Tzn chcę skończyć co zacząłem. Nie mam specjalnie większego biznesu w tym, żeby opanowywać wszystko. Staram się ogarnąć to co potrzebuję. Analizuję cudze skrypty, korzystam z googla, z php.net, ale zrozumiałe jest, że wielu rzeczy nie rozumiem od razu, a czasem wystarczą trzy zdania, żeby mi to wyklarować.
A co do konkretnego problemu.
To jest powiązane z tym poprzednim problemem z dostępem do bazy danych. Nie dało się uzyskać dostępu do bazy danych na innym serwerze, odczytać ją można Tylko skryptem na tym samym serwerze.
1. jest strona.pl
2. która ma plik wyswietlaj.xml, w tym pliku zapisany jest id i zrodlo [baza] artykulu
3. strona.pl/wyswietlaj.php czyta sobie tego xml'a i sprawdza czy artykul jest ze strona.pl czy z baza.pl
4. jesli jest ze strona.pl to includuje display-strona.php, ktory jest niezaleznym skrypytem i czyta tego xml samodzielnie, i wywala sam artykul, reszta tzn headersy i cala pozostala zawartosc podstrony jest w strona.pl/wyswietlaj.php
I to działa wyśmienicie.
5. jestli artykul jest z baza.pl to wyswietlaj.php powinno odpalic tylko ten skrypt display-baza.php na serwerze baza.pl, w sensie wziac tylko to co ona tam wyrzuci. bojak uzytkownik wpisze baza.pl/display-baza.php to dostanie tresc [sam artykul, bez headersow itd] i tak ma byc.
Problem jest taki, ze sa dwa serwery. Ot co.. XML'a z innego serwera mozna przeczytac, ale tutaj mam problem.
WIEM, ze to nie jest "prawdziwe" includowanie i mi na kodzie nie zalezy.
Poczytam co mi tu zaproponowaliście, pewnie coś wyjdzie.
A swoją drogą nie można być sceptycznym bo mcmumin pozornie walczył z wiatrakami mojej niewiedzy, ale sporo mi pomógł i połapałem się w wielu kwestiach.SM-S908 - i dalej nie działa i dalej nie rozumiem - allow_url_fopen TRUE , kubazzz 20/11/08 04:16
$plik = fopen("http://baza.pl/plik.php","r");
var_dump($plik);
$tresc = fread($plik, filesize($plik));
echo $tresc;
echo "\n";
echo ini_get('allow_url_fopen')l
i co dostaje?
resource(4) of type (stream)
Warning: filesize() [function.filesize]: stat failed for Resource id #4 in /wyswietlaj.php on line 39
Warning: fread() [function.fread]: Length parameter must be greater than 0 in /wyswietlaj.php on line 39
1SM-S908 - widzisz... 30 sekund czytania dokumentacji , Grocal 20/11/08 09:06
1. filesize dziala tylko wtedy, gdy dla danego wrappera (w uproszczeniu - protokolu) dziala funkcja stat. Dla plikow pobieranych protokolem http(s) stat nie dziala [1], a wiec nie zadziala filesize.
2. Odczytujesz takze zle. Po pierwsze - dlaczego nie sprawdzasz, czy handler otwartego pliku jest poprawny? Po drugie - protokol http(s) wcale nie musi podawac Tobie od razu calej ilosci danych. Znowu przejrzenie dokumentacji i nawet jest przyklad jak odczytywac dane z wrappera http(s) z wykorzystaniem fread [2] (ostatni przyklad). Poza tym lepiej uzywac file_get_contents [3], jezeli potrzebujesz calego pliku w formie ciagu znakow.
[1] http://pl2.php.net/manual/en/wrappers.http.php
[2] http://pl2.php.net/fread
[3] http://pl2.php.net/...nction.file-get-contents.phpNa pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - naprawdę, z ręką na sercu mówię i na moje dyski z gołymi lachonami przysięgam , kubazzz 20/11/08 09:22
że próbowałem to ogarnąć, ale się pogubiłem. Dokumentacja nie jest krok po kroku, ja nie do końca rozumiem co się dzieje często i nie trafiam w pewne miejsca, php.net jest pełne odsyłających do siebie nawzajem odnośników. Ja bazowałem na pewnym przykładzie [drugim, binary] podanym w opisie funkcji fread().
Wiem, że się irytujesz, ale kurde zanim ja to wszystko bym przekopał i połapał to minie dużo czasu.
Ty napisałeś już coś co mi wyjaśnia rzecz od razu i rzuca inne światło na funkcjonowanie tego.
A dla mnie resource(4 albo 7 bo różnie się pojawia dla tego samego pliku) type of stream znaczy tyle co WTF?.
;))
Ale bless you for helping me, niech Ci Bozia wynagrodzi w dolarach.
I niech błogosławiony będzie Mcmumin bo w końcu użyłem CURL'a i zadziałało [bo akurat opis tej funkcji zrozumiałem samodzielnie na php.net].
Inna rzecz, że jestem na psychotropach i żyję w trybie totalnie chaotycznym i niezdrowym i wydajność mojego umysłu jest słabsza, tzn często się łapię na głupich pomyłkach, np kiedy uaktualniam pliki na serwerze nie w tym folderze co trzeba i się dziwię, że mi to dalej nie działa w przeglądarce...
zacytuję film polski "każdy mój dzień składa się z jakiś takich gówien"..SM-S908 - ja sie nie irytuje , Grocal 20/11/08 09:55
Irytuja mnie jedynie bledy ortograficzne i dwie czynne kasy z czterdziestu dostepnych w hipermarkecie :) Glad I could help...Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie!
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|