Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Austrolopitek
Posty: 4 Rejestracja: ndz mar 23, 2008 6:26 pm
Post
autor: Austrolopitek » ndz mar 23, 2008 6:49 pm
Witam dopiero raczkuję w php wiec prosze o wyrozumiałość, pytanie być może banalne, ale dla mnie czarna magia
Przypuśćmy ze klikam w pierwszy link, podstrona ładuje mi się miejscu gdzie jest kod include. W podstronie link jest tekst i jakiś inny link
Jak powinien wyglądac kod hiperłącza ze strony includowanej, by podstrona z link1 załadowała się w tym samym miejscu?
Mam nadzieje, ze jakoś w miare zrozumiale wytłumaczyłem o co mi chodzi xP
Kod: Zaznacz cały
<?
$page = $_GET['id'];
if($page=="") $page="news";
if(!file_exists($page.".php"))
{
echo "Taka strona nie istnieje";
}
else
{
include_once $page.".php";
}
?>
!ans
Nowy
Posty: 131 Rejestracja: wt gru 11, 2007 9:59 pm
Lokalizacja: zza rogu
Post
autor: !ans » ndz mar 23, 2008 8:10 pm
Wogóle to ja bym zrobił tak:
Kod: Zaznacz cały
<?php
function x(y) {
if(!file_exists($y.".php")) {
echo "Taka strona nie istnieje";
}
else {
include_once $y.".php";
}
}
$page = $_GET['id'];
x($page);
?>
I link do podstrony:
Kod: Zaznacz cały
http://nazwa_strony/nazwa_pliku_z_tym_kodem?id=news
I wtedy wstawi plik news.php.
Austrolopitek
Posty: 4 Rejestracja: ndz mar 23, 2008 6:26 pm
Post
autor: Austrolopitek » ndz mar 23, 2008 11:36 pm
Niedokładnie mi o to chodziło.
Problem w tym ze nie wiem jak powinien wyglądać kod hiperłącza/ kod podstrony (?) DO KTÓREJ ma być wczytana kolejna podstrona. Wczytywanie wewnątrz funkcji -nie jestem pewny czy to tak się nazywa
!ans
Nowy
Posty: 131 Rejestracja: wt gru 11, 2007 9:59 pm
Lokalizacja: zza rogu
Post
autor: !ans » pn mar 24, 2008 12:23 am
To jest właśnie ten adres - adres strony i ?id=news czyli deklaracja tej zmiennej GET z której wynika ,która podstrona ma być wczytana.
Austrolopitek
Posty: 4 Rejestracja: ndz mar 23, 2008 6:26 pm
Post
autor: Austrolopitek » pn mar 24, 2008 12:31 am
Wybacz, ze o takie drobiazgi pytam. Ten kod który podałeś to mam podmienić w index.php w miejscu tego co mam obecnie?
!ans
Nowy
Posty: 131 Rejestracja: wt gru 11, 2007 9:59 pm
Lokalizacja: zza rogu
Post
autor: !ans » pn mar 24, 2008 12:36 am
Znaczy tak może zostać tamten ,ale wtedy do każdej podstrony musisz dodać nową instrukcje warunkową ,a tak nie ważne czy tych plików będzie dziesięć czy milion tyle kodu wystarczy. Musisz tylko w adresie wpisać nazwę pliku i taki plik z rozszerzeniem .php musi istnieć w tym katalogu. Ale co do twojego pytania: TAK .
Austrolopitek
Posty: 4 Rejestracja: ndz mar 23, 2008 6:26 pm
Post
autor: Austrolopitek » pn mar 24, 2008 12:59 am
hmm zrobiłem tak jak należy (przynajmniej tak mi sie wydaje), wgrywam na serwer pokazuje mi się błąd
Parse error: syntax error, unexpected T_STRING, expecting ')' in /var/www/sites/yoyo.pl/l/a/strona/index.php on line 17
w lini 17 znajduje się ten kawałek kodu
!ans
Nowy
Posty: 131 Rejestracja: wt gru 11, 2007 9:59 pm
Lokalizacja: zza rogu
Post
autor: !ans » pn mar 24, 2008 8:21 am
Kod: Zaznacz cały
<?php
function x($y) {
if(!file_exists($y.".php")) {
echo "Taka strona nie istnieje";
}
else {
$file = $y.".php";
include_once $file;
}
}
$page = $_GET['id'];
x($page);
?>
Zapomniałem znaczka dolara przy deklaracji funkcji.
the_foe
Przelotem
Posty: 295 Rejestracja: pt sty 31, 2003 12:53 pm
Lokalizacja: Wałbrzych
Kontakt:
Post
autor: the_foe » pn mar 24, 2008 3:36 pm
!ans pisze: Wogóle to ja bym zrobił tak:
Kod: Zaznacz cały
<?php
function x(y) {
if(!file_exists($y.".php")) {
echo "Taka strona nie istnieje";
}
else {
include_once $y.".php";
}
}
$page = $_GET['id'];
x($page);
?>
I link do podstrony:
Kod: Zaznacz cały
http://nazwa_strony/nazwa_pliku_z_tym_kodem?id=news
I wtedy wstawi plik news.php.
i wtedy robie co chce
Kod: Zaznacz cały
http://nazwa_strony/nazwa_pliku_z_tym_kodem?id=http://mojadomena.pl/mojkodphp
oczywiscie mozna wylaczyc "allow_url_include" i "allow_url_fopen" ale lepiej po prostu pisac kod z glowa
morphi99
Posty: 3 Rejestracja: sob lut 02, 2008 4:37 pm
Post
autor: morphi99 » wt mar 25, 2008 8:18 am
A czy ten skrypt jest bezpieczny ?
[php]
<?php
function x($y) {
if(!file_exists($y.".php")) {
echo "Taka strona nie istnieje";
}
else {
$file = $y.".php";
include_once $file;
}
}
$page = $_GET['id'];
x($page);
?>[/php]
!ans
Nowy
Posty: 131 Rejestracja: wt gru 11, 2007 9:59 pm
Lokalizacja: zza rogu
Post
autor: !ans » wt mar 25, 2008 9:56 am
the foe ma rację czyli NIE
the_foe
Przelotem
Posty: 295 Rejestracja: pt sty 31, 2003 12:53 pm
Lokalizacja: Wałbrzych
Kontakt:
Post
autor: the_foe » wt mar 25, 2008 10:19 am
morphi99 pisze: A czy ten skrypt jest bezpieczny ?
[php]
<?php
function x($y) {
if(!file_exists($y.".php")) {
echo "Taka strona nie istnieje";
}
else {
$file = $y.".php";
include_once $file;
}
}
$page = $_GET['id'];
x($page);
?>[/php]
to jest dokladnie ten sam kod i tak samo niebezpieczny.
w ogole uzywanie includow w ten sposob na dluzsza mete jest zle.
Ale jak wstawi regulke :
[php]
$page=preg_replace("/[^A-z]/","",$_GET['id']);
[/php]
i teraz system wezmie pod uwage nazwy wylacznie zawierejace litery