HTML / PHP - Textarea informatie submitten

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • l_braam
  • Registratie: Mei 2016
  • Laatst online: 16-11-2022
op voorhand zeg ik alvast dat ik geen verstand heb van zowel HTML als PHP.

Op het werk neem ik een project van een ex collega over. Dit is een HTML/PHP site die enkel data toonde uit een SQL database.
Nu wil ik een textarea maken waarin de data uit een SQL text column wordt getoond. Hier kunnen collega's dan veranderingen in aanbrengen en op "Submit" drukken om de aangepaste tekst terug te schieten de SQL database in. Zo willen we een soort van support.txt bijhouden bij bepaalde systemen.

Op dit moment heb ik het volgende de functie "Details" die een pagina toont. Op deze pagina bevindt zich de volgende div, welke de informatie uit de database weergeeft in een textarea.
HTML:
1
2
3
4
5
6
7
       <div  id="supporttxt" class="box" style="width: 100%;margin-bottom: 20px;">
        <div class="boxhead">Support.txt</div>
            <div class="boxbody">
<textarea name="Text1" id="OnlineTekst" cols="40" rows="5"><?php echo getOnlineSupportTXTInfo($id) ?></textarea>
<INPUT type="submit" value="Send"></INPUT>
</div>
</div>


en de volgende twee functies. de eerste functie haalt de gegevens op van de database en zet deze in een makkelijk leesbaar formaat.
De tweede functie moet de database updaten.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function getOnlineSupportTXTInfo($id)
{
    global $link;
    $sectie = "";
    
    $html = "";
    
    $sql =  "SELECT TekstOnline FROM support WHERE ID = '" . $id . "'\n";
    $query = mysqli_query($link, $sql) or die("<pre>" . $sql . "</pre>" . mysqli_error($link));     
    //echo "<!--\n" . $sql . "\n-->\n";
    
    while ($data = mysqli_fetch_array($query)) //get data from sql
    {
        $html .= Trim(htmlspecialchars($data[0]));
    
    }
    
    $html = str_replace("&lt;BR&gt;", "<BR>", $html);

    mysqli_free_result($query);
    return $html;
}

function setOnlineSupportTXTInfo($tekst, $id)
{
    global $link;

    $sql = "UPDATE support SET TekstOnline = '" . $tekst . "' WHERE ID = '" . $id . "'\n"; 
    $query = mysqli_query($link, $sql) or die("<pre>" . $sql . "</pre>" . mysqli_error($link));     

        mysqli_free_result($query);
}


Nu lukt het me niet om de tweede functie setOnlineSupportTXTInfo met de beide argumenten te koppelen aan de button.
Met enkel de id variabele lukt me dit wel.

Wat ik al gevonden of geprobeerd heb
de volgende sites heb ik geraadpleegd
https://stackoverflow.com...-to-php-using-id-not-name
https://www.w3schools.com...name=tryhtml5_button_form

Moet ik dit op een totaal andere manier aanpakken of is er een manier om dit werkend te krijgen?
Belangrijk is wel dat ik verder werk op het fundament van een ex-collega en niet de tijd heb om alles aan te passen.

bij voorbaat dank

[ Voor 0% gewijzigd door RobIII op 07-08-2018 17:58 . Reden: Code tags gefixed ]

Beste antwoord (via l_braam op 08-08-2018 08:22)


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 13:06

orf

Poe daar gaat best veel mis:

Alle reacties


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

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 13:06

orf

Poe daar gaat best veel mis:

Acties:
  • +3 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
l_braam schreef op dinsdag 7 augustus 2018 @ 17:03:
op voorhand zeg ik alvast dat ik geen verstand heb van zowel HTML als PHP.

Op het werk neem ik een project van een ex collega over. Dit is een HTML/PHP
8)7 Waarom neem je 't dan over? Of verdiep je in HTML/PHP, of geef 't project aan iemand die er wél (al) verstand van heeft. Besteed 't desnoods uit.

Verder: voor 't posten van code kun je code tags gebruiken i.p.v. [quote]-tags.

Qua inhoudelijke feedback sluit ik me helemaal aan bij orf in "HTML / PHP - Textarea informatie submitten". Dit is een disaster waiting to happen...

[ Voor 13% gewijzigd door RobIII op 07-08-2018 17:59 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • l_braam
  • Registratie: Mei 2016
  • Laatst online: 16-11-2022
@orf bedankt voor je antwoord! Hier kom ik wel verder mee, ik zal deze punten is onderzoeken.

@RobIII Omdat we geen IT partij zijn en dit slechts een klein onderdeel is van onze interne automatisering. Ik heb ooit vanuit school een heel klein beetje Java geprogrammeerd vandaar dat ik deze opdracht kreeg.
Met deze opdracht verdiep ik me ook direct in PHP/HTML, er is geen tijd om hier een cursus voor te volgen.
Verder kan ik weinig met je reactie. Mocht je tips hebben graag, hou nutteloos commentaar voor jezelf

Acties:
  • +3 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Nu online
@RobIII heeft hier een sterk punt, je wil niet een half brakke “oplossing” opleveren waar jij verantwoordelijk voor gaat zijn. Als het dalijk niet werkt, mag jij “support” gaan leveren. Vraag jezelf af hoe bedrijfskritiek dit systeem is en of jij daar de verantwoordelijkheid voor wil gaan nemen.

Verder vind ik het niet een respectvolle manier om om te gaan met mensen die geen enkele verplichting naar jou hebben en je alleen proberen te helpen.

Acties:
  • +7 Henk 'm!

  • l_braam
  • Registratie: Mei 2016
  • Laatst online: 16-11-2022
@Marco1994 Dit voelt voor mij niet zo. Roblll start zijn post met een emoticon die insinueert dat ik dom ben, dit voelt voor mij direct als een aanval en vrij respectloos. Tevens vind ik het geen helpen wat hij doet, hij zou helpen wanneer hij zijn vragen respectvol stelt en hier commentaar bij zou kunnen geven. Zoals jij in je post doet.

Dit is voor mij een opdracht die ik van hogerhand heb ontvangen en dien uit te voeren. Ik heb hier de komende weken genoeg uren voor gekregen. verder begrijp ik dat ik hier support op zal moeten leveren. Daarom hoop ik dat ik, eventueel met jullie hulp, de code ga berijpen en het voor 75% duidelijke en voor iedereen leesbare PHP code wordt.

Acties:
  • +1 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

RobIII schreef op dinsdag 7 augustus 2018 @ 17:57:
8)7 Waarom neem je 't dan over? Of verdiep je in HTML/PHP, of geef 't project aan iemand die er wél (al) verstand van heeft. Besteed 't desnoods uit.
Misschien is er geen collega die al wel verstand ervan heeft of is @l_braam de medewerker met de meeste kennis ervan en is dat bij zijn collega's dus (veel) minder. ;) Dit is wel kortzichtig / kort door de bocht, als ik heel eerlijk ben.

