[vraag] Combinatie van php en html in 1 textarea opslaan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco Eilander

Marco Eilander

29/05/2018 13:28:03
Quote Anchor link
Hallo,

Hoe kan ik het beste html en php gebruiken in een textarea en die opslaan als een php bestand?

Het liefst wil ik, dat het opgeslagen wordt, zoals je het in het textarea typt (enters e.d.). Ik heb geprobeerd met nl2br etc., maar hier door krijg ik een error, omdat het script ook <br>'s plaatst binnen php gedeeltes, waar door error 500 komt.
 
PHP hulp

PHP hulp

27/04/2024 07:15:02
 
- Ariën  -
Beheerder

- Ariën -

29/05/2018 14:31:28
Quote Anchor link
Nl2br() hoort op de uitvoer van je script. Waar je dus de waarde toont.
 
Adoptive Solution

Adoptive Solution

29/05/2018 17:11:22
Quote Anchor link
Zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if ( $_POST['submit']) {
    $file = $_POST['name'] . '.php';

    $code = $_POST['code'];
    // Write the contents back to the file
    file_put_contents($file, $code);
    header('location:'.$file);
    exit();
}

?>

<form method="post" action="">
<input type="text" name="name" size="40" value="" placeholder="bestandsnaam zonder .php"/><br />
<textarea name="code" rows="20" cols="50"></textarea><br />
<input type="submit" name="submit" value="submit" />
</form>


Als je de code plakt in het textarea, krijg je na de submit een bestand met dezelfde code, dat weer opent als form, waarna etcetera.
 
Thomas van den Heuvel

Thomas van den Heuvel

29/05/2018 17:55:06
Quote Anchor link
@Marco: gewoon opslaan zoals je het intypt? Hier hoeven geen speciale bewerkingen voor plaats te vinden.

Als je echter de inhoud van een bestand weer wilt wijzigen via een textarea is het natuurlijk wel zaak dat de tekst van het ingelezen bestand ontdaan wordt van enige speciale betekenis binnen HTML. Dit doe je met een escaping-functie zoals htmlspecialchars().

Het is natuurlijk zaak dat je het bestand waarmee je PHP kunt invoeren en de code waarmee je dit wegschrijft naar een PHP-bestand héééél goed beveiligd anders zet je de deur wagenwijd open voor hackers... Zorg dus dat je heel goed weet waar je mee bezig bent.

Of nog beter, misschien moet je deze functionaliteit helemaal niet op je site hebben.
 
Marco Eilander

Marco Eilander

10/06/2018 14:09:11
Quote Anchor link
Thomas van den Heuvel op 29/05/2018 17:55:06:
@Marco: gewoon opslaan zoals je het intypt? Hier hoeven geen speciale bewerkingen voor plaats te vinden.

Als je echter de inhoud van een bestand weer wilt wijzigen via een textarea is het natuurlijk wel zaak dat de tekst van het ingelezen bestand ontdaan wordt van enige speciale betekenis binnen HTML. Dit doe je met een escaping-functie zoals htmlspecialchars().

Het is natuurlijk zaak dat je het bestand waarmee je PHP kunt invoeren en de code waarmee je dit wegschrijft naar een PHP-bestand héééél goed beveiligd anders zet je de deur wagenwijd open voor hackers... Zorg dus dat je heel goed weet waar je mee bezig bent.

Of nog beter, misschien moet je deze functionaliteit helemaal niet op je site hebben.


Ik heb het inmiddels aangepast. ;)

Nu zit ik met het volgende:
Tijdje terug kwam ik wel eens scripts tegen waar ze gebruik maakte van "{tekst}" wat omgezet werd in html/php. Iemand een idee hoe dit heet en hoe het werkt?
 
- Ariën  -
Beheerder

- Ariën -

10/06/2018 15:47:56
 
Thomas van den Heuvel

Thomas van den Heuvel

10/06/2018 15:53:04
Quote Anchor link
Dit zijn waarschijnlijk placeholders voor variabele waarden. De bestanden waarin dit soort dingen staan zijn vaak templates, oftewel, een soort van blauwdruk met invulvakjes voor een uiteindelijk document.

Bijvoorbeeld een e-mail template:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
Geachte {aanhef} {achternaam},

Iemand, mogelijk u, heeft een aanvraag gedaan voor het herstellen van uw wachtwoord.
Als u dit niet was hoeft u niets te doen.

Via de volgende link kunt u uw wachtwoord herstellen:
{reset_password_link}

Groet,

De Redactie
 
Adoptive Solution

Adoptive Solution

10/06/2018 15:55:57
Quote Anchor link
Kwam ergens een template tegen waarin o.a. dit stond :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$template = file_get_contents($root.'signup_template.'.$format);
//replace all the tags
$template = preg_replace('^\{USERNAME\}^', $info['username'], $template);
$template = preg_replace('^\{EMAIL\}^', $info['email'], $template);
$template = preg_replace('^\{KEY\}^', $info['key'], $template);
 
- Ariën  -
Beheerder

- Ariën -

10/06/2018 15:59:13
Quote Anchor link
Dat kan ook, maar dan gebruikt het een 'dure' reguliere expressie.
 
Davier doe

Davier doe

10/06/2018 16:08:17
Quote Anchor link
Maak gewoon gebruik van array en preg_replace_callback ipv meedere keren preg_replace() te gebruiken.
 
Marco Eilander

Marco Eilander

14/06/2018 15:31:11
Quote Anchor link
Adoptive Solution op 10/06/2018 15:55:57:
Kwam ergens een template tegen waarin o.a. dit stond :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$template = file_get_contents($root.'signup_template.'.$format);
//replace all the tags
$template = preg_replace('^\{USERNAME\}^', $info['username'], $template);
$template = preg_replace('^\{EMAIL\}^', $info['email'], $template);
$template = preg_replace('^\{KEY\}^', $info['key'], $template);



Oke, maar hier gebruiken ze dus enkel een variable als replace, maar is het ook mogelijk om bijvoorbeeld {videos} om te zetten in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$zoekvideo
= $connect->query("SELECT naam FROM videos blablabla");
while(){
... .. ...
}

?>


Je zit namelijk wel met de echo's. Niet dat het opeens zoiets wordt:

echo "dit is een test
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $zoekvideos = $connect->etc... ?>
";
dan zou je bij de replace nog een "; bij de replace ervoor moeten zetten en echo " erachter.
 
- Ariën  -
Beheerder

- Ariën -

14/06/2018 15:43:48
Quote Anchor link
Dan moet je daarvoor een functie schrijven, en deze met preg_replace_callback aanroepen.
 
Marco Eilander

Marco Eilander

14/06/2018 15:50:55
Quote Anchor link
- Ariën - op 14/06/2018 15:43:48:
Dan moet je daarvoor een functie schrijven, en deze met preg_replace_callback aanroepen.


Als er een like knop was, had ik er opgedrukt. :P
Bedankt, ga ik mij daar op inlezen en toepassen.
 
Thomas van den Heuvel

Thomas van den Heuvel

14/06/2018 19:57:16
Quote Anchor link
Ik hoop dat je het bovenstaande niet combineert met het wegschrijven van PHP-bestanden. Dit gaat toch meer over een soort van content management / WYSIWYG achtige functionaliteit, en niet zozeer over rauwe PHP code.

En als dit niet gecombineerd gaat worden met bestanden die je kunt wegschrijven dan had je hier wellicht beter een apart draadje voor kunnen starten want het heeft eerlijk gezegd weinig met elkaar te maken.
Gewijzigd op 14/06/2018 19:57:42 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.