Starší komentáře ke článku: Dynamické generovanie stránky v PHP
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 18.1.2003 4:06:40
Uz sa strasne tesim az bude php5, ktore bude dufam casesensitive [1]. To bude nadheara, aspon uz ludia zacnu pisat mena funkcii podla manualu a nie tak ako ich to npadne
[1] <a href='http://bugs.php.net/bug.php?id=15415' target='_blank'>http://bugs.php.net/bug.php?id=15415</a>
Datum vložení: 18.1.2003 8:14:16
To bude katastrofický den. Lidé totiž nepíší jména jak je napadne - používají dva nebo tři druhy notace, která má svá pevná pravidla a slouží ke zpřehlednění skriptu. Pokud napříště bude nutno vše psát malým písmem, nevyzná se v tom už ani ďas - mimo jiné také pro naprosto nesystematický způsob pojmenování oněch příkazů ;-)
Datum vložení: 18.1.2003 11:48:58
casesensitive je o vykone, skripty budu o nieco vykonnejsie. Zda sa mi dost chore aby nazvy premenny boli casesensitive a funkcie uz nie...
Mozno neikto bude namietat ze to vela vykonu neprinesie, ale percento k percentu a zrazu to bude 10%, 20% a to uz stoji za to.
Uplne najlepsie je toto:
[1] echo "blabla $prem bleble";
[2] echo sprintf("blabla % bleble", $prem);
[3] echo 'blabla ' . $prem . ' bleble';
[1] je asi 2krat pomalsie ako [3]. Drviva vacsina ludi pouziva [1] skoro nikto nepouziva [2].
Datum vložení: 18.1.2003 16:53:23
chci se jenom zeptet co to je casesensitive
nic mi to nerika
dekuju
Datum vložení: 18.1.2003 17:11:06
Zabudol som tam pisat medzeru: teda spravne je 'case sensitive' co znamena ze zalezi na 'velkosti' pismen:
Mena myfunc(), a MyFunc() su pri case sensitive dva rozdielne nazvy.
V PHP su case sensitive LEN nazvy premennych, konstant, ale nazvy funkcii uz nie. Neviem preco to takto spravili... Budem velmi rad ked sa to zjednoti v prospech case sensitive. :) (ludia ma asi zabiju...)
Datum vložení: 18.1.2003 21:45:39
No, ja nevim - co ti prijde citelnejsi:
$t = SizeOf(Explode("x",SubStr($str,1,-2)));
$t = sizeof(explode("x",substr($str,1-2)));
;-)
Jo, je to trochu umely, ale konkretne u PHPecka bych klidne obetoval tu trosku vykonu na citelnost a prehlednost - casove kriticke aplikace se v PHPecku psat NEMAJI ;-) (nebo si porid rychlejsi HW ;-))))
Datum vložení: 19.1.2003 8:59:40
Když už jsme u toho, v PHP jsou case-nonsensitive pouze vestavěné funkce, zatímco uživatelsky definované funkce jsou case-sensitive. Důležitou věcí je, že case-nonsensitive neumožňuje uživatelům redefinovat vlastní funkce PHP a tudíž vytvořit zmatečný skript, kterému by jiný programátor nerozuměl.
Kromě toho, u vlastních funkcí PHP může být jeho interpret optimalizován pro tuto situaci (stejně jako různé akcelerátory), v zájmu příjemnějšího prostředí pro programátory, zatímco u uživatelských funkcí tomu tak být nemůže. Rozdíl ve výkonu tím pádem tak velký není, protože engine je k tomu přímo uzpůsobeno a pokud použijete některý z akcelerátorů, je otázka case-(non)sensitive již zcela irelevantní - zatímco otázka pohodlí programátorů zůstává stále aktuální.
Já osobně užívám ofociálně doporučenou notaci "na velblouda", takže bych třeba uvítal její "uzákonění". A co Vy?
Datum vložení: 19.1.2003 12:08:37
Uzivatelske funkcie su tiez case insensitive:
function make_x() { echo 'x'; }
make_x() // vypise x
make_X() // tiez vypise x :) a bez ziadnej chyby
Standart tu uz je:
<a href='http://pear.php.net/manual/en/standards.naming.php' target='_blank'>http://pear.php.net/manual/en/standards.naming.php</a> co odpoveda kovencii "na velblouda". A pouziva sa to iba pre PEAR.
Samostatne php API sa priklana k zapisu pomocou len malych pismen pre odelovanie "slov" sluzi podciaknik (_).
Toto neplati pri experimental moduloch a pri funkciach ktore boli uz php2/3 alebo su prevzare z Perlu. Prave zapis tychto funkcii "na velblouda" nieje opodstatneny.
Ak by bolo php uz odzaciatku case sensitive mam taky pocit ze nikomu by nevadilo pisat isset() na miesto IsSet(). Ta druha moznost by ho ani nikdy v zivote nadapadla a uz vobec by si nemyslel ze je lepsia :))).
Ludia maju dost velky problem pouzivat a dodrziavat pravidla ktore niesu z ich hlavy. Zacina sa to pri takychto banalnych veciach, ale nakoniec to skoci tym ze clovek nebude chopny dodrzat viac ako polovicu pravidlel projektu na ktorom nerobi len on.
Datum vložení: 20.1.2003 20:04:31
Ak je jazyk case sensitive, zalezi na tom ci pouzivas male alebo velke pismena. Teda ked si zalozis premennu
uiCounterVar
nemozes sa na nu odkazovat ako
uicountervar
V non-case sensitive jazyku je to mozne.
Datum vložení: 24.1.2003 13:06:56
To je o tom, že proměnná $Soucet nebo funkce htmlentities() není totéž jako $souceT nebo funkce HtmlEntities() - nyní to ale v PHP platí - jsou totožné. Parser musí stále dělat vnitřně "<I>LowerCase</I>".
Konstanty oproti tomu mají v tomo možnost nastavení, tedy define('CONST1', 111) je něco jiného jako define('Const2',222<B>,1</B>) tam bude fakčit CONST2 i const2.
Pokud ale definuju konstantu define('CONST1', 111<B>,1</B>), tak při následným define('Const1', 112) to neprojde (konstanta nejde předefinovat), protože CONST1 už byl definován jako <B>necitlivý k velikosti písmen</B> a dá se na něj odkázat jako CONST1 i Const1 i consT1 atd.
Datum vložení: 22.1.2003 14:06:36
echo sprintf('blabla % bleble', $prem);
:o)))))
Datum vložení: 18.1.2003 4:09:22
Toje az taky strasny poblem pisat <?php na miesto <?.
Myslim ze za tu lepsiu prenositelnost skriptu to stoji.
Datum vložení: 18.1.2003 17:20:13
ja nevim, ale prijde mi z hlediska bezpecnosti a pruchodnosti atd. daleko lepsi psat do adresy spis id stranky jako cislo, protoze pak je vyhledavani v db daleko rychlejsi.
Co se nazvu funkci tyce (stejne tak promennych), tak ja osobne radsi pisu vsechno maly (az na vyjimky, kdy si definuji konstanty a nektere promenne napr. MUSER, $MUSER...). Aspon pak nemusim premyslet nad tim, jak jsem co nadefinoval ...
Datum vložení: 19.1.2003 0:19:39
Z metodického hlediska považuji za trochu nevhodné psát ukázkový skript tak, aby byl závislý na zapnutí register_globals. A když už, bylo by vhodné na to čtenáře upozornit - u všech novějších verzí PHP je tato volba v konfiguraci defaultně vypnuta a uživatelé jsou horem dolem upozorňováni, aby ji nezapínali. Ale možná to autorovi jen ulétlo, ve druhém skriptu už je to dobře.
Datum vložení: 1.9.2003 20:25:37
Dobrý den,
jen takový dotaz, pokud zakážu register_globals, musím přistupovat k datům přeneseným GETem přes funkce k tomu určené a ne rovnou? Ještě jeden dotaz, v čem může registerglobals škodit? Dovedu si představit jen rizika primitivních útoků, která se dají snadno ošetřit...
Datum vložení: 3.10.2003 14:01:27
No je to pravda, poznal jsem to na vlastní kůži, protože jsem vytvořil stránky podle tohodle článku a nefungujou - register_globals je vypnuto.
OK, ale co s tím mám teď dělat, používat db nechci.
Díky za radu.
Datum vložení: 20.1.2003 10:01:48
"Skript bez databázi je ale dosť dlhý, hlavne pri väčšom počte podstránok. V takom prípade je dobre využíť verziu s databázou."
no a proc nevyuzit k tomu pole? to se k tomu uplne nabizi :-)
Datum vložení: 20.1.2003 13:42:27
Řekl bych, že ještě lepší řešení by bylo použít "template" systémy.
Obvykle se totiž lehce mění i záhlaví a zápatí stránek - zvýraznění zvolené položky apod.
P.
Datum vložení: 20.1.2003 17:23:11
Obdobne stranky jsem napsala behem dvou hodin neznajic predem z php absolutne nic. Mela jsem pocit, ze by se clanky tady mohly zabyvat nejakymi zajimavejsimi tematy, nez je copy-paste manual pro zacatecniky, co jsou lini precist si nejaky tutorial.
Obzvlaste tato veta mi prisla velmi "informacne hodnotna":
<I>Namiesto funkcie require() môžete použiť aj funkciu include(), ktorá funguje veľmi podobne. Sú tu však drobné rozdiely, ktoré dávajú výhody i nevýhody obidvom funkciám.</I>
Datum vložení: 18.4.2005 19:58:04
naprosto souhlasím a žádám o radu, kde najdu kvalitnější zdroj informací
Datum vložení: 19.2.2003 11:31:21
Má někdo zkušenosti s propojením PHP na databázi SQL7? Dočetl jsem se pouze o MySQL. V současnosti používám ASP s SQL7, ale údajně má být PHP rychlejší, stabilnější a bezpečnější než ASP. ASP prý také při větším počtu připojených uživatelů "tuhne". Chtěl bych vědět, jestli přechod na PHP pro mne bude přínosem, nebo raději zůstat u ASP.
Díky všem
Datum vložení: 19.2.2003 11:38:20
Pokud mate k dispozici legalni software MS, tak bych u nej zustal. Protoze s prichodem .NET, se ASP.NET stava mnohem lepe vyuzitelne nez PHP.
Velice jednoduse propojuje oba svety - desktopove aplikace a webove aplikace. Nyni muzete vytvorit jadro aplikace a neni problem vytvorit dva interface: klasicke formulare a webove formulare. A jeste k tomu pridava "nezavislost na pouzitem jazyku" - je jedno zda VB nebo C#.
P.
Datum vložení: 19.2.2003 11:41:12
Ale na druhou stranu v jednoduchosti je krasa. A pokud hledate pouze skriptovaci jazyk, tak PHP je velice dobrym zastupcem tuto roli zastat.
Podporuje nove technologie, dokonce COM objekty a co je velka vyhoda oproti ASP(.NET) je moznosti provozovani pod linux like strojem. A uzivatelska podpora je pro PHP takrka bezedna.
P.
Datum vložení: 23.2.2003 10:53:39
Mám menší problém :-( Skript jsem rozchodil, ale jak to funguje, když chcu už z načtené
stránky volat jinou ? Např.na hlavní stránce mám odkaz " registrace " a po je spuštění
se mi načte stránka vstup pro registrované uživatele s odkazem na registraci, ale na této
stránce mi už tento skript nefunguje. Pořád mě to vrací na úvodní stránku !!! :-( Co dělám
špatně ? Mám do každé stránky, která bude načítána vložit tento skript znovu ? Zkusil jsem
to, ale háže mi to FATAL ERROR ! Poradí mi někdo prosím ??? Díky moc Drahoš ...
Datum vložení: 23.2.2003 13:10:34
Vzdy musite odkazovat len na jednu stranku - na tu, kde mate tento skript. Pokial je to napr. index.php, tak ju mozete volat s index.php?page=registrace a skript musi podla parametru vybrat prislusnu stranku. To uz treba nastavit v samotnom skripte.
Datum vložení: 19.2.2004 21:08:37
pridaj do toho skriptu , co mas v index.php toto , ked chces spravit novu kategoriu
case "priklad":
$url = "priklad.php";
break;
a potom uz len v subore priklad.php sprav odkaz s url index.php?page=priklad
Datum vložení: 22.10.2007 20:52:22
no ja som sa to skusal a potom som si siel radsej lahnut:D:D Rano mi kamos poradil a slape to .Cely problem je v tom case bolo to uplne zle ozatvorkovane.Prerobil to a ide to v pohode :-)
Datum vložení: 22.10.2007 20:56:57
no este som zabudol vyzeralo to asi takto <? $kod = "5e9c"; if(IsSet($_GET['page'])) { switch($_GET['page']) { case "about": { $url = "about.php"; break; } case "galeria": { $url = "galeria.php"; break; } case "kontakt": { $url = "kontakt.php"; break; } case "home": { $url = "home.php"; break; } default: { break; } } } else { $url = "about.php"; } require $url; ?> a este k tomu jednotlive odkazy napr.cez zoznam <ul class="menu"> <li><a href="index.php?page=home">Uvodna stranka</a></li> <li><a href="index.php?page=galeria">galeria</a></li> <li><a href="index.php?page=kontakt">kontakt</a></li> <li><a href="index.php?page=about ">O mne </a></li> </ul>
Datum vložení: 22.10.2007 21:05:30
tie odkazy su zle neviem nechce mi ich zobrazit.
Datum vložení: 16.3.2003 20:43:07
Měl bych ještě dotaz. Mám problém s tím, že když se snažím předávat proměnné, tak mě to pořád přesměrovává na úvodní stránku ! :-( Jak to obejít !
Díky Drahoš
Datum vložení: 10.6.2003 7:42:12
Ahoj,
chtel jsem se zeptat zda ma promena $kod nejaky vyznam. V prvnim kroku ji nadefinujeme ale pote uz nikde nevidim jeji pouziti. Da se skript nejak osetrit aby nestacilo napsat do url "index.php?id=10" ale byla provedena verifikace ze pozadavek byl proveden na zaklade spusteni odkazu?
dik
Datum vložení: 10.6.2003 19:15:34
Ahoj,
premenna $kod ma vyznam ten, ze stranka sa zobrazi iba ak je tato premenna definovana. System funguje tak, ze sa vytvori jedna "hlavna" stranka a potom sa do nej vkladaju ostatne "stredy". Ak vytvorime podmienku, ze sa stred zobrazi len ak je definovana premenna $kod s nejakou hodnotou a tuto premennu aj s konkretnou hodnotou potom definujeme v tej hlavnej stranke, tak sa zobrazi. Tym zabrani otvoreniu stredu samostatne bez hlavnej stranky. Snad som to velmi nedoplietol, ak je nieco nejasne, staci napisat. A druha otazka: islo by skontrolovat, z akej stranky navstevnik prisiel a tym zistit, ci zadal url alebo sa na stranku dostal z odkazu.
Datum vložení: 11.6.2003 7:51:16
Aha uz je to jasnejsi - slo by nekde uvest onu kontrolu odkud navstevnik prisel?
DIky Patrik
Datum vložení: 11.6.2003 19:21:38
Myslim, ze tuto informaciu ma premenna $HTTP_REFERER. Nie som si isty, pretoze som to uz davno nepotreboval, pokial to tak nieje, skus napisat.
Datum vložení: 10.8.2003 21:40:17
Publikovaná ukázka je moc složitá, dalo by se to udělat efektivněji a přitom by ten script mohl mít pár řádků...
Datum vložení: 19.8.2003 16:06:04
A co takhle ukazka?
Datum vložení: 20.8.2003 21:35:55
Tak to by zaujimalo aj mna ako sa to da spravit este kratsie......
Mne dost prekaza premenna kod. Pouzivam rozne header subory a aby som mal vsede pisat ze premenna kod = asdlgflashgkjafskgjhaôgh mi pripada dost nepohodlne..
Ja som na kazdu stranku ktora sa includuje pridal podmienku ci sa vola ten script samostatne alebo je includovany..
Datum vložení: 3.1.2004 14:48:16
Ja som na kazdu stranku ktora sa includuje pridal podmienku ci sa vola ten script samostatne alebo je includovany..
Ako sa to da spravit?
Datum vložení: 5.4.2006 11:31:08
no bezpečnější je na includované stránce mít funkci která něco vrací, řešim to nějak takhle: case "prihlaseni"; if(file_exists("prihlaseni.php")) { include("prihlaseni.php"); //pouziji funkci prihlaseni() ktera je v souboru prihlaseni.php //návratovou hodnotou funkce je pole ['clanek'],['nazev'],... $stranka=prihlaseni(); } else {//stranka neexistuje $stranka=stranka_neni(); } break; a samotná stránka vypadá nějak takhle: <php function prihlaseni() { $s['nazev']='nazev stránky'; $s['clanek']=''; //dále zpracuji celý obsah stránky ulozím do promenne a vrátím returnem return $s; } PS: Vím že je to reakce na několik let staré téma, ale stále sem chodí noví zvědavci, snad jim to něco dá...
Datum vložení: 8.1.2004 17:28:53
tak jsem zkousel oba dva priklady:
prvni je v pohode, ale u druheho mam nejake problemy:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /DISK3/WWW/palacky.net/www/include/db/default.php on line 17
Co tam muze byt?
Datum vložení: 26.2.2004 22:44:29
ano, mne to vypisuje take tuto chybu - muze nekdo poradit co delam spatne?
Datum vložení: 26.2.2004 22:52:02
predpokladam ze robite chybu v mysql query, to obycajte potom vypisuje taku chybu, uz len ked volate stlpec ktory tam nieje a pod.
Datum vložení: 14.6.2004 18:58:50
ta funkcia require mi nejde...neviete ako to nastavit?
wyerrorovalo toto:
Fatal error: Failed opening required '' (include_path='c:\www\clanky\') in c:\www\clanky\index.php on line 45
Datum vložení: 14.6.2004 19:05:00
pardon...ja jako *DEBIL* som na zaciatku daval require a prazdny nazov stranky....takze je to opravene
Datum vložení: 7.8.2004 17:41:31
index.php
<?php
if (!isset($url) || $url=="") $url = "hlavnistranka";
include ('umistenistranek/'.$url.'.php');
?>
tudiz volani index.php?url=info includuje soubor umistenistranek/info.php
v jednoduchosti je krasa? O.o
Datum vložení: 7.8.2004 17:42:28
index.php
<?php
if (!isset($url) || $url=="") $url = "hlavnistranka";
include ('umistenistranek/'.$url.'.php');
?>
tudiz volani index.php?url=info includuje soubor umistenistranek/info.php
v jednoduchosti je krasa? O.o
Datum vložení: 7.8.2004 17:47:22
imho Ruzicka ma lepsi skript i pres pozn redakce ~~
Datum vložení: 22.1.2005 22:58:33
a ako na takéto generovanie:
?clanok=blabla
Datum vložení: 20.3.2005 19:12:23
a proč ne tohle: ---sablona.php--- Sem se napíše hlavička <html> <body> a tak dal... ---neco.php--- <? require('sablona.php'); ?> stred </konec vselijakych tagu>
Datum vložení: 8.7.2005 15:05:39
Rád bych se zeptal jak vytvořit takovou adresu [i]index.php?page=strana&id=5[/i] Při použítí <? if(IsSet($_GET['page'])): switch($page) { case "strana": $url = "menu/strana.php"; break; default: $url = "home.php"; } else: $url = "home.php"; endif; require $url; ?> se vytvoří jenom [i]index.php?page=strana[/i] Jak k tomu připojit ještě to [i]&id=5[/i] Děkuji za odpověď
Datum vložení: 15.4.2006 9:04:11
$_GET["co"] a pak s tím pracuješ jako z proměnou
Datum vložení: 22.7.2005 13:36:29
Mam taky dotaz...nejde to urobit tak, ze bude text stranky priamo v databaze? Ak ano, tak ako? Glorfindel
Datum vložení: 17.9.2005 19:49:56
Jak vygenerovat z databáze [i]<title>[/i]??? Nějak sem to nepochopil. Dík za odpověď.
Datum vložení: 25.1.2006 21:25:49
<? if(IsSet($_GET['page'])): MySQL_Connect("localhost"); MySQL_Select_DB("pages"); $vysledek = MySQL_Query("SELECT url FROM p WHERE id = '$_GET[page]'"); $title = MySQL_Query("SELECT name FROM p WHERE id = '$_GET[page]'"); if(MySQL_NumRows($vysledek) == 1): $url = MySQL_Result($vysledek, 0, "url"); $name = MySQL_Result($title, 0, "name"); else: $url = "error.php"; endif; else: $url = "intro.php"; $name = "INDEX"; endif; ?> a do title sem vlozil <?echo $name?> Nejsem si jisty jestli to tak muzu napsat, ale funguje mi to...
Datum vložení: 27.1.2006 5:46:51
$vysledek = MySQL_Query("SELECT url FROM p WHERE id = '$_GET[page]'"); $title = MySQL_Query("SELECT name FROM p WHERE id = '$_GET[page]'"); tyhle dva radky se daji napsat i takhle...sem si to neuvedomil $vysledek = MySQL_Query("SELECT url,name FROM p WHERE id = '$_GET[page]'"); a v tomhle radku jen prepsat z $title na $vysledek. $name = MySQL_Result($title, 0, "name");
Datum vložení: 2.2.2006 16:32:29
Podle navodu a taky podle diskuze jsem udelal script, ktery ma za pomoci databaze dynamicky generovat jak cast stranky, tak i titulek, ale vypada to, ze nejspis nekde v zavolani dat z databaze bude chyba. Prosim poradte, vubec netusim, kde by to mohlo byt. Navic mi db ani script nehlasi zadnou chybu, jen to hodi dafaultne nastavenou stranku. script: <?php if(IsSet($_GET['p'])): // overeni existence 'p' MySQL_Connect("localhost"); // pripojeni k db MySQL_Select_DB("web_czif_net"); // zvoleni db $output = MySQL_Query("SELECT url,name FROM 1hry WHERE id = '$_GET[p]'"); // sql prikaz na url + name a ulozeni id do $p if(MySQL_NumRows($output) == 1): $url = MySQL_Result($output, 0, "url"); // url z db zapsana do $url $title = MySQL_Result($output, 0, "name"); // name z db zapsan do $title else: $url = "1-0start.php"; // kdyz neexistuje $url, tak do nej vloz uvodni stranku sekce ... $title = ""; // ... a navic vloz prazdny titulek, bo ho uz neni treba endif; else: $url = "1-0start.php"; // kdyz neexistuje $p, tak do nej vloz uvodni stranku sekce ... $title = ""; // ... a navic vloz prazdny titulek, bo ho uz neni treba endif; ?> zapis v XHTML: <title><?php echo $title ?> Hry - IF</title> ... <div> <?php require $url; ?> </div> V databazi uz tabulka s nazvem "1hry" vlozena je, data jsou tam snad napsana take dobre (pod spravnymi nazvy), ale kdyz kliknu na jakykoliv odkaz, tak se nacte jen uvodni stranka "1-0start.php". Pokud budete potrebovat jeste dalsi upresneni problemu, tak napiste co presne potrebujete a ja se pokusim dale specifikovat moje potize. Predem diky moc za odpovedi.
Datum vložení: 19.4.2006 9:57:28
pokud někdo zadá třeba kontakt.php tak se zobrazí prázdná stránka, protože je tam ta ochrana kódem (jasný) a mě by se líbilo, kdyby se zobrazil kontakt v indexu index.php?page=kontakt jde to vyřešit nějak elegantně nějakou jednodušší podmínkou ? (prázdná stránka je deprimující :))
Datum vložení: 12.5.2007 15:52:14
tento skript mi normalne funguje, ale akonahle stranku dam da php5.sk nejde, co tam musim upravit aby to islo?
Datum vložení: 22.8.2008 16:31:54
suvisi to asi s globalnymi premennymy na servery mozu byt zatrhnute