Als projectje om het op te pakken / te leren, zul je toch ergens moeten beginnen, als je het jezelf aan moet leren. ;) Dit lijkt mij prima klein genoeg om dat mee te kunnen doen. Op deze manier zet je alleen maar een negatieve toon, dat lijkt me niet de bedoeling. ;)
Dit is een disaster waiting to happen...
Dit. Helemaal mee eens, maar gezien het een intern iets is, zal dat vast niet heel gauw gebeuren, zolang er goed mee wordt omgesprongen, laat ik dat er wel bij zeggen. Een paar steekwoorden voor @l_braam om hem in de juiste richting te zetten had dan wellicht zeer handig geweest. De inkoppers voor mij zijn in elk geval; SQL injection, prepared statements, escaping en eventueel input validation. Laatstgenoemde zou ik ten alle tijden doen, zodat je zeker weet dat wat in de database komt, niet voor problemen kan zorgen later.

[ Voor 15% gewijzigd door CH4OS op 08-08-2018 09:18 ]


Acties:
  • +1 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 13:17

AW_Bos

Liefhebber van nostalgie... 🕰️

l_braam schreef op woensdag 8 augustus 2018 @ 08:53:
@Marco1994 Dit voelt voor mij niet zo. Roblll start zijn post met een emoticon die insinueert dat ik dom ben, dit voelt voor mij direct als een aanval en vrij respectloos.
Ik zie het meer als een "Krijg nou wat, dit kan je niet menen". Ik insinueer dit niet echt als 'domme topicstarter'.

Als ik eerlijk mag zeggen, ga ik ook met de rest mee. Je geeft al aan dat je er geen verstand van hebt, en dus maar een beetje mee aan het rondprutsen is. Je bent dus niet op de hoogte van de werking van PHP en eventuele veiligheidslekken. Ik moet er niet aan denken dat als ik klant zou zijn, dat er door jouw een veiligheidslek in zit waarmee anderen aan de haal kunnen gaan met mijn gegevens. En dan heb je mooi wat uit te leggen aan de Autoriteit Persoonsgegevens, plus dat je mogelijk met je bedrijf in de media bekend staat met je datalek.

Mijn advies: Laat het uitbesteden aan iemand anders, en praat er met je leidinggevende over. In de tussentijd kan jij voor je eigen lekker zelf lekker vanaf hoofdstuk 1 in PHP beginnen, en als je echt rijp bent (duurt wel een hoop maanden) dan kan je de boel weer oppakken. Het zou zeker een goede oplossing zijn om een externe audit uit te laten voeren.

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • +3 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

AW_Bos schreef op woensdag 8 augustus 2018 @ 10:18:
Mijn advies: Laat het uitbesteden aan iemand anders, en praat er met je leidinggevende over. In de tussentijd kan jij voor je eigen lekker zelf lekker vanaf hoofdstuk 1 in PHP beginnen, en als je echt rijp bent (duurt wel een hoop maanden) dan kan je de boel weer oppakken. Het zou zeker een goede oplossing zijn om een externe audit uit te laten voeren.
Ik heb niet de indruk dat dit gebruikt wordt als tool wat publiekelijk online verschijnt, anders hadden de issues die jij schetst er allang en breed geweest. Het is mij vrijwel duidelijk dat dit een tool is voor intern gebruik, wat is er mis mee om dat te gebruiken om PHP te leren? :?

Jammer dat deze (imo zwaar offtopic) discussie nu de werkelijke vraag ondersneeuwt doordat een mod het topic derailed. Hebben de meesten hier PHP ook niet via zelf-studie geleerd? Wat is er mis mee als @l_braam dat anno 2018 ook doet?

Dit soort reacties halen topics en topicstarters gigantisch onderuit, de topicstarter heeft er bovendien niets aan (want hij wilt het zelf leren) en uiteindelijk wordt het topic gesloten omdat het topic derailed is en dat is gewoon zonde. Kunnen we hem niet gewoon op weg helpen, dat is alles wat 'ie vraagt. Als jou dat wel teveel gevraagd is, kun je ook ervoor kiezen niet te reageren en als het buiten beleid valt, een topic report te doen.

[ Voor 18% gewijzigd door CH4OS op 08-08-2018 11:16 ]


Acties:
  • +1 Henk 'm!

  • l_braam
  • Registratie: Mei 2016
  • Laatst online: 16-11-2022
@CH4OS Dankje, zo zie ik het ook!

@AW_Bos Het wordt inderdaad rond prutsen, maar in mijn ogen leer je zo het snelst. Uiteraard zal dit niet volledig volgens de PHP standaard gaan en streef ik naar 75% PHP standaard.
Volgens een oud klasgenoot die meer verstand heeft van PHP is het al een grote spaghetti code graaibak.

Met de beveiliging is al rekening gehouden doordat het enkel via de citrix omgeving van het bedrijf beschikbaar is. Ook staan er geen persoonsgegevens in, dus de AVG is hierop niet van toepassing.

Acties:
  • +1 Henk 'm!

  • Josk79
  • Registratie: September 2013
  • Laatst online: 06-10 21:43
Dingen waar je rekening mee moet houden zijn inderdaad:

SQL Injectie
Als er een ' in de textfield staat en je op de bestaande manier setOnlineSupportTXTInfo() gebruikt, gaat het mis. In principe maak je je database nu kwetsbaar voor hackers. Zie hier informatie over prepared statements om dit op te lossen: http://php.net/manual/en/mysqli.prepare.php

Gebruik maken van PDO vind ik persoonlijk makkelijker en meer future proof, maar gezien je al een bestaand project hebt met mysqli is daar niets mis mee.

