[ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.05.09
Prihlásený: 14.02.14
Príspevky: 106
Témy: 52 | 52
NapísalOffline : 10.06.2013 13:47 | PHP skripty bez ?>

Zdravím, mám dve otázky. Prvou z nich je prečo je bezpečné neukončovať skripty značkou ?>. Prečo je lepšie nedať am nič? Stretol som sa s tým na viacerých portáloch keď som si pozeral rôzne návody a postupy, ale nikde som nenašiel uspokojivú odpoveď. Tiež by som bol rád keby mi niekto objasnil nasledujúci kúsok kódu. Čo presne ošetruje ? Ďakujem za každú odpoveď.

Kód:
(empty($_GET['p'])) ? '' : $_GET['p'];


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 10.06.2013 13:56 | PHP skripty bez ?>

Určite php skripty ukončuj, kde si sa dočítal, že je to lepšie neukončovať?

Ten tvoj kus kódu je tzv. ternárny operátor a znamená to toto, trochu prehľadnejšie:
Kód:
$p = $_GET['p'];
empty($p) ? '' : $p;

funkcia empty zisťuje, či je $p prázdne.
Ternárny operátor znamená v postate toto
Kód:
if( empty($p) )
    dosaď '';
else
    dosaď $p;

len skracuje zápis a môže sa použiť "inline" Viac si môžeš vygoogliť :)
A že čo to ošetruje? No v tomto kontexte mi to príde trochu zbytočné, lebo je jedno, či použijem prázdnu hodnotu, alebo ''
Často sa to takto používa s funkciou isset, kde by použitie nedefinovanej premennej vyvolalo chybu.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.05.09
Prihlásený: 14.02.14
Príspevky: 106
Témy: 52 | 52
Napísal autor témyOffline : 10.06.2013 14:05 | PHP skripty bez ?>

Ďakujem za vysvetlenie. To s ukončovaním skriptov som sa dočítal napríklad tu:
Kód:
http://anantgarg.com/2009/03/13/write-your-own-php-mvc-framework-part-1/


Konkrétne: Notice that I have purposely not included the closing ?>. This is to avoid injection of any extra whitespaces in our output. For more, I suggest you view Zend’s coding style.

Podobné opatrenie som si všimol vo viacerých článkoch.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 10.06.2013 14:16 | PHP skripty bez ?>

Hm, ja s php v praxi nerobím, takže takéto vychytávky ma veru obchádzajú. Na tom odporúčanom Zend's coding style som sa dočítal toto
( http://framework.zend.com/manual/1.12/e ... tting.html )
Citácia:
For files that contain only PHP code, the closing tag ("?>") is never permitted. It is not required by PHP, and omitting it´ prevents the accidental injection of trailing white space into the response.

A dáva to aj celkom zmysel, že sa tak vyhneš nechceným bielym znakom na konci. Za ukončovacím php tagom sa už začne vyhodnocovať html a tam niečo môže náhodou ostať a takúto chybu by som veru nechcel hľadať vo veľkom projekte.

Ale je to len môj odhad, možno to má aj hlbší zmysel a napíše ti ho tu niekto viac znalý :)


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
PHP skripty bez ?>

Registrovaný: 05.02.13
Prihlásený: 26.10.23
Príspevky: 59
Témy: 3 | 3
NapísalOffline : 10.06.2013 22:32 | PHP skripty bez ?>

Ak nepoužívaš nejaký framework u ktorého sa to nedoporučuje, tak určite nie je naškodu php uzatvárať.
Avšak framework ako napr. Codeigniter - tak z vlastnej skúsenosti viem, že vo view súboroch sa nedoporučuje uzatvárať PHP.


Offline

Čestný člen
Čestný člen
PHP skripty bez ?>

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5404
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 10.06.2013 22:59 | PHP skripty bez ?>

BX (a ostatní) - už dlhú dobu je aj na php.net odporúčané vynechať ukončovaciu značku ?> - teda ak to situácia dovoľuje (ak je php priamo medzi html kódom, tak to možné nebude). Predídeš tak nechceným znakom.

PepperSK - codeigniter používam, ale chcel si asi napísať, že nepoužívajú ukončovacie značky v controlleroch, vo views, ak je tam HTML, ukončovaciu značku použiť musíš.


_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
 [ Príspevkov: 6 ] 


PHP skripty bez ?>



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Php skripty

v PHP, ASP

10

4896

28.09.2006 11:57

mokus

V tomto fóre nie sú ďalšie neprečítané témy.

Neviem spustat PHP skripty v PC

v PHP, ASP

1

519

26.02.2011 16:20

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

php ->mysql ->php Help.zoradit

v PHP, ASP

4

655

20.06.2009 12:44

KViki

V tomto fóre nie sú ďalšie neprečítané témy.

$pcforum->getForumActivity('PHP, ASP', 2012)/$pcforum->getForumActivity('PHP, ASP', 2022) - Warning: Division by zero

v PHP, ASP

4

2571

20.05.2022 13:51

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Skript bez bez PHP len s Thumbs.db

v Redakčné systémy

1

883

22.10.2008 20:14

mariachi

V tomto fóre nie sú ďalšie neprečítané témy.

Presun domeny -> Synology NAS -> Mail server -> Dynamicka IP -> DDNS -> SPAM???

v Úložné zariadenia

5

729

02.10.2018 14:46

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

PHP -> javacript

v PHP, ASP

10

532

26.04.2008 13:01

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

PHP -> XML

v PHP, ASP

3

661

01.05.2010 8:47

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

VBScript => PHP

v JavaScript, VBScript, Ajax

4

688

02.10.2009 10:04

Snacker

V tomto fóre nie sú ďalšie neprečítané témy.

php-fusion --> joomla?

v Redakčné systémy

0

570

26.02.2010 20:20

rEnEeK

V tomto fóre nie sú ďalšie neprečítané témy.

PHP bez netu

v PHP, ASP

2

540

14.04.2009 13:37

lio

V tomto fóre nie sú ďalšie neprečítané témy.

php bez prípony

v PHP, ASP

13

747

14.03.2008 17:20

Svolo

V tomto fóre nie sú ďalšie neprečítané témy.

<select> v PHP

v PHP, ASP

5

1163

18.04.2007 18:16

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

php-fusion->new panel

v Redakčné systémy

4

1179

26.07.2007 23:27

Darkage

V tomto fóre nie sú ďalšie neprečítané témy.

>100°C bez záťaže

v Intel čipové sady

6

524

02.07.2014 14:33

Kraliček

V tomto fóre nie sú ďalšie neprečítané témy.

Ajax + PHP Class - server bez reakcie

v JavaScript, VBScript, Ajax

3

621

20.07.2013 2:36

math-ew



© 2005 - 2024 PCforum, edited by JanoF