Skocz do zawartości

[php]Parametr funkcji include/require z ?x=abc


dj.drezyna

Polecane posty

Mam pytanie odnośnie tego jak można w wywołaniu:

{ include 'skrypty/oblicz.php?zmienna=60.4'; }

Działało to właśnie tak jak by się kliknęło link o href równym skrypty/oblicz.php?zmienna=60.4

 

Bardzo dziękuję za czas poświęcony na rozwiązanie tego problemu.

 

pozdrawiam,

Marek G.

 

P.S. A jak rozwiązać problem względności ścieżek jeżeli w jednym umieszczę '../skrypty/z.php' to po podlinkowaniu w pliku z.php czegoś na kształt 'x.php' (też w include) otrzymuję wywołując plik z.php z poziomu wyżej, czyli 'skrypty/z.php' nie znajdzie już pliku x.php bo nie będzie on w tym katalogu tylko wyżej...

 

P.S.II Za rozwikłanie tego też będę wdzięczny :)

Galeria przyrodnicza http://fotokrajobrazy.warmia.pl

Link do komentarza
Udostępnij na innych stronach

Include nie wywoła skryptu, ale doda zawartość wskazanego pliku do pliku wykonującego. Aby odpalić skrypt użyj polecenia file_get_contents.

Za dwadzieścia lat bardziej będziesz żałował tego czego nie zrobiłeś, niż tego co zrobiłeś. Więc odwiąż liny, opuść bezpieczną przystań. Złap w żagle pomyślne wiatry. Podróżuj. Śnij. Odkrywaj." M". Twain. Metryczka dla dziecka może być wspaniałą pamiątką narodzin.

Link do komentarza
Udostępnij na innych stronach

Przypomniałem sobie że może też wykonać plik i wpakować to co wyświetla do bufora ja tak robię w jednym z projektów.

 

<?php
public function load( $file, $return = false){
   	ob_start();

   	require( $this -> path.$this -> layout.$file.'.php' );

   	if($return){

       	$ob = ob_get_contents();
       	ob_end_clean();
       	return $ob;

   	}else{

       	$this -> content[] = ob_get_contents();
       	ob_end_clean();

   	}

}
?>

Link do komentarza
Udostępnij na innych stronach

No na pewno będzie. :) Jak zawsze genialnie Sazian! Dzięki wielkie chłopaki!

 

A i przydałoby się też dowiedzieć jak to z tymi ścieżkami względnymi, bo to też problem jak dla mnie, bo wystarczy coś względnie dać w jednym pliku php adres w poleceniu include, a także w drugim pliku php położonym głębiej lub niżej i okaże się że jedne pliki drugich nie widzą...

 

Przykład:

 

str/skrypty/a.php

str/b.php

str/skrypty/inne/c.php

 

I jeżeli w pliku a.php zrobimy include '../b.php'

a w pliku b.php zrobimy include 'skrypty/inne/c.php'

to w pliku z.php w katalogu skrypty/inne/ pisząc include '../../a.php' wszystko jest pogibane...

Galeria przyrodnicza http://fotokrajobrazy.warmia.pl

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Trochę spóźnione, ale może przyda się potomnym. :-)

Osobiście rozwiązuję to deklarując stałą, która zawiera ścieżkę do katalogu głównego aplikacji, a potem załączając inne pliki, ładuje je na jej podstawie. Jej deklarację umieszczam w miejscu, które wykonywane jest na początku każdego skryptu(w moim przypadku w swego rodzaju jądrze aplikacji). Jeżeli dobrze rozwiąże się podstawy aplikacji(np. wszystkie requesty przekierowywać się będzie przez index.php, jest to ułatwiające życie rozwiązanie. Wygląda to na przykład tak:

 

Plik config.php

<?php
define('DIR', '/home/rutek/public_html/');

 

Plik example.php

<?php
// Załączamy plik wykonywany zawsze na początku skryptu
include_once 'config.php';

// Inne pliki
include_once DIR.'include/db.php';

 

Jeżeli wszystkie requesty idą przez jeden plik, stałą DIR można sobie generować, zamiast ustawiać na sztywno.

 

 

 

W przypadku, kiedy generujemy ją z pliku, który znajduje się w katalogu głównym aplikacji

<?php
// __DIR__ jest dostępne dopiero od PHP 5.3
if(!defined('__DIR__')) {
   $iPos = strrpos(__FILE__, "/");
   define("__DIR__", substr(__FILE__, 0, $iPos) . "/");
}

define('DIR', __DIR__.'/');

 

 

 

W przypadku, kiedy generujemy ją z pliku, który znajduje się w np. podkatalogu include zamieniamy definicję stałej DIR na:

define('DIR', realpath(__DIR__.'/../').'/');

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...