Html escapen
Ook zal de tekst op het form moeten worden ge-escaped. Dat wordt nu reeds gedaan met htmlspecialchars in de getOnlineSupportTXTInfo. Ik zou er zelf voor kiezen dit bij het renderen van het form zelf doen, maar dat mag je zelf bepalen. Het verhaal met <br> in getOnlineSupportTXTInfo is onzin.

Form submit
Zoals @orf reeds zegt moet je het geheel in <form> tags plaatsen. Als je method 'POST' gebruikt kun je het textarea dan in PHP uitlezen met:
PHP:
1
$text1 = $_POST['Text1'];

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Josk79 schreef op woensdag 8 augustus 2018 @ 11:00:
Het verhaal met <br> in getOnlineSupportTXTInfo is onzin.
Doordat het opgeslagen wordt met htmlspecialchars() worden HTML-tags omgezet naar tekst, < en > worden dan omgezet naar hun respectievelijke HTML-entities. Ik begrijp dus even niet waarom het onzin is, zou je het niet doen, krijg je namelijk <br> te zien ipv dat de tekst naar een nieuwe regel gaat. Links- of rechtsom moeten de newlines omgezet worden naar <br />. ;)

[ Voor 8% gewijzigd door CH4OS op 08-08-2018 11:13 ]


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 13:17

AW_Bos

Liefhebber van nostalgie... 🕰️

l_braam schreef op woensdag 8 augustus 2018 @ 10:39:
@AW_Bos Het wordt inderdaad rond prutsen, maar in mijn ogen leer je zo het snelst. Uiteraard zal dit niet volledig volgens de PHP standaard gaan en streef ik naar 75% PHP standaard.
Volgens een oud klasgenoot die meer verstand heeft van PHP is het al een grote spaghetti code graaibak.

Met de beveiliging is al rekening gehouden doordat het enkel via de citrix omgeving van het bedrijf beschikbaar is. Ook staan er geen persoonsgegevens in, dus de AVG is hierop niet van toepassing.
Hoe meer spaghetti, hoe minder overzicht je over de code hebt en hoe lastig het te debuggen wordt.

Mijn advies, en ik hoop dat je het van harte neemt: Stop er mee, en ga eerst fatsoenlijk PHP leren.
Rond prutsen in PHP gaat nooit werken. Je MOET weten wat je DOET. Straks heb je zo'n partij bugs dat het programma haast onwerkbaar is geworden, en dat je moeilijk dingen kan toevoegen. Plus dat je veel dubbele code hebt wat je zeker moet vermijden. En dat resulteert in extra ontwikkeltijd wat ongelijk onnodig is.

De beste opzet is een Object Oriented opbouw van je code, verdeeld in classes en methods (functies). Dus eigenlijk moet daar naar toe worden gewerkt.

[ Voor 18% gewijzigd door AW_Bos op 08-08-2018 11:21 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • +1 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

AW_Bos schreef op woensdag 8 augustus 2018 @ 11:16:
Mijn advies, en ik hoop dat je het van harte neemt: Stop er mee, en ga eerst fatsoenlijk PHP leren.
Rond prutsen in PHP gaat nooit werken. Je MOET weten wat je DOET.
Hij wil PHP dus leren aan de hand van dit project, zoals meermaals intussen aangegeven. Dan lijkt me dat dit vrij nutteloos is, waarom dan sommige woorden opeens in hoofdletters moeten, is dan ook overdreven. Voor de rest zie ik ook totaal geen onderbouwing, dus vraag ik mij af waarom iemand dit überhaupt ter harte zou moeten nemen.

Retorisch; Kon jij zelf direct zo goed programmeren dan? Hoe heb je dat geleerd? Door eerst een saai boek over de taal te lezen en voordat je de taal überhaupt kende begon met daadwerkelijk er in te programmeren? Een taal als PHP verandert continue, programmeer jij nog zoals jij het destijds leerde?

Mijn aanpak was totaal anders, ik las me in en ik probeerde wat ik geleerd had direct uit, lijkt me geen methode waar veel mis mee is. Zeker niet toen ik ermee begon, medio 2002/2003, zoiets.

Ik dacht dat dit een forum was om mensen te helpen bij problemen. @l_braam geeft aan niet helemaal de kennis te hebben, maar aan de hand van dit project het wel te willen leren. Hij laat zien wat hij zelf zoal gevonden en geprobeerd heeft, dat lijken me de twee belangrijkste factoren om hem te helpen.

Jammer dat het zo de grond in geboord moet blijven worden. Aan de discussie of hij het al dan niet zou moeten doen, heeft hij reeds al aangegeven daar geen behoefte aan te hebben, waarom dan erop doorhameren? Je kent de exacte situatie niet waarom hij ermee aan de slag gaat. Enige dat je weet is dat de PHP-kennis van de TS beperkt is, maar hij is wel bereid het te leren en doet dit met behulp van een intern-only tool. Wellicht is de TS de enige binnen het bedrijf die enigszins het probleem met de tool kan oplossen.

En ja, ik ben het met je eens dat de code slecht (waarschijnlijk wat jaren oud en zo, want collega die het gemaakt heeft is intussen vertrokken en nu zijn er problemen verschenen) is, maar dat betekend niet dat je hem niet de goede weg op kan helpen, toch? Dat je niet moet willen werken aan dergelijk oude en onveilige code, terwijl je zelf nauwelijks bekend bent met de materie, is vrij logisch en begrijp ik volkomen, maar TS en bedrijf waar hij werkt, heeft anders besloten, gok ik zo.

[ Voor 30% gewijzigd door CH4OS op 08-08-2018 11:31 ]


Acties:
  • +1 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 13:17

AW_Bos

Liefhebber van nostalgie... 🕰️

Als hij al zegt dat het spaghetticode is, dan heb ik één advies: Niet daarmee verder rommelen. Dat lijkt mij al een duidelijk statement, toch ;)?

Als je PHP wilt leren zijn er een hoop boeken, en tutorials, en CodeAcademy geeft mijn voorkeur.
Ikzelf heb vroeger veel met boeken geleerd, en daarna door veel op forums zoals Tweakers, Webmensen (kennen we dat nog?) en PHPhulp zitten struinen. Verder is het doorlezen van manuals op php.net zeker een aanrader als je de werking van een functie in PHP wilt weten.

Uiteraard blijf ik vaak op forums rondneuzen en migration-details bekijken van nieuwe PHP releases.

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

