Bestand uitlezen en veranderen

Status
Niet open voor verdere reacties.

GooGooJansen

Gebruiker
Lid geworden
16 jul 2006
Berichten
513
Hallo,

Ik heb een website gemaakt. Nu wil ik met een script een bestand dat op de server staat laten zien. Dit bestand word geopend IN de website en dan kan de gebruiker het bestand wijzigen en opslaan. Ik snap alleen niet hoe dit moet?


GooGooJansen
 
Kun je het daarmee ook veranderen en dan Opslaan?

EDIT:
Sorry het niet gezien dat je zei: Ook even in rijtje kijken.

Ik ga aan de slag!
 
Laatst bewerkt:
Ok ik ben er al. Ik heb het geporbeerd. Maar ik krijg een error. Ik denk dat het komt omdat ik 'context' niet gedefineerd heb. Maar ik zou niet weten hoe ik dat moet doen. Ik heb:
PHP:
<?

$filename = 'test.cfg';
$path = 'bestanden';

string file_get_contents  ( string $filename  [, int $path  [, resource $context  ]] )

?>

Hierbij staat het bestandje test.cfg in de map bestanden. De map bestanden staat in de map van de site.


Site:
----Bestanden
---------test.cfg
----site.php
 
Laatst bewerkt:
De functie aanroep is niet juist.

Op de PHP site staat dit inderdaad
PHP:
string file_get_contents  ( string $filename  [, int $path  [, resource $context  ]] )
Het is een verduidelijking van de functie.

Hetgeen voor de functie en de variabelen staat betekent wat er wordt verwacht/teruggegeven.

In je voorbeeld wordt het dus:
PHP:
<?php

$filename = 'http://www.mijnsite.nl/bestanden/test.cfg';
$inhoud =  file_get_contents($filename);

echo $inhoud;

?>
 
Ok, bedankt. Dat was wat ik zocht (half dan). Ik wilde eigenlijk dat het geopend werd in een frame (dacht dat het zo heet), in dat frame kan de gebruiker het bestand wijzigen. Dan kan de gebruiker op opslaan duwen. En dan word de veranderde informatie opgeslagen in het bestand.
 
Ik weet niet precies hoe het er uit gaat zien (de inhoud van je .cfg) maar wellicht bedoel je dit?
PHP:
<?php 

$filename = 'http://www.mijnsite.nl/bestanden/test.cfg'; 
$inhoud =  file_get_contents($filename); 
?>
<html>
<head>
 <title>Bestand uitlezen</title>
</head>
<body>
<form>
 <textarea name="inhoud"><?= $inhoud ?></textarea>
 <input type="submit" name="submit" value="Opslaan" />
</form>
</body>
</html>
 
Hallo,

Ik heb even gegoogled want ik kon er niet uitkomen. Het werkte niet, het script slaat niks op. Toen heb ik mbv google dit ervan gemaakt:
PHP:
<?php

$filename = 'bestanden/test.cfg';
$inhoud =  file_get_contents($filename);
?>

<html>
<head>
<title>Bestand uitlezen</title>
</head>
<body>
<form>
<form method="post" action="/bestanden/test.cfg"><textarea name="config" rows="10" cols="70"><?= $inhoud ?>
</textarea>
<br><br><input type="submit" name="submit" value="Opslaan">
</form>
</body>
</html>
Nu werkt het nog steeds niet :(
 
Laatst bewerkt:
Om naar een bestand te schrijven zul je de functies moeten gebruiken die ik in mijn vorige post aangaf.

Posten naar een (in dit geval tekst-based) bestand heeft geen enkel nut.. :)
 
Wekrt nog niet :( Ik heb fopen gebruikt:
PHP:
<?php

$filename = 'bestanden/test.cfg';
$handle = fopen("$filename", "w+");
?>

<html>
<head>
<title>Bestand uitlezen</title>
</head>
<body>
<form>
<textarea name="inhoud"><?= $handle ?></textarea>
<input type="submit" name="submit" value="Opslaan" />
</form>
</body>
</html>
 
Je moet een IF-statement maken boven aan:
PHP:
<?php 

$filename = 'bestanden/test.cfg'; 
$handle = fopen("$filename", "w+"); 

if(isset($_POST['submit'])) {
  if(!fwrite($handle, $_POST['inhoud'])) {
    echo "Schrijven naar bestand mislukt!";
    exit;
  } else {
    echo "Opdracht uitgevoerd!";
    fclose($handle);
  }
} else {
echo'
<html> 
<head> 
<title>Bestand uitlezen</title> 
</head> 
<body> 
<form> 
<textarea name="inhoud">'. $handle .'</textarea> 
<input type="submit" name="submit" value="Opslaan" /> 
</form> 
</body> 
</html>';
}
?>
 
Ik zou het uitlezen gewoon met file_get_content doen en het opslaan (dus in de "if"), zou ik met fopen, fwrite en fclose doen....
 
Dat zegt Aaajeetee ook :)

