Autor Zpráva
Funky Květák
Profil *
Mám tuhle jednoduchou (jsem začátečník) aplikaci, která funguje na wz.cz:

<a href="index.php?url=nazev_volane_stranky"> libovolný text </a>

<?php

if (!isset($url) || $url=="") $url = "nazev_defaultni_stranky";
include ("$url".".php");

?>

co mám udělat, aby mi to běželo i doma na http://localhost/
- pravděpodobně nějak nastavit apache/SQL, ale jak?


Důležitější je druhá část dotazu - jak udělat v PHP podobný efekt, ale tak, aby se indexová (hlavní strana) znovu nenačítala při volání "includované" stránky

Jestli mě někdo chápete, tak dík moc za odpověď.
Meldo
Profil
jak nastavit apache? (aneb doma neběží to, co na wz.cz běží)
porovnaj si, ci mas rovnaku, alebo aspon podobnu verziu ako na wz. ak mas moc staru, je do dost pochopitelne.

myslim, ze by to islo jednoduchsie.

 

if($_GET['url']!=nazev_volane_stranky) {
$url = "nazev_defaultni_stranky";
include ("$url".".php");
}



jak udělat v PHP podobný efekt, ale tak, aby se indexová (hlavní strana) znovu nenačítala při volání "includované" stránky
neviem, ci to spravne chapem. Ty chces nacita uplne novu stranku?
ak hej tak:


<?php
if($_GET['url']!=nazev_volane_stranky) {
$url = "nazev_defaultni_stranky";
header("Location: ".$url.".php");
}

?>
<a href="premenna_v_adrese.php?url=nazev_volane_stranky"> libovolný text </a>


Ten php script, alebo lepsie povedane cast header(...); musi byt volana pred akymkolvek vystupom t.j. echo, print alebo html kod. Inak ti to vyhodi chybu.
Meldo
Profil
Inak ten horeuvedeny kod mi na localhoste funguje. Samozrejme pod podmienkou, ze existuje includovany subor. Over si to, ci ho mas aj na localhoste?
Co ti to vypisuje?
jozob
Profil
Meldo
"porovnaj si, ci mas rovnaku, alebo aspon podobnu verziu ako na wz. ak mas moc staru, je do dost pochopitelne"
* Čo s tým má vôbec Apache?
* Čo s tým má vôbec verzia PHP?
* S 90% istotou môžem povedať, že to bude nastavením register_globals v php.ini

Čo sa týka toho prvého kódu. Vyzerá to nejak divne - nebude nikdy fungovať - zakaždým sa načíta defaultná stránka (to isté aj v druhom kóde)... Kód, ktorý napísal Funky Květák, je celkom v poriadku, jediné, čo bude treba prepísať je premenná
$url, ktorú treba prepísať na $_GET["url"], keďže to vyzerá na nezapnuté register_globals. Takže opravený kód:
<?php

(!isset($_GET["url"]) || $_GET["url"]=="") ? $url = "nazev_defaultni_stranky" : $url=$_GET["url"];
include ($url.".php");
?>


Funky Květák
"pravděpodobně nějak nastavit apache/SQL, ale jak"
Apache s tým nič nemá a SQL tobôž nie. Viď riešenie vyššie.

"jak udělat v PHP podobný efekt, ale tak, aby se indexová (hlavní strana) znovu nenačítala při volání "includované" stránky"
Ak tomu správne chápem, správne to myslel Meldo, ale tá podmienka je zle zapísaná, ako som už napísal. Takže opravený kód:
<?php

(!isset($_GET["url"]) || $_GET["url"]=="") ? $url = "nazev_defaultni_stranky" : $url=$_GET["url"];
header("location".$url.".php");
?>


Ale na to stačia obyčajné odkazy... (teda pokiaľ to nie je niečo špeci :-))
Funky Květák
Profil *
2 JAZOB

Díkez moc... ještě než jsem tady položil dotaz tušil jsem, že je to v register_globals, ale nehctěl jsem je povolovat právě proto, abych psal scripty, které poběží i na serveru, kde jsou zakázané...
(i když vím, že wz je má povolené) ... kvůli bezpečnosti, o které se všude píše.

Zápis pomocí tzv. superglobálních proměnných jsem si taky vyhledal, ale až tady ten tvůj je správně.


Druhá část dotazu mířila trochu jinam. Chtěl jsem dynamicky měnit obsahovu stránku v podstatě na straně uživatele -> tzn. aby se nevolala nová adresa, ale změnil se text v hlavní části stránky - ale to je blbost, protože PHP vykonává server, takže to nejde a stránka se prostě muzí znova "načíst" (odeslat ze serveru k uživateli) celá.
Funky Květák
Profil *
Co v zápisu známená ten " ? " a " : " -> sorry fakt začínám.
jozob
Profil
Funky Květák
"Druhá část dotazu mířila trochu jinam."
Áno. A po vysvetlení kam, si sám zistil, že je to blbosť :-)

"Co v zápisu známená ten " ? " a " : " -> sorry fakt začínám"
Je to operátor s tromi operantmi (to som Ti pomohol, že? :-)). Je to vetvenie a slúži rovnako, ako if(...) {} else {}... Sorry, že som to zapísal tak, ale som na to zvyknutý z praxe. Ale kľudne to môžeš použiť. Skôr sa to používa tam, kde nemôžeš vložiť obyčajné vetvenie. A tuším, že je to aj rýchlejšie, ako obyčajné vetvenie. Ale v tomto konkrétom prípade to asi nemá opodstatnenie.
Funky Květák
Profil *
Tušil jsem, že to bude mít význam if, else, atp. -> ale díky. Teď vím, že se tomu nadává větvení a můžu si to někde najít.
tpikalek
Profil *
Já bych stránky přesunul na ic.cz (s příponou .php5) a nainstaloval si XAMPP (nebo LAMPP pro Linux). Já to tak mám a absolutní spokojenost - všechno jede.
Toto téma je uzamčeno. Odpověď nelze zaslat.