AW_Bos schreef op woensdag 8 augustus 2018 @ 11:29:
Als hij al zegt dat het spaghetticode is, dan heb ik één advies: Niet daarmee verder rommelen. Dat lijkt mij al een duidelijk statement, toch ;)?
Maar verder helpt het @l_braam ook totaal niet de juiste richting op en kan hij er dus verder ook niets mee.
En dat is wat ik juist op gang probeer te krijgen, maar wat blijkbaar moeilijk is (voor sommigen), jammer genoeg. ;)

Ik heb net ook even op de CodeCademy website gekeken, maar die heeft intussen zover ik kan zien, niets over PHP, helaas. Dat hadden ze vroeger dacht ik wel. Wellicht is dan Coursera een optie.

[ Voor 27% gewijzigd door CH4OS op 08-08-2018 11:39 ]


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 13:17

AW_Bos

Liefhebber van nostalgie... 🕰️

CH4OS schreef op woensdag 8 augustus 2018 @ 11:33:
Ik heb net ook even op de CodeCademy website gekeken, maar die heeft intussen zover ik kan zien, niets over PHP, helaas. Dat hadden ze vroeger dacht ik wel. Wellicht is dan Coursera een optie.
Ook matig :/
En dat terwijl PHP één van de meestgebruikte talen is...

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

AW_Bos schreef op woensdag 8 augustus 2018 @ 11:47:
Ook matig :/
En dat terwijl PHP één van de meestgebruikte talen is...
De PHP course op CodeCademy is inderdaad verdwenen, want zou (te) oud, buggy en de minst gebruikte cursus zijn. Ook online cursussen moeten bijgehouden worden immers, om bij te zijn en blijven met de taal. ;) En gebruikt, om het überhaupt zinvol te laten zijn er beheer op uit te voeren. ;)

Maar goed, kunnen we nu @l_braam echt gaan helpen? :p :+

[ Voor 17% gewijzigd door CH4OS op 08-08-2018 11:56 ]


Acties:
  • +3 Henk 'm!

  • Audi-Arjan
  • Registratie: November 2011
  • Laatst online: 06-10 22:38

Audi-Arjan

★★★★★

Wat ik ook niet snap is dat iedereen het over een programma heeft.
TS wil enkel 1 veld editen en updaten.

Dit is echt een basis dingetje en ideaal voor TS om een start te maken in PHP.

Ik sluit me helemaal aan bij @CH4OS, laat TS lekker al doende leren en gewf hem wat tips om op weg te komen.

Mijn tip: begin opnieuw!
Je kunt dan zelf maken wat je nodig hebt ipv (wellicht verkeerd genaakte) code van een ander debuggen.

Feitelijk heb je alleen maar een formulier nodig die in een hidden field een id laad, een textarea die supportTXT toont en een update/submit knop.

Als je daarbij gebruik maakt van eerder genoemde security tips komt het echt helemaal goed.

Acties:
  • +1 Henk 'm!

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

CH4OS schreef op woensdag 8 augustus 2018 @ 11:11:
[...]
Doordat het opgeslagen wordt met htmlspecialchars()
Dat wordt het niet en is ook niet nodig.
Ik begrijp dus even niet waarom het onzin is, zou je het niet doen, krijg je namelijk <br> te zien ipv dat de tekst naar een nieuwe regel gaat. Links- of rechtsom moeten de newlines omgezet worden naar <br />. ;)
Voor weergave in een textarea volstaat htmlspecialchars() prima. Line breaks zullen gewoon intact blijven. Voor andere presentaties kun je nl2br in combinatie met htmlspecialchars() gebruiken, zodat bij input <br> tags overbodig zijn.

Dus zoiets:
PHP:
1
2
3
4
5
6
7
function getOnlineSupportTXTInfo($id) {
    // query
    while ($data = mysqli_fetch_array($query)) {
        $html .= $data[0];
    }
    return $html;
}

HTML:
1
2
3
<textarea>
    <?php echo htmlspeciachars(getOnlineSupportTXTInfo($id)) ?>
</textarea>

HTML:
1
2
3
<div>
    <?php echo nl2br(htmlspeciachars(getOnlineSupportTXTInfo($id))) ?>
</div>


En dan, behalve de genoemde maatregelen tegen sql-injectie, nog her en der wat checks zodat de boel niet overloopt van de foutmeldingen omdat bijvoorbeeld $id niet bestaat.
CH4OS schreef op woensdag 8 augustus 2018 @ 10:33:
Het is mij vrijwel duidelijk dat dit een tool is voor intern gebruik, wat is er mis mee om dat te gebruiken om PHP te leren? :?
De tool kan onbruikbaar worden. De data die de tool manipuleert kan onbetrouwbaar worden.

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Acties:
  • +1 Henk 'm!

  • basvdijk1647
  • Registratie: Februari 2003
  • Laatst online: 16-08 16:48

basvdijk1647

aka Osiris

Zou voor het leren van PHP iets als Udemy uitkomst kunnen bieden? Je leert dan via video, opbouwend hoe e.e.a. werkt bijvoorbeeld https://www.udemy.com/php-for-beginners-/

Ontwikkelaar van de Drammer whisky app voor Android en iOS / arduino-lessen.nl / blender-lessen.nl


Acties:
  • +2 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

CH4OS schreef op woensdag 8 augustus 2018 @ 10:33:
[...]
Ik heb niet de indruk dat dit gebruikt wordt als tool wat publiekelijk online verschijnt, anders hadden de issues die jij schetst er allang en breed geweest. Het is mij vrijwel duidelijk dat dit een tool is voor intern gebruik, wat is er mis mee om dat te gebruiken om PHP te leren? :?

Zodra de gebruikersgroep duidelijk bekend is én duidelijk is dat de applicatie erg onveilig is en daarmee alles wat op die server draait, hoeft het geen probleem te zijn om zo iets intern te gebruiken. Echter wordt dit vaak onderschat en de gevaren worden vergeten. De problemen komen dan met function creep omdat het later misschien handig is als die klant/leverancier óók een ticket in kan schieten en we hebben die tool toch al.

Het is wel een prima project om van te leren maar daarna (of tijdens) is het wel handig om de code eens te laten bekijken door iemand die er iets meer verstand van heeft. Maar goed dat is uiteraard een beslissing van het management en niet van TS.

Acties:
  • 0 Henk 'm!

  • Josk79
  • Registratie: September 2013
  • Laatst online: 06-10 21:43
CH4OS schreef op woensdag 8 augustus 2018 @ 11:11:
[...]
Doordat het opgeslagen wordt met htmlspecialchars() worden HTML-tags omgezet naar tekst, < en > worden dan omgezet naar hun respectievelijke HTML-entities. Ik begrijp dus even niet waarom het onzin is, zou je het niet doen, krijg je namelijk <br> te zien ipv dat de tekst naar een nieuwe regel gaat. Links- of rechtsom moeten de newlines omgezet worden naar <br />. ;)
Dat is wel onzin, er is geen verschil tussen:
HTML:
1
<textarea>Tweakers<br>is<br>leuk.</textarea>

of
HTML:
1
<textarea>Tweakers&lt;br&gt;is&lt;br&gt;leuk.</textarea>


Het wordt hoedanook getoond als <br>.

Het zou makkelijker zijn als Text1 in de database wordt opgeslagen as is (dus met new line inplaats van <br>) en bij het renderen de juiste escape-functie gebruiken. Voorbeeld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    $text1 = "Tweakers\nis\nleuk!";

    //Of: 
    // $text1 = getOnlineSupportTXTInfo((int)$_GET['id']);
    // Maar dan wel getOnlineSupportTXTInfo zodanig aangepast dat deze geen htmlspecialchars en str_replace doet...

?><!DOCTYPE html>
<html lang="nl">
    <head>
        <title>Titel</title>
    </head>
    <body>
        <div><?php echo nl2br($text1); ?></div>
        <textarea><?php echo htmlspecialchars($text1); ?></textarea>
    </body>
</html>


Hier ben ik ber bij de div vanuit gegaan dat ook html-tags gebruikt kunnen worden. (Met de nodige kans op XSS :) )


...eigenlijk precies wat @8088 reeds zei...

Leesvoer: https://www.phptherightway.com

[ Voor 6% gewijzigd door Josk79 op 08-08-2018 17:43 ]


Acties:
  • +4 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Ja, we zijn allemaal ergens ooit begonnen. Er is ook helemaal niks mis mee dat @l_braam het nu ook leert.

Echter....
In het jaar 2000 was het leren van PHP een stuk simpeler en de beveiliging net zo ruk, maar toen nog niet echt een probleem.
Anno 2018 weet elke doorgewinterde PHP'er dat die zijn code uit het jaar 2000 nu nooit op internet zou durven zetten (in welke vorm dan ook).

Zie het als een auto uit 1985 zonder gordels, airbags, eps, abs, startonderbreker, etc. etc. etc.
Waar rij je liever in anno 2018? ;)

Het probleem hier is dat iedereen met kennis weet dat het gevaarlijk is, maar bekijk het ook eens van de andere kant: wie nu begint moet 1000x meer leren in 1 maand dan jij in 2000!

Bedrijfsmatig (intern of extern maakt niets uit) is dit dus anno 2018 wel een belangrijk punt.
Dat @RobIII dit dus aankaart is zeer terecht.

Ik vind het goed van het bedrijf dat @l_braam ruim de tijd krijgt om het te leren.
Een PHP professional doet dit vast in 15 minuten á €120 per uur en is goedkoper dan werknemer á € 25 per uur die er een week aan mag werken.

Echter met de beveiligingsstandaarden anno 2018 is één ding belangrijk: alles wat je leert nooit in een live omgeving gebruiken en dus vernietigen!

Om even een voorbeeld te geven: ik kwam vandaag een "Senior Lead Developer" tegen omdat zijn naam en functie en linkedin pontificaal in de broncode van een website staan.
Op LinkedIn wordt duidelijk dat hij welgeteld 2 jaar werkervaring heeft en wat studies heeft gevolgd (waaronder een master in security).
De code is om van te huilen, vol met bugs, beveiligingsproblemen en zelfs een onveilige PHP/5.5.9.
En waarom? Nou die persoon had zijn naam geplakt in een aangepaste osTicket

Oftewel, nogmaals: leren is goed, het gebruiken anno 2018 niet (tenzij je baas je niet verantwoordelijk stelt voor de problemen).

Daarom geef ik je graag de volgende tip mee:
PHP:
1
2
3
if (0 !== strpos($_SERVER['REMOTE_ADDR'], '192.168.')) {
    exit('Deze code is zeer onveilig! Nooit online gebruiken anders worden we gehackt!');
}


Ja het was makkelijker geweest als je 18 jaar geleden was begonnen.
Ik wens je veel succes met je studieproject!

Maak je niet druk, dat doet de compressor maar


Acties:
  • +6 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Daarom blijft het ook intern. :)

Wel een mooie topic om te laten zien waarom mensen huiverig zijn om vragen te stellen.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Laurensius88
  • Registratie: Januari 2013
  • Laatst online: 12:33
Sandor_Clegane schreef op donderdag 9 augustus 2018 @ 10:54:
Daarom blijft het ook intern. :)

Wel een mooie topic om te laten zien waarom mensen huiverig zijn om vragen te stellen.
Precies dit inderdaad!

@l_braam heb je toevallig een update? Hoe gaat het?

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Sandor_Clegane schreef op donderdag 9 augustus 2018 @ 10:54:
Wel een mooie topic om te laten zien waarom mensen huiverig zijn om vragen te stellen.
Als PHP nou gewoon de SplType standaard had gemaakt, hoeven de professionals niet moord en brand te schreeuwen over beveiliging ;)

Maak je niet druk, dat doet de compressor maar


Acties:
  • +1 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

DJMaze schreef op donderdag 9 augustus 2018 @ 13:06:
[...]

Als PHP nou gewoon de SplType standaard had gemaakt, hoeven de professionals niet moord en brand te schreeuwen over beveiliging ;)
Dan zijn er wel weer andere spectaculaire manieren om jezelf in voet te schieten. :)

Less alienation, more cooperation.


Acties:
  • +3 Henk 'm!

  • Groax
  • Registratie: Oktober 2012
  • Laatst online: 02-10 11:33
Hier heb ik een uitwerken voor je. had ff niks te doen en vond dit wel een leuke opdracht :D

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

//Import je bestand.

require_once 'support.php';

?>