"het opslaan (dus in de if), zou ik met fopen, fwrite en fclose doen...."

Probeer dit eens:
PHP:
<?php 

$filename = 'bestanden/test.cfg'; 
$inhoud =  file_get_contents($filename);

if(isset($_POST['submit'])) {
  $handle = fopen("$filename", "w+"); 
  if(!fwrite($handle, $_POST['inhoud'])) {
    echo "Schrijven naar bestand mislukt!";
    exit;
  } else {
    echo "Opdracht uitgevoerd!";
    fclose($handle);
  }
} else {
echo'
<html> 
<head> 
<title>Bestand uitlezen</title> 
</head> 
<body> 
<form> 
<textarea name="inhoud">'. $inhoud .'</textarea> 
<input type="submit" name="submit" value="Opslaan" /> 
</form> 
</body> 
</html>';
}
?>
 
Als ik iets uit het bestand haal, en dan op Opslaan duw. Dan is het er gewoon weer :eek:


Wat ik ook niet snap is dit regeltje:
PHP:
$_POST['inhoud'])) {

Nu post PHP toch de inhoud? En we hadden gezegt:
PHP:
$inhoud =  file_get_contents($filename);

Dus PHP doet als je op Opslaan klikt, gaat PHP het bestand openen. En dat bestand posten?
 
Laatst bewerkt:
Ik snap het al van de vorige post. Maar ik lees uit het PHP bestand dat het een melding moet geven. Als ik op Opslaan duw, wordt de pagina herladen. Meer niet:confused:
 
PHP:
<?php
$filename = 'bestanden/test.cfg';
$inhoud = file_get_contents($filename);

echo '
<html>
<head>
<title>Bestand uitlezen</title>
</head>
<body>
<form>
<textarea name="inhoud">'. $inhoud .'</textarea>
<input type="submit" name="submit" value="Opslaan" />
</form>
</body>
</html>';

if (is_writable($filename)) {

    if (!$handle = fopen($filename, 'a+')) {
         print "Kan het bestand niet openen ($filename)";
         exit;
    }

    if (!fwrite($handle, $_POST['inhoud'])) {
        print "Kan niet schrijven naar bestand ($filename)";
        exit;
    }

    print "Succes, geschreven ($somecontent) naar bestand ($filename)";

    fclose($handle);

} else {
    print "Het bestand $filename is niet schrijfbaar";
}
?>

Hiermee heb ik alleen tekst verwijderd. Ik kan niks plaatsen. Hoe het verwijderd is moet je me niet vragen :shocked:
 
Probeer deze eens, bij mij werkte hij:
PHP:
<?php 

$s_filename = 'README.txt'; 
$s_inhoud =  file_get_contents($s_filename);

if(isset($_POST['submit'])) {
  $r_handle = fopen($s_filename, "w+"); 
  if(!fwrite($r_handle, $_POST['inhoud'])) {
    echo "Schrijven naar bestand mislukt!";
    exit;
  } else {
    echo "Opdracht uitgevoerd!";
    fclose($r_handle);
  }
} else {
echo'
<html> 
<head> 
<title>Bestand uitlezen</title> 
</head> 
<body> 
<form method="post"> 
<textarea name="inhoud" cols="50" rows="50">'. $s_inhoud .'</textarea> <br />
<input type="submit" name="submit" value="Opslaan" /> 
</form> 
</body> 
</html>';
}
?>
Ik kwam er achter dat zonder bij het <form> specifiek de method aan te geven, er standaard gebruik wordt gemaakt van de get-methode.
(Kijk maar naar de url wanneer je het vorige script gebruikt welke ik je gaf. Dan komt het achter de url te staan.)

PS: Wel even de bestandsnaam aanpassen ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan