[PHP] <a href="index.?akce=neco">

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod double_m 20. 7. 2006 09:35

Zdravíčko, lidičky mám 6 odkazů a v každým mám nějakou jinou akci,

stránka najede když $_GET['akce'] == "něco", ale všechno funguje až na jedno... já kliknu třeba na první odkaz stránka najede ale když nic neudělám nikam nekliknu a dám hned druhej odkaz tak stránka je bíla stačí dám F5 (refresh) a najede ta akce kterou jsem klikl, ... kdyz vlezu ale na stránku , kliknu na odkaz najede stránka a pak třeba kliknu někam 2X pod to do prostoru a dám další odkaz všechno běhá good....

Nevíte.. ?


// mbing : Téma přesunuto ● z Programování do Tvorba webových stránek a aplikací.
double_m
Junior

Odeslat příspěvekod Johny[CZ] 20. 7. 2006 09:42

Já používám tohle:

Kód: Vybrat vše
if (isset($_GET[view])) {
   $clanek="pages/".$_GET[view].".php";
   include $clanek;
}
else {
   echo "Úvodní text";
}
[/


Odkazy jsou jako <a href="index.php?view=neco">
Stránky jsou uloženy v adresáři "pages"
Johny[CZ]
Junior
Uživatelský avatar

Odeslat příspěvekod double_m 20. 7. 2006 11:32

Promin ja to napsal spatne, ne ze bych tam includoval stranku, ale vlozim tam jinej obsah pod tech sest odkazu.... Vzdycky je ...x.php?akce=xxx a a kod v ty samy strance je if($_GET['akce']) == "xxx" { a tady je to co se ma vypsat...} :)
double_m
Junior

Odeslat příspěvekod ptimura 20. 7. 2006 11:41

Nevime - co takhle nejakej kod?
jen se ptej ... ;-)
ptimura
Junior

Odeslat příspěvekod Johny[CZ] 20. 7. 2006 11:52

Myslíš takhle?

Kód: Vybrat vše
if ($_GET[akce] == "xxx") {
  echo "Text stránky xxx";
}

elseif ($_GET[akce] == "yyy") {
  echo "Text stránky yyy";
}

else {
   echo "Úvodní text";
}
[/co
Johny[CZ]
Junior
Uživatelský avatar

Odeslat příspěvekod ptimura 20. 7. 2006 12:19

Zkus
Kód: Vybrat vše
if (!isset($_GET[akce])) {
$akce = 'uvod';
} else {
$akce = $_GET[akce];
}
switch ($akce) {
   case 'xxx':
       echo "Strana xxx";
       break;
   case 'yyy':
       echo "Strana yyy";
       break;
   case 'uvod':
       echo "uvodni text";
       break;
   default:
       echo "Stranka neni definovana";
}

dava ti to vyhodu vetsi flexibilnosti pri pridavani dalsich stranek - neni nic horsiho nez pokouset se vyznat v zaplave If / ElseIf / Else.
jen se ptej ... ;-)
ptimura
Junior

Odeslat příspěvekod Mike.M 20. 7. 2006 12:29

Lepsi by bylo, kdybys sem dal cast toho kodu a ne abychom badali jak to mas udelane
Zivot je kurevsky tezky.
Mike.M
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Johny[CZ] 20. 7. 2006 12:30

No já nevim... Přijde mi to úplně stejné, možná s tím "case" je to korektnější.
Stran té flexibilnosti bych použil ten s tim includem, a i ten kód na vkládání je kratší. A můžeš jednodušeni přidávat další stránky, nemusíš dávat další "case" nebo "elseif".
Johny[CZ]
Junior
Uživatelský avatar

Odeslat příspěvekod ptimura 20. 7. 2006 12:47

Jo jasne, s tim includem je to kratsi, ovsem soubor se strankou MUSI existovat, protoze jinak ti to hodi nepeknou hlasku. Reseni s case je lepsi kdyz chces mit veskerej kod v jednom souboru, pripadne kdyz texty na stranky vybiras z databaze.

//edit: S tim includem : kdyz ti nekdo zada do url zkusmo akce=pokus, tak ti to hodi hlasku ze soubor neexistuje, kdezto s case ti to napise ze stranka neni definovana. Pripadne se to taky da presmerovat na 404.
jen se ptej ... ;-)
ptimura
Junior

Odeslat příspěvekod Mike.M 20. 7. 2006 13:18

co brani pridat
Kód: Vybrat vše
if (isset($_GET[view])) {
   $clanek="pages/".$_GET[view].".php";
  if (File_exists($clanek): include $clanek;
}
else {
   include "uvod.php";
}


//Mývalice: Nepoužívej citaci, když reaguješ na předcházející příspěvek. Je to zbytečné.
Zivot je kurevsky tezky.
Mike.M
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod ptimura 20. 7. 2006 13:38

Mike.M: Jasne, jasne :)
jen se ptej ... ;-)
ptimura
Junior