<div id="supporttxt" class="box" style="width: 100%;margin-bottom: 20px;">
    <div class="boxhead">Support.txt</div>
    <div class="boxbody">
    <!--Gebruik een Form zoals deze. Vul action in voor als je je PHP bestand ergens anders hebt staan.-->
    <!--Let wel op dat je dan naar die pagina gaat. nu blijf je op de zelfde-->
        <form action="#" method="post">

            <!--Zorg dat je ID is gezet. in dit geval is dat 1-->
            <textarea name="Text1" id="OnlineTekst" cols="40" rows="5"><?php echo getOnlineSupportTXTInfo(1) ?></textarea>
            <!--Hidden inputs zorgen er nu voor dat de juiste velden aan de POST worden mee gegeven en worden gelezen door je PHP script-->
            <input type="hidden" name="ID" value="1">
            <input type="hidden" name="setOnlineSupportTXTInfo">
            <input type="submit" value="Send"></input>
        </form>
    </div>
</div>


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php

/**
 * als de $_POST niet leeg is en 'setOnlineSupportTXTInfo' bevat stuurt deze IF statment je naar de juiste functie
 * Dit is de lelijke manier maar werkt alleen voor intent gebruik (Is dus hackbaar!)
 **/

if(!isset($_POST) || isset($_POST['setOnlineSupportTXTInfo']))
{
    setOnlineSupportTXTInfo($_POST['Text1'], $_POST['ID']);
}

function db()
{

//  Server gegevens
    $servername = "localhost of 127.0.0.1";
    $username = "gebruikersnaam";
    $password = "wachtwoord";
    $database = "database";

    /**
     *  De Try.
     * Lees je even in met wat het doet.
     * Linkieee: https://www.w3schools.com/php/php_exception.asp
     **/
    try {

        /**
         *  PDO....
         *  http://php.net/manual/en/book.pdo.php
         **/
        $conn = new PDO("mysql:host=$servername;dbname=".$database, $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        /**
         * Door dat ik $conn return kan je deze overal gebruiken zolang je deze function (db();) maar oproept.
         */
        return $conn;
    }
    catch(PDOException $e)
    {
        return "Connection failed: " . $e->getMessage();
    }
}


function getOnlineSupportTXTInfo($id)
{
    /**
     * Roep de connectie van PDO naar de database aan.
     */
    $conn = db();

    /**   prepare de SQL query. SQL Injection wordt hier grooten deels mee tegen gegaan.
     *    Let op de :ID! deze voeg ik in $params toe aan een array. Zodat execute deze Bind
     *    zie ook: http://php.net/manual/en/pdostatement.bindparam.php
     **/
    $stmt = $conn->prepare("SELECT TekstOnline FROM support WHERE ID=:ID LIMIT 1");
    $params = array(':ID'=>$id);
    $stmt->execute($params);

    /**
     * fetch haalt maar 1 row op.
     * Gebruik setFetchMode(PDO::FETCH_ASSOC) voor meerdere rows gevolgd door een foreach, while of for
     * Zie ook: https://www.w3schools.com/php/php_mysql_select.asp
     */
    $result = $stmt->fetch();

    /**
     * Je hoeft niet alles appart te zetten. zet alles in 1 regel om een zee van code te voorkomen!
     */
    return str_replace("&lt;BR&gt;", "<BR>", Trim(htmlspecialchars($result['TekstOnline'])));
}

function setOnlineSupportTXTInfo($tekst, $id)
{
    /**
     * Ik leg niet alles uit maar lees de functie hierboven en leer!! :)
     */

    $conn = db();
    $stmt = $conn->prepare("UPDATE support SET TekstOnline=:text WHERE ID=:id");
    $params = array('text'=>$tekst, 'id'=>$id);
    $stmt->execute($params);
}


Hopelijk kunnen nog meer mensen hiervan leren ;)

[ Voor 96% gewijzigd door Groax op 09-08-2018 23:24 ]


Acties:
  • 0 Henk 'm!

  • l_braam
  • Registratie: Mei 2016
  • Laatst online: 16-11-2022
Bedankt voor alle informatie heren!

Ik kom hier sowieso mee verder, ik ben nu via udemy het een en ander over PHP aan het leren. Dit begint echter wel vrij eenvoudig.

Ik heb op dit moment alleen de vinger nog niet achter de juiste structuur, zelf ben ik bekend met MVC.
Wat is in PHP de juiste best-practice zonder hulp van andere frameworks.

De site wordt hoofdzakelijk gevuld vanuit een SQL database, daardoor heeft de PHP code de overhand.
echter bestaat alles op dit moment uit .php bestanden en bouwen deze eigenlijk de HTML op. Mij lijkt het verstandig dit te scheiden, helemaal met het oog op de toekomst.

Wat is jullie mening hierover? Welke standaarden volgen jullie?

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 12:51
l_braam schreef op vrijdag 10 augustus 2018 @ 09:54:
Wat is jullie mening hierover? Welke standaarden volgen jullie?
Begin eens met dit advies:
Make it work, make it right, make it fast

En volg de tip van @DJMaze waarmee je afdwingt dat het alleen op het interne netwerk zichtbaar is.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
l_braam schreef op vrijdag 10 augustus 2018 @ 09:54:
Wat is in PHP de juiste best-practice zonder hulp van andere frameworks.
Voor beginners: niet (lees mijn vorige post)
Voor gevorderden: bouw je eigen framework

Alles draait wel om voorkeur:

Als je de HTML wil scheiden van PHP dan kan je kiezen voor een template engine zoals TAL of Twig.
Ik heb zelf een TAL parser geschreven met XMLReader en die is wel heel erg streng als er fouten in je templates zitten.
Deze dwingt je om 100% valide XML/HTML5 te schrijven met dingen als <br/> en crasht op <br> of <div></p>.
In Twig kan dit niet, en kan je dus fouten maken.
Twig heeft natuurlijk ook voordelen en daarom draait alles om voorkeur.

Het grebuik van (micro)frameworks heeft voor en nadelen.
+ een redelijk goede beveiliging
+ makkelijk om door te schuiven naar een nieuwe ontwikkelaar
+ andere mensen maken de PHP code en documentatie
- je moet nog iets (moeilijks) leren
- je moet (beveiliging) updates bijhouden
- maakt de applicatie iets trager

