PDA

Bekijk Volledige Versie : [PHP] file writing probleempje



Poster666
04/01/05, 21:15
Ok, eerst en vooral sorry voor het vele vragen, maar blijkbaar heb ik ofwel
ergens verkeerde handleidingen, ofwel doe ik iets zo mis dat ik het zelf
niet meer zie.

Die file, die ik gisteren en eergisteren wou lezen, die moet natuurlijk nog
beschreven worden. De file staat in de main directory, de volgende scripts
in de subdir "admin".
addnieuws.php:
-----------------
<form action="news.php" method="GET">
<br>
Datum: <input type="text" name="datum">
<br>
Nieuws: <input type="text" name="nieuws">
<br>
<br>
<center>
<input type="submit" value="Ok">
</center>
---------------------------------

Die roept dus news.php aan:
---------------------------
<?php
$filename="../nieuws.txt";
print "Nieuwsitem wordt bewaard <br>";
$fp = fopen( $filename, "a" ) or die("Kan bestand $filename niet openen");
$input = "\n".$datum." ".$nieuws;
fwrite( $fp, $input);
fclose( $fp );
?>
-------------------------------
Nu, bij het ingeven van data in de form, en op ok klik, voegt dit script
blijkbaar alleen één of twee rare vierkantjes toe op de eerste lijn, iets a
la [][]
Als ik $input='\n$datum $nieuws' doe, voegt hij letterlijk de string toe aan
de eerste regel van de file...
Kan iemand me hier een hint geven?

MvG, en hartelijk bedankt,
me

miseryman
04/01/05, 21:25
Poster666 <thadave666@hotmail.com> wrote:

> addnieuws.php:
> -----------------
> <form action="news.php" method="GET">
> <br>
> Datum: <input type="text" name="datum">
> <br>
> Nieuws: <input type="text" name="nieuws">
> <br>
> <br>
> <center>
> <input type="submit" value="Ok">
> </center>
> ---------------------------------
>
> Die roept dus news.php aan:
> ---------------------------
> <?php
> $filename="../nieuws.txt";
> print "Nieuwsitem wordt bewaard <br>";
> $fp = fopen( $filename, "a" ) or die("Kan bestand $filename niet openen");
> $input = "\n".$datum." ".$nieuws;
> fwrite( $fp, $input);
> fclose( $fp );
> ?>
> -------------------------------
> Nu, bij het ingeven van data in de form, en op ok klik, voegt dit script
> blijkbaar alleen één of twee rare vierkantjes toe op de eerste lijn, iets a
> la [][]

Probeer eens i.p.v. $datum en $nieuws: $_GET['datum'] en
$_GET['nieuws'].

--
Raf

John Bokma
04/01/05, 21:55
miseryman wrote:

> Poster666 <thadave666@hotmail.com> wrote:

>> Die roept dus news.php aan:
>> ---------------------------
>> <?php
>> $filename="../nieuws.txt";
>> print "Nieuwsitem wordt bewaard <br>";
>> $fp = fopen( $filename, "a" ) or die("Kan bestand $filename niet
>> openen"); $input = "\n".$datum." ".$nieuws;
>> fwrite( $fp, $input);
>> fclose( $fp );
>> ?>
>> -------------------------------
>> Nu, bij het ingeven van data in de form, en op ok klik, voegt dit
>> script blijkbaar alleen één of twee rare vierkantjes toe op de eerste
>> lijn, iets a la [][]
>
> Probeer eens i.p.v. $datum en $nieuws: $_GET['datum'] en
> $_GET['nieuws'].

Lekker secure (in beide gevallen overigens).

--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html

Daniel Tryba
04/01/05, 22:05
Poster666 <thadave666@hotmail.com> wrote:
> <?php
> $filename="../nieuws.txt";
> print "Nieuwsitem wordt bewaard <br>";
> $fp = fopen( $filename, "a" ) or die("Kan bestand $filename niet openen");
> $input = "\n".$datum." ".$nieuws;
> fwrite( $fp, $input);
> fclose( $fp );
> ?>

> Nu, bij het ingeven van data in de form, en op ok klik, voegt dit script
> blijkbaar alleen ??n of twee rare vierkantjes toe op de eerste lijn, iets a
> la [][]

En hoe heb je dat gecontroleerd? (ik vrees notepad/kladblok)

> Als ik $input='\n$datum $nieuws' doe, voegt hij letterlijk de string toe aan
> de eerste regel van de file...
> Kan iemand me hier een hint geven?

Het is al opgemerkt maar ik zal het nog wat duidelijker zeggen:

Gefeliciteerd, je bent erin geslaagt om de meest gestelde PHP vraag sinds 22
april 2002 te stellen.

http://nl2.php.net/ChangeLog-4.php
....
Version 4.2.0
22-Apr-2002

* ATTENTION!! register_globals defaults to 'off' now !!!

Zie http://nl2.php.net/manual/en/security.globals.php voor meer info en
update je handleidingen.

miseryman
04/01/05, 23:05
John Bokma <postmaster@castleamber.com> wrote:

> miseryman wrote:
>
>> Probeer eens i.p.v. $datum en $nieuws: $_GET['datum'] en
>> $_GET['nieuws'].
>
> Lekker secure (in beide gevallen overigens).

Ik heb niet op de rest van het script gelet :-)

--
Raf

Ronald Paul
04/01/05, 23:25
John Bokma <postmaster@castleamber.com> schreef:

>>> $filename="../nieuws.txt";
>>> print "Nieuwsitem wordt bewaard <br>";
>>> $fp = fopen( $filename, "a" ) or die("Kan bestand $filename niet
>>> openen"); $input = "\n".$datum." ".$nieuws;
>>> fwrite( $fp, $input);
>>> fclose( $fp );
>>
>> Probeer eens i.p.v. $datum en $nieuws: $_GET['datum'] en
>> $_GET['nieuws'].
>
>Lekker secure (in beide gevallen overigens).

Waarom zou het gebruik van $_GET op de aangegeven plaatsen in dit
script onveilig zijn?

--
Groet, Ronald

Jan Ehrhardt
04/01/05, 23:25
Ronald Paul in nl.internet.www.server-side (Tue, 04 Jan 2005 23:21:20
+0100):

>John Bokma <postmaster@castleamber.com> schreef:
>
>>>> $filename="../nieuws.txt";
>>>> print "Nieuwsitem wordt bewaard <br>";
>>>> $fp = fopen( $filename, "a" ) or die("Kan bestand $filename niet
>>>> openen"); $input = "\n".$datum." ".$nieuws;
>>>> fwrite( $fp, $input);
>>>> fclose( $fp );
>>>
>>> Probeer eens i.p.v. $datum en $nieuws: $_GET['datum'] en
>>> $_GET['nieuws'].
>>
>>Lekker secure (in beide gevallen overigens).
>
>Waarom zou het gebruik van $_GET op de aangegeven plaatsen in dit
>script onveilig zijn?

Als je nu eens een PHP commando in de $_GET zet? Dan wordt dat
PHP-commando toch toegevoegd aan news.php ...

Jan
--
Look, Ma. No tables - http://enbio.steenbergen-stichting.nl/

Daniel Tryba
04/01/05, 23:35
Ronald Paul <usenet@rcpaul.nl> wrote:
>>> Probeer eens i.p.v. $datum en $nieuws: $_GET['datum'] en
>>> $_GET['nieuws'].
>>
>>Lekker secure (in beide gevallen overigens).
>
> Waarom zou het gebruik van $_GET op de aangegeven plaatsen in dit
> script onveilig zijn?

Als je \n als record seperator gebruikt moet die natuurlijk wel worden
geescaped, anders kunnen heel simpel records worden geinsert. Dat zou
gevolgen kunnen hebben voor scripts die deze data weer gebruiken (die
moeten overigens ook nog de data zinnig escapen voor gebruik).

Daniel Tryba
04/01/05, 23:55
Jan Ehrhardt <monitor@idem.invalid> wrote:
>>Waarom zou het gebruik van $_GET op de aangegeven plaatsen in dit
>>script onveilig zijn?
>
> Als je nu eens een PHP commando in de $_GET zet? Dan wordt dat
> PHP-commando toch toegevoegd aan news.php ...

Deze strings worden toegevoegt aan een .txt file in de OP z'n code.

Het is eventueel een probleem voor het script wat deze strings gaat
gebruiken. PHP commandos zijn pas gevaarlijk o phet moment dat de string
ge-eval()-ed wordt (maar eval is evil, als je dat commando wilt gaan
gebruiken is er meestal iets grondig mis met je script) of als die text
file raw wordt geinclude alsof het een php script is.

Poster666
05/01/05, 00:15
"Daniel Tryba" <spam@tryba.invalid> schreef in bericht
news:41db02fe$0$6216$e4fe514c@news.xs4all.nl...
<knip>
> En hoe heb je dat gecontroleerd? (ik vrees notepad/kladblok)
>
<knip>

Inderdaad, kladblok...De links bekijk ik morgen even, bedankt