ďťż

[PHP] Include z innego serwera

       

Podstrony


telcocafe

Czy da się w PHP zaincludowac plik z innego serwera? Mam adsense na pięciu stronach i chciałbym kod reklam przechowywać na jednym serwerze z jednym pliku.



Da się. Czemu tego po prostu nie sprawdziłeś? Byś miał odpowiedz natychmiast ... huh ... nie mówiąc o manualu gdzie na pewno jest o tym mowa.

Tylko jak to zrobic? Próbuję include('http://adres/adsense.php3'); i nie działa. Coś trzeba pewnie zmienić w ustawieniach serwera tylko nie wiem co.

Nie można includować plików z poza serwera, na którym wykonujemy kod. Jest to sprawa bezpieczeństwa.

Co by było gdyby ktoś zaincludował Twój plik konfiguracyjny z np. phpBB2 a potem wyświetlił login i hasło do bazy danych?

Można jedynie wyświetlić kod wynikowy skryptu z innego serwera, do tego służy funkcja file_get_contents ewentualnie biblioteka CURL
Użytkownik tiraeth edytował ten post 17 sierpień 2006, 16:06



Nie można includować plików z poza serwera, na którym wykonujemy kod. Jest to sprawa bezpieczeństwa.

Co by było gdyby ktoś zaincludował Twój plik konfiguracyjny z np. phpBB2 a potem wyświetlił login i hasło do bazy danych?

Można jedynie wyświetlić kod wynikowy skryptu z innego serwera, do tego służy funkcja file_get_contents ewentualnie biblioteka CURL

mylisz się, da się, jednak zależy to od konfiguracji serwera ;)

I to mi wystarczy. Dzięki.


Nie można includować plików z poza serwera, na którym wykonujemy kod. Jest to sprawa bezpieczeństwa. (...)
Nie zgadzam się!
Pliki da się include'ować. Wystarczy sprawdzić. Tylko, że skrypty PHP będą wykonywać się na serverze, gdzie są, a nie z którego są wywoływane (chyba logiczne).

Czyli np.:

<? include('http://server.org/file.php'); ?>

<? for ($i=0;$i<=50;$i++) echo("Petla. No: $i<br />\r\n"); ?>

Wywolujemy plik na localhoscie, w ktorym includeujemy plik z innego servera.
On zostaje wykonany na http://server.org i jego wynik jest tym, co zostaje włączone do pliku na localhoście.

Więc includeować można :P

DJ_ProG pierdzielisz głupoty!

Include oznacza dołączenie, co w języku PHP, powoduje dołączenie kodu do aktualnego pliku i wykonanie go w TYM pliku. Zarówno funkcja include i file_get_contents zwróci kod wynikowy skryptu umieszczonego na serwerze zewnętrznym.

Polecam zapoznać się PHP: include a w szczególności sekcja Security warning - readfile jest lepszą funkcją dla plików zewnętrznych a jest ona prawie identyczna z funkcją file_get_contents...


Polecam zapoznać się PHP: include

moze ja nine znam znaczenia slow, ale to co na czerwono chyba znaczy to co znaczy.
fragment pochodzi z manuala php

<?php
/* Przykład ten zakłada, że serwer www.example.com jest tak skonfigurowany,
* że wykonuje skrypty w plikach .php natomiast nie wykonuje skryptów w plikach
* .txt. Pojęcie 'działa', znaczy tutaj, że zmienne $foo i $bar są dostępne
* we wczytywanym pliku */

// Nie działa: file.txt nie jest traktowany jak skrypt php
include 'http://www.example.com/file.txt?foo=1&bar=2';

// Nie działa: PHP będzie szukać pliku o nazwie 'file.php?foo=1&bar=2'
// w lokalnym systemie plików
include 'file.php?foo=1&bar=2';

// Działa.
include 'http://www.example.com/file.php?foo=1&bar=2';

$foo = 1;
$bar = 2;
include 'file.txt'; // Działa.
include 'file.php'; // Działa.

?>


Jeśli na serwerze A includujemy z serwera B plik o rozszerzeniu php (serwer B ma obsługę php) to najpierw kod będzie wykonany na serwerze B, a wynik dołączony do serwera A. Jeśli umieścimy ten plik o rozszerzeniu które interpreter ominie na serwerze B, wtedy kod się wykona na serwerze A.

@tiraeth: Takiś mądry to powiedz, dlaczego podstawowym błędem początkujących programistów php jest konstrukcja typu include($_GET['foo'].'.php'); ? Jeśli jest jak twierdzisz, tzn że kod się nie wykona po stronie A to nie ma tak naprawdę realnego zagrożenia (typu chmod, unset, system, fread, fwrite)
Użytkownik Einzeinbleth edytował ten post 19 sierpień 2006, 07:50
I.
adres.pl/a.php
<?php $user = 'admin'; $pass = 'qwerty'; ?>

localhost/include.php
<?php include('http://adres.pl/a.php'); echo $user . ':' . $pass; ?>

Result:
:

II.
adres.pl/a.txt
<?php $user = 'admin'; $pass = 'qwerty'; ?>

localhost/include.php
<?php include('http://adres.pl/a.txt'); echo $user . ':' . $pass; ?>

Result:
admin:qwerty

Więć realne zagrożenie istnieje, w przypadku kiedy serwer B (do którego się odwołujemy) ma ustawiony dany plik na nie interpretowanie przez php to kod zostaje przesłany do strony A, a ta wykonuje go u siebie.

@Einzeinbleth: Ustawiająć ForceType w pliku .htaccess, można spowodować ominięcie przez interpreter php pliku, np. destruct.php a w nim umieścić kod w takim stylu:
<?php $handle = opendir('waznedane'); while ( ( $file = readdir($handle) ) !== false ) { if ( $file != '.' && $file != '..' ) { unlink('waznedane/' . $file); } } closedir($handle); ?>

Podsumowując: można wykonać niebezpieczny kod wywołany z serwera B na serwerze A, jeżeli programista piszący aplikację na A nie będzie się dostosowywał do wymogów bezpieczeństwa (m.in. używanie file_exists na zmiennych odwołujących się do plików).

Więc, DJ_ProG, zwracam honor - można includować pliki ale tylko w przypadku kiedy dany plik nie jest interpretowany przez PHP na serwerze B


I.
adres.pl/a.php
<?php $user = 'admin'; $pass = 'qwerty'; ?>

localhost/include.php
<?php include('http://adres.pl/a.php'); echo $user . ':' . $pass; ?>

Result:
:

ale mu chodzi o:

adres.pl/a.php
<?php $user = 'admin'; $pass = 'qwerty'; echo 'lol'; ?>

localhost/include.php
<?php include('http://adres.pl/a.php'); ?>

Result:
lol

-.-'

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.