[ Voor 1% gewijzigd door DJMaze op 10-08-2018 11:57 . Reden: <div></p> als fout voorbeeld toegevoegd ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Nu online

BCC

DJMaze schreef op vrijdag 10 augustus 2018 @ 10:39:
[...]

Ik heb zelf een TAL parser geschreven met XMLReader en die is wel heel erg streng als er fouten in je templates zitten.
Deze dwingt je om 100% valide XML/HTML5 te schrijven met dingen als <br/> en crasht op <br>.
offtopic:
<br> is valide HTML5 & <br/> valide XHTML - https://www.w3schools.com/tags/tag_br.asp

[ Voor 4% gewijzigd door BCC op 10-08-2018 10:49 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
offtopic:
<br> en <br/> zijn beide valide HTML5. HTML5 is namelijk de samensmelting van HTML en XHTML. w3schools zegt dat niet, zie bijvoorbeeld https://developer.mozilla...ne_SVG_and_MathML_support en aangezien een template engine niet weet of je SVG/MathML gebruikt, is <br> niet de juiste manier ;)
Mijn parser wil XML. <br/> is voor HTML5 niet helemaal het juiste voorbeeld, <div></p> was duidelijker geweest.

[ Voor 21% gewijzigd door DJMaze op 10-08-2018 11:06 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 12:51
DJMaze schreef op vrijdag 10 augustus 2018 @ 10:39:
[...]
Als je de HTML wil scheiden van PHP dan kan je kiezen voor een template engine zoals [...]
Jaren geleden deed ik PHP templating simpelweg met de php extract functie. Het zal nu vast niet meer door de beugel kunnen, maar voor de "Make it work" stap wellicht een oplossing om iets aan MCV te doen.
https://www.daggerhart.co...-php-templating-function/

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Groax
  • Registratie: Oktober 2012
  • Laatst online: 02-10 11:33
l_braam schreef op vrijdag 10 augustus 2018 @ 09:54:
Mij lijkt het verstandig dit te scheiden, helemaal met het oog op de toekomst.

Wat is jullie mening hierover? Welke standaarden volgen jullie?
Kijk eens naar het framework Laravel.
je weet want van MVC maar het bouwen zonder ervaring in PHP is toch echt een uitdaging! laat staan onderhouden... Laat dat MVC gebeuren lekker aan de 'big boys' en speel met een PHP framework en leer werken met Blade. Hiermee kan je in *.blade.php bestanden makkelijk PHP code oproepen.

voordeel met een framework is dat je de controllers, models en routing niet meer hoeft te realiseren.

Begin opnieuw en zorg ervoor dat je applicatie veilig is, dus alleen op het locale netwerk. Dit kan je allemaal met de webserver regelen.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

DJMaze schreef op woensdag 8 augustus 2018 @ 23:51:
Zie het als een auto uit 1985 zonder gordels, airbags, eps, abs, startonderbreker, etc. etc. etc.
Waar rij je liever in anno 2018? ;)
Tja, is maar net hoe je het bekijkt. De auto uit 1985 zonder al die snufjes is minder afhankelijk van al die electronische hulpmiddelen. Een dergelijke auto met pech is makkelijker op te lossen dan een met al die electronica. Die moet door een monteur aan een laptop gehangen worden om te zien wat er defect aan is. Dus an sich is de vraag waar je liever in rijdt relatief.

De beveiliging van computers en programmatuur is dat allerminst, hoewel ik je analogie begrijp, vind ik hem dus niet geheel passend, maar dat is een andere discussie. ;)
Josk79 schreef op woensdag 8 augustus 2018 @ 17:25:
Dat is wel onzin, er is geen verschil tussen:
HTML:
1
<textarea>Tweakers<br>is<br>leuk.</textarea>

of
HTML:
1
<textarea>Tweakers&lt;br&gt;is&lt;br&gt;leuk.</textarea>
Ik ging dan uit van de twee buiten een textarea-element, dan maakt het wel degelijk verschil. ;)
moese schreef op vrijdag 10 augustus 2018 @ 11:12:
Kijk eens naar het framework Laravel.
je weet want van MVC maar het bouwen zonder ervaring in PHP is toch echt een uitdaging! laat staan onderhouden... Laat dat MVC gebeuren lekker aan de 'big boys' en speel met een PHP framework en leer werken met Blade. Hiermee kan je in *.blade.php bestanden makkelijk PHP code oproepen.

voordeel met een framework is dat je de controllers, models en routing niet meer hoeft te realiseren.

Begin opnieuw en zorg ervoor dat je applicatie veilig is, dus alleen op het locale netwerk. Dit kan je allemaal met de webserver regelen.
Een bestaand framework hiervoor gaan gebruiken is echt overkill, maak dan gewoon zelf iets simpels, dat is ten eerste sneller, zowel qua aanleren als performance-wise en ten tweede veel te uitgebreid. Dat maakt de dingen die je niet van het framework gebruikt overbodig en dat zou in het geval van de TS > 95% zijn. ;)

[ Voor 49% gewijzigd door CH4OS op 10-08-2018 11:55 ]


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
CH4OS schreef op vrijdag 10 augustus 2018 @ 11:29:
Tja, is maar net hoe je het bekijkt. De auto uit 1985 zonder al die snufjes is minder afhankelijk van al die electronische hulpmiddelen. Een dergelijke auto met pech is makkelijker op te lossen dan een met al die electronica. Die moet door een monteur aan een laptop gehangen worden om te zien wat er defect aan is. Dus an sich is de vraag waar je liever in rijdt relatief.

De beveiliging van computers en programmatuur is dat allerminst, hoewel ik je analogie begrijp, vind ik hem dus niet geheel passend, maar dat is een andere discussie. ;)
offtopic:
Simpele PHP uit 2000 is ook makkelijk op te lossen. PHP uit 2018 is dat niet. Ik snap dus niet wat je niet geheel vind passen, maar dat mag inderdaad in een PM ;)
CH4OS schreef op vrijdag 10 augustus 2018 @ 11:29:
Een bestaand framework hiervoor gaan gebruiken is echt overkill, maak dan gewoon zelf iets simpels, dat is ten eerste sneller, zowel qua aanleren als performance-wise en ten tweede veel te uitgebreid. Dat maakt de dingen die je niet van het framework gebruikt overbodig en dat zou in het geval van de TS > 95% zijn. ;)
Inderdaad! micro-frameworks/libraries (dingen die goed zijn in 1 taak) zijn dan wel weer prima, zoals: Guzzle, Twig en PHPTAL.
Met name Twig en PHPTAL omdat die je htmlspecialchars() oplossen.

[ Voor 118% gewijzigd door DJMaze op 10-08-2018 12:06 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • l_braam
  • Registratie: Mei 2016
  • Laatst online: 16-11-2022
@moese bedankt voor je voorbeeld! Deze zal ik absoluut meenemen voor de nieuwe opzet. Het schrijven van dit stuk was me gisteren wel gelukt, echter heb ik gebruik gemaakt van msqli en lees ik dat PDO een beter toekomstperspectief heeft.

Verder doelde ik eigenlijk niet op frameworks. Ik doelde meer op hoe mijn opbouw moet zijn, mappenstuctuur, HTML/PHP.

Bijvoorbeeld
PHP: filename
1
2
3
4
5
6
7
8
9
10
11
12
13
<tr id="supporttxtrow">
    <td colspan="3">
            <div  id="supporttxt" class="box" style="width: 100%;margin-bottom: 20px;">
                <div class="boxhead">Support.txt</div>
                <div class="boxbody"><p><?php echo getSupportTXTInfo($id) ?></p></div>
            </div>
    </td>
</tr>

(andere file)
<?php
getSupportTXTInfo
?>


of

PHP: filename
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
echo <tr id="supporttxtrow">
echo    <td colspan="3">
echo            <div  id="supporttxt" class="box" style="width: 100%;margin-bottom: 20px;">
echo                <div class="boxhead">Support.txt</div>
echo                <div class="boxbody"><p>

$day = "hello";
switch ($day) {
    case "hello":
        echo "test2";
    case "Monday":
        echo "test";
        break;
    default:
        echo "de switch klopte niet";
}
</p></div>
echo            </div>
echo    </td>
</tr>
?>


Ik snap dat dit geen kloppende voorbeelden zijn, maar ik hoop dat jullie mij begrijpen :)
Het lijkt me logisch dat optie 1 het mooiste is om een duidelijke structuur te krijgen.

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
l_braam schreef op vrijdag 10 augustus 2018 @ 12:34:
Het lijkt me logisch dat optie 1 het mooiste is om een duidelijke structuur te krijgen.
Wat dacht je van PHPTAL (ik zei het niet voor niks)
HTML:
1
2
3
4
5
6
7
8
<tr id="supporttxtrow">
    <td colspan="3">
            <div  id="supporttxt" class="box" style="width: 100%;margin-bottom: 20px;">
                <div class="boxhead">Support.txt</div>
                <div class="boxbody"><p tal:content="SupportTXTInfo">getSupportTXTInfo komt &lt;b&gt;hier&lt;/b&gt;</p></div>
            </div>
    </td>
</tr>

PHP:
1
2
3
$template = new PHPTAL('my_template_file.xhtml');
$template->SupportTXTInfo = getSupportTXTInfo($id);
echo $template->execute();


Of als je de getSupportTXTInfo als werkelijke html wil tonen:
HTML:
1
2
3
4
5
6
7
8
<tr id="supporttxtrow">
    <td colspan="3">
            <div  id="supporttxt" class="box" style="width: 100%;margin-bottom: 20px;">
                <div class="boxhead">Support.txt</div>
                <div class="boxbody"><p tal:content="structure SupportTXTInfo">getSupportTXTInfo komt <b>hier</b></p></div>
            </div>
    </td>
</tr>

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • l_braam
  • Registratie: Mei 2016
  • Laatst online: 16-11-2022
@DJMaze deze ga ik proberen!
Was er een beetje huiverig voor, omdat ik dan een extra leer actie erbij heb.
Alleen ik zie wel dat hier logica en de presentatie heel duidelijk gescheiden wordt, wat ik wil.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 12:51
l_braam schreef op vrijdag 10 augustus 2018 @ 15:39:
@DJMaze deze ga ik proberen!
Was er een beetje huiverig voor, omdat ik dan een extra leer actie erbij heb.
Alleen ik zie wel dat hier logica en de presentatie heel duidelijk gescheiden wordt, wat ik wil.
Op de meest simpele manier bouw je dit zelf zoals ik in deze post het gelinked:
CurlyMo in "HTML / PHP - Textarea informatie submitten"

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
@CurlyMo ja dat kan, maar dan moet je overal zelf htmlspecialchars() doen om de beveiliging op te lossen.
Wie werkt maakt fouten, wie veel werkt maakt veel fouten. En dan is een htmlspecialchars() vergeten zo gedaan.

Jouw versie is wel sneller omdat PHPTAL de code eerst moet omzetten in het jouw genoemde voorbeeld.
Echter kan de resulterende PHP ook in de cache en dan is het bijna even snel.
Voordeel is dat je nooit over html exploits hoeft na te denken als je het 'structure' stukje niet gebruikt.

Bij jouw voorbeeld moet je nog steeds constant aan beveiliging denken.
Ik vind het daarom een slecht voorbeeld.

[ Voor 4% gewijzigd door DJMaze op 11-08-2018 10:05 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • +1 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 12:51
DJMaze schreef op vrijdag 10 augustus 2018 @ 15:52:
@CurlyMo ja dat kan, maar dan moet je overal zelf htmlspecialchars() doen om de beveiliging op te lossen.
Ik vind het daarom een slecht voorbeeld.
Allemaal waar, maar:

Make it work, make it right, make it fast

Voor de eerste stap is het dus prima. Vooral voor iemand die nog moet leren.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Laurensius88
  • Registratie: Januari 2013
  • Laatst online: 12:33
Qua templating heb ik jaren geleden gewerkt met Smarty.. Dat vond ik persoonlijk wel prettig werken, maar geeft inderdaad wel weer een extra leerstap erbij.

Voor nu zou ik HTML en PHP in dezelfde bestanden zetten en je database verbinding in een includes/config.php bestand zetten bijvoorbeeld.
Wanneer je die via een require in gaat laden zit je al weer meer gescheiden. Op die manier kun je een beetje experimenteren met hoe jij het prettig vind werken. Daarna kun je alsnog bekijken hoe andere het doen en dit vergelijken en zelf beoordelen of je het ook idd beter vind werken.

Over de tijd die geïnvesteerd moet worden is al genoeg gezegd ;)
Pagina: 1