[PHP] Werking <?= tag

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Demonitzu
  • Registratie: Augustus 2012
  • Niet online

Demonitzu

Incidentele gebruiker

Topicstarter
Ik ben min of meer per ongeluk achter de <?= tag in php gekomen. Ik kan er niets over vinden op Google omdat het geen geldige zoekterm is. Ik heb de onderstaande code succesvol uitgetest. Kan ik er vanuit gaan dat <?= hetzelfde is als <?php echo?

PHP:
1
2
3
4
5
<?php while ($row = $query->fetch_array()) : ?>
    <div>
        <a href="/<?php echo get_slug($row['title']) ?>/<?php echo $row['title'] ?>"</a>
    </div>
<?php endwhile; ?>


PHP:
1
2
3
4
5
<?php while ($row = $query->fetch_array()) : ?>
    <div>
        <a href="/<?= get_slug($row['title'])?>/<?= $row['title'] ?>"</a>
    </div>
<?php endwhile; ?>

TekkenZone - Dutch Tekken Community

Beste antwoord (via Demonitzu op 26-05-2016 12:49)


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Correct.

Dat ding heet overigens de 'short echo tag'.

[ Voor 75% gewijzigd door CyBeR op 26-05-2016 03:34 ]

All my posts are provided as-is. They come with NO WARRANTY at all.

Alle reacties


Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Correct.

Dat ding heet overigens de 'short echo tag'.

[ Voor 75% gewijzigd door CyBeR op 26-05-2016 03:34 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • +1 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 11-10 20:24
Wel mee oppassen, sommige hostings hebben die uitstaan. In php.ini kan je ze disablen/enablen maar soms (of altijd als default bij nieuwe installatie?) staat die setting uit.

[ Voor 11% gewijzigd door Merethil op 26-05-2016 06:28 ]


Acties:
  • +2 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 11:22
Merethil schreef op donderdag 26 mei 2016 @ 06:27:
Wel mee oppassen, sommige hostings hebben die uitstaan. In php.ini kan je ze disablen/enablen maar soms (of altijd als default bij nieuwe installatie?) staat die setting uit.
Tegenwoordig werkt de short echo altijd, alleen de short open (<?) kan worden uitgeschakeld. Dit omdat deze conflicteert met XML. Maar vroeger viel <?= inderdaad onder dezelfde setting, maar sinds 5.3? is dat al niet meer zo.

Acties:
  • +1 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 11-10 20:24
RobertMe schreef op donderdag 26 mei 2016 @ 07:15:
[...]

Tegenwoordig werkt de short echo altijd, alleen de short open (<?) kan worden uitgeschakeld. Dit omdat deze conflicteert met XML. Maar vroeger viel <?= inderdaad onder dezelfde setting, maar sinds 5.3? is dat al niet meer zo.
Ah bedankt voor de opheldering, weer wat geleerd. (Gebruik zelf PHP hoogstens eens per jaar en dan alleen met oudere versies vanwege wat legacy spul op het werk)

Acties:
  • +1 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

RobertMe schreef op donderdag 26 mei 2016 @ 07:15:
[...]

Tegenwoordig werkt de short echo altijd, alleen de short open (<?) kan worden uitgeschakeld. Dit omdat deze conflicteert met XML. Maar vroeger viel <?= inderdaad onder dezelfde setting, maar sinds 5.3? is dat al niet meer zo.
Dat is sinds 5.4 inderdaad.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • +1 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Zie ook documentatie echo.
echo also has a shortcut syntax, where you can immediately follow the opening tag with an equals sign. Prior to PHP 5.4.0, this short syntax only works with the short_open_tag configuration setting enabled.

PHP:
1
I have <?=$foo?> foo.

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • Demonitzu
  • Registratie: Augustus 2012
  • Niet online

Demonitzu

Incidentele gebruiker

Topicstarter
Bedankt voor de reacties! Ik heb zelf de short tags uitgeschakeld via php.ini, mede daardoor viel de functionaliteit van deze short echo me op :)

TekkenZone - Dutch Tekken Community


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Let wel even op dat je geen XSS lek creeert door $row['title'] niet te escapen. Je kan ook eens kijken naar n template engine als Twig (http://twig.sensiolabs.org/) om het leven je makkelijker te maken.

Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 11-10 19:53

Ventieldopje

I'm not your pal, mate!

Cartman! schreef op donderdag 26 mei 2016 @ 16:16:
Let wel even op dat je geen XSS lek creeert door $row['title'] niet te escapen. Je kan ook eens kijken naar n template engine als Twig (http://twig.sensiolabs.org/) om het leven je makkelijker te maken.
Escapen en checken moet je vooral doen als je dingen in de database stopt. Denk dat het risico in dit geval miniem is ;)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • +1 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Neen. Bij je db insert moet je escapen zodat je query syntax zoals bedoeld blijft. En in je output moet je escapen zodat je html syntax zoals bedoeld blijft.

Zorg gerust voor abstracties welke deze zorgen voor je wegnemen, maar elke andere wijze van escapen is feitelijk fout en zal altijd een bad practice blijven.

{signature}


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ventieldopje schreef op donderdag 26 mei 2016 @ 17:27:
[...]


Escapen en checken moet je vooral doen als je dingen in de database stopt. Denk dat het risico in dit geval miniem is ;)
Wat Voutloos zegt: alleen input escapenfilteren is onvoldoende. Misschien wel een van de grootste misvattingen dat output niet meer escaped hoeft te worden waar flinke hacks uit voortgekomen zijn.
Pagina: 1