Odeslat příspěvekod double_m 20. 7. 2006 20:39

ne-e tam jde o to né že by to nefungovalo zhlediska kodu ale ze kdyz dam 2x za sebou nejakej odkaz tak mi ukaze stranku a najede bila stranka a nejde zobrazit ani zdrojovej kod... proste se to sekne pri najizdeni dam F5 a vsechno najede jak ma..
double_m
Junior

Odeslat příspěvekod Mike.M 21. 7. 2006 07:00

tak sem hod kor at ti to muzeme optavit. Ted z tveho vysvetleni kazdy bada a urcite si rika ze to mas prasacky udelano.
Zivot je kurevsky tezky.
Mike.M
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Johny[CZ] 21. 7. 2006 07:39

[quote="ptimura"]...ovsem soubor se strankou MUSI existovat...quote]

Aha, už jsem pochopil proč ne include:-). Je pravda že by to tam mělo být ošetřené (viz Mike.M). Asi to tak taky udělám:-)
Johny[CZ]
Junior
Uživatelský avatar

Odeslat příspěvekod Mike.M 21. 7. 2006 07:49

ono to mate vlastne nastejno, pokud tam je case ci neni. bo pokud ve switchi neexistuje promenna, a clovek si do adr. radku napise jakoukoli, taky to vyhodi error, a je lepsi include, protoze kod je prehlednejsi, nez pridavat porad nove a nove case. pro kazdy odkaz. Kdezto ten muk skriptik satci jen do <a href=".... napsat cokoli a mit ten soubor a autoomaticky to je.
Zivot je kurevsky tezky.
Mike.M
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Johny[CZ] 21. 7. 2006 08:09

Já myslim že je určitě lepší include, protože se jenom napíše soubor a dá na něj odkaz (s case se musí přidat další case). Ale určitě si píšu to s tím file_exists.

A navíc, když budu mít více stránek tak ten soubor index.php bude mít x set kilo a i při přenášení přes ftp budu muset čekat...
Johny[CZ]
Junior
Uživatelský avatar

Odeslat příspěvekod wojta 21. 7. 2006 09:07

Určitě je lepší case. Nebo nejlépe tam mít číslo a to někde kontorolovat proti databázi a načíst odkaz na soubor.
Přímý include není bezpečný. Někdo ti do toho něco=... může něco podstrčit a tak si přečíst soubor, ke kterému by neměl mít přístup. Mož ná by to taky stačilo přepsat nějakým mod_rewrite (v Apachi), pak by to už tak nebezpečné nebylo.
wojta
Pokročilý
Uživatelský avatar

Odeslat příspěvekod Johny[CZ] 21. 7. 2006 09:18

To může rovnou napsat do adresního řádku, ne? Nebo v tom je nějaký rozdíl?

btw mně se to hlásí do adresáře pages, kde jsou jen soubory běžně viditelné. Nikam jinam se stejně podstrčením dostat nedá, nebo ano?

Zkoušel jsem vytvořit složku tajne na stejné úrovni jako pages a jako index.php a podstrčil jsem view=../tajne/tajny_soubor . Výsledná cesta k souboru ($clanek) je potom $clanek = pages/../tajne/tajny_soubor.php. Nenačte to nic.

Používám pořád tu jednoduchoučkou verzi co je jako odpověď hned ze začátku.
Johny[CZ]
Junior
Uživatelský avatar

Odeslat příspěvekod Mike.M 21. 7. 2006 13:07

wojta píše:Určitě je lepší case. Nebo nejlépe tam mít číslo a to někde kontorolovat proti databázi a načíst odkaz na soubor.
Přímý include není bezpečný. Někdo ti do toho něco=... může něco podstrčit a tak si přečíst soubor, ke kterému by neměl mít přístup. Mož ná by to taky stačilo přepsat nějakým mod_rewrite (v Apachi), pak by to už tak nebezpečné nebylo.)/quote]

tak to je totalni tento. pokud budes includovat soubory s priponou php, tak jedine co ti s nemi udela je ze si je zobrazi, stejne jako prez ten index. Nic neni nebezpecne. Kod ti nikdy nezisti, jedine zebys to mel jako txt a on si nechal ten soubor ulozit, webserver ti vzdy ten soubor zpracuje, nikdy ti no neposle jako skript. Takze neni co resit. Prvne si o tom neco precti. Ja mel zpocatku taky strach.
Zivot je kurevsky tezky.
Mike.M
Mírně pokročilý
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků