Toon posts:

[PHP] Textarea --> file lukt niet.

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een php scriptje dat in een form een textarea bevat. de text in die textarea kan b.v. de inhoud van een php, html of ascii bestand zijn. Dat wil ik op kunnen slaan. hij moet dan een file aanmaken met de goede naam en de text uit de textarea erin gooien.

fwrite lukt niet, ik geef die dir liever niet te veel rechten, en hij moet ook files die b.v. met 644 rechten kunnen overschrijven.

het zou misschien met system() kunnen lukken...maar welk commando moet ik dan geven?

een andere mogelijkheid is fwrite("ftp://user:passwd@host.domain.nl/troep/","w"); maar werkt dat ook als de client achter een ftp-upload blockende proxy zit?

hij moet 't opslaan dus met een andere uid/gid doen dan dat php standaard runt lijkt mij.

Iemand tips?

Verwijderd

Ik weet niet zeker of ik helemaal snap wat je bedoeld, maar het zou toch niet zo moeilijk moeten zijn, tenminste als je het bestand gewoon 666-rechten geeft. Ik snap alleen niet waarom dat je dat niet wilt doen?

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
fopen()
fputs()
fclose()

:)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Stewie!
  • Registratie: September 2001
  • Laatst online: 22:00

Stewie!

Keen must die!

Op donderdag 06 juni 2002 12:30 schreef compukid het volgende:
ik heb een php scriptje dat in een form een textarea bevat. de text in die textarea kan b.v. de inhoud van een php, html of ascii bestand zijn. Dat wil ik op kunnen slaan. hij moet dan een file aanmaken met de goede naam en de text uit de textarea erin gooien.

fwrite lukt niet, ik geef die dir liever niet te veel rechten, en hij moet ook files die b.v. met 644 rechten kunnen overschrijven.

het zou misschien met system() kunnen lukken...maar welk commando moet ik dan geven?

een andere mogelijkheid is fwrite("ftp://user:passwd@host.domain.nl/troep/","w"); maar werkt dat ook als de client achter een ftp-upload blockende proxy zit?

hij moet 't opslaan dus met een andere uid/gid doen dan dat php standaard runt lijkt mij.

Iemand tips?
ja
- waarom niet met de standaard userID waar PHP onder draait?
- als je opslaat via fwrite, heeft dat niks met de client te maken, dus ook ftp toegang
- waarom maak je niet gewoon het script en sla het gewoon op, zit niet zo te hannessen met chmod, doe gewoon 666 en kijks eens of het werkt! Wat lukt er niet? Het moet toch zeker lukken??


Strava: https://www.strava.com/athletes/149347154


Verwijderd

Volgens mij werkt het volgende het beste :
PHP:
1
<?$file = fopen("/folder/file..txt", "w+");fwrite($file, $newcontent);fclose($file);?>

Bijschrijven ?
PHP:
1
<?$file = fopen("/folder/file.txt", "w+");$content = fread($file, filesize("/folder/file.txt")).$newcontent;fwrite($file, $content);fclose($file);?>

Tenminste zo uit mijn hoofd zou het kunnen werken en het is redelijk veilig.

edit:
double dot typo :D

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Op donderdag 06 juni 2002 12:30 schreef compukid het volgende:
ik heb een php scriptje dat in een form een textarea bevat. de text in die textarea kan b.v. de inhoud van een php, html of ascii bestand zijn. Dat wil ik op kunnen slaan.

[..]

Iemand tips?
Mag ik nog 1 tip geven? Let erop dat er in je textarea geen </textarea> zit. dit zou betekenen dat je textarea afgesloten wordt. Dan zou je hem even moeten veranderen naar <!textarea> oid en dan wegschrijven als </textarea>.

Dit is vooral noodzakelijk als je files inleest en deze in een textarea zet om te bewerken.

just my 2 cents ;)

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:57

me1299

$ondertitel

[quote]

een andere mogelijkheid is fwrite("ftp://user:passwd@host.domain.nl/troep/","w"); maar werkt dat ook als de client achter een ftp-upload blockende proxy zit?

[quote]

We hebben het hier over php en niet over javascript ofzo. PHP speelt zich op de server af en niet op de client.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op donderdag 06 juni 2002 15:54 schreef DeathKnight het volgende:

We hebben het hier over php en niet over javascript ofzo. PHP speelt zich op de server af en niet op de client.
Als de PHPserver een request doet naar die ftp, dan is die FTP vanaf dat moment de server en de phpserver de client, volgens het client/server model :)

  • jvreuls
  • Registratie: Januari 2002
  • Laatst online: 31-07 13:13
Op donderdag 06 juni 2002 14:53 schreef RdeTuinman het volgende:
Mag ik nog 1 tip geven? Let erop dat er in je textarea geen </textarea> zit. dit zou betekenen dat je textarea afgesloten wordt. Dan zou je hem even moeten veranderen naar <!textarea> oid en dan wegschrijven als </textarea>.

Dit is vooral noodzakelijk als je files inleest en deze in een textarea zet om te bewerken.

just my 2 cents ;)
Je kunt natuurlijk ook htmlspecialchars() gebruiken :)

Topicstarter: alles wat dat PHP-scriptje doet, doet ie onder de user van de webserver, dus ik denk niet dat er niet veel anders opzit als fwrite() enzo. Of inderdaad de FTP-manier.

Circuits Online


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Op donderdag 06 juni 2002 16:45 schreef jvreuls het volgende:

[..]

Je kunt natuurlijk ook htmlspecialchars() gebruiken :)
Dat kan idd, maar er is volgens mij geen makkelijke manier om terug te gaan. Een soort undo_htmlspecialchars(). Is ook een beetje lastig denk ik. ;) Je kunt wel gaan replacen, maar dan kunnen er ook dingen worden gereplaced die niet gereplaced moeten worden.

Verwijderd

Topicstarter
het maken van een file en die dan chmodden werkt dus niet.
Voor 't aanmaken/overschijven van files zijn er niet genoeg rechten. Er worden verschillende files gemaakt, de naam van die files is niet van tevoren bekend. Het kan ook nodig zijn files te overschrijven die b.v. chmod 400 of lager hebben. anders had ik ook wel fopen,fwrite,fclose gebruikt.

deze code gebruik ik om te voorkomen dat er html in die textarea komt.
code:
1
system("cat $filename | sed 's/\&/\&amp;/g' | sed 's/</\&lt;/g' | sed 's/>/\&gt;/g' ");
Pagina: 1