fopen werkt niet naar behoren

Status
Niet open voor verdere reacties.

Jorryt

Gebruiker
Lid geworden
19 dec 2010
Berichten
246
Heey,

Ik loop tegen een heel onbenullig probleem aan,
als ik fopen met r+ gebruik en vervolgens in het geopende bestand ga schrijven met fwrite, vernietigd die een eerste aantal tekens. Ik weet niet precies hoeveel, of waarom?

Kan het misschien aan xamp liggen?

Groetjes,
 
Aan Xamp ligt het niet, maar lees eerst op www.php.net de fopen functie.
Daar staat het duidelijk beschreven en voorbeelden.

Op php.net staan alle functies beschreven, het is de php bijbel!
 
Ja dat snap ik.
Toch gaat het mis, want in onze bijbel staat niet geschreven dat god zij dat als ik r+ gebruik er dan tekens weg gaan in mijn txt bestand.
 
wat is je script dan?

Daar zal best iets fouts in staan, kunnen we met z'n alle hier kijken wat er mis gaat!
 
Astu

PHP:
<?php
$naam = $_POST["naam"];
$bericht = $_POST["bericht"]; 
$datum_ruw = $_POST["datum"];
$datum = str_replace("+0100","",$datum_ruw);

$post = "
-----------------------------------------------------------------------------------------------<br>
$naam schreef op $datum het volgende bericht:<br><br>
$bericht<br>
-----------------------------------------------------------------------------------------------<br><br>";

if((!empty($naam)) && (!empty($bericht)) && (!empty($datum))) {
	$openen = fopen("gastenboek.txt","a+");
	fwrite($openen,$post);
		header("location: gastenboek.php");
}
else {
	header("location: gastenboek.php");
}
?>

a+ werkt wel, maar die heb ik niet nodig, aangezien hij dan onderaan begint...
 
heb je hem al geprobeerd met w+ ?

Dat is er een die het altijd zou moeten doen!
 
Die, zoals in onze bijbel staat, leegt het bestand eerst...
 
Je sluit het bestand niet af! fclose($files);
 
Dom van me,

maar het werkt nog steeds niet...
Weet je zeker dat het niet aan xamp licht? een bug ofzo?
 
ik weet niet of je een webhost heb, maar dan kun je het simpel uit testen. Maar het lijkt me onwaarschijnlijk.

Maar Fopen is toch een oude php functie, tegenwoordig werkt het toch met get_file_content.

Ik reageer nu ff wat minder, zit bij een maat met visite e, een heerlijke borrel!
 
Weet je zeker dat ie tekent vernietigd? Heb je de file met de hand geopend en bekeken?

Kun je anders eens een "voor" en "na" situatie doen? Ik ben wel benieuwd wat er precies verwijderd wordt dan.
 
Ja dat heb ik, hier is het wat voor de dinges er staat:

Dit is wat er na 1 ding gebeurd, dit klopt.:

Code:
-----------------------------------------------------------------------------------------------<br>
Jorryt Tichelaar schreef op Sun, 16 Jan 2011 12:05:25  het volgende bericht:<br><br>
Probeert het opnieuw op deze frisse nieuwe mooie dag.<br>
-----------------------------------------------------------------------------------------------<br><br>

Dit staat er na de 2e poging:


Code:
-----------------------------------------------------------------------------------------------<br>
Frats schreef op Sun, 16 Jan 2011 12:05:39  het volgende bericht:<br><br>
En phobia zijn aardige mensen die mij helpen met dit onwaarschijnlijk te gebeuren probleem.<br>
-----------------------------------------------------------------------------------------------<br><br>

Voor de zekerheid een 3e poging:

Code:
-----------------------------------------------------------------------------------------------<br>
Phobia schreef op Sun, 16 Jan 2011 12:07:03  het volgende bericht:<br><br>
Overegens werkt die ene funcite alleen als je de informatie eruit wilt halen en op wil slaan in een string, dit wil ik niet. Lees de bijbel er maar op na;)<br>
-----------------------------------------------------------------------------------------------<br><br>

Ik gebruik nu r+ voor deze dingen.
 
en als je dit gebruikt?
PHP:
$file_name= "myfile.txt";
if(file_exists($file_name))
{
	//open file for writng and place pointer at the end
	$handle = fopen($file_name, 'a+');

	if(!$handle)
	{
		die("couldn't open file <i>$file_name</i>");
	}
	
	//place pointer at the beginning of the file.
	rewind($handle);

	//write to file
	fwrite($handle, "Student ID: 12345");
	echo "success writing to file";
}
else
{
	echo "file <i>$file_name</i> doesn't exists";
}
fclose($handle);
 
Heey jongens,
Het ligt niet aan xamp, 000webhost doet het ook niet.
Voor de rest vraag ik me af of ik kan mailen met 000webhost.

Ik heb wel een trucje bedacht om het probleem op te lossen en het werkt:

PHP:
<?php
$naam = $_POST["naam"];
$bericht = $_POST["bericht"]; 
$datum_ruw = $_POST["datum"];
$datum = str_replace("+0100","",$datum_ruw);
$vroegere_posts = file_get_contents("gastenboek.txt");

$post = "
-----------------------------------------------------------------------------------------------<br>
$naam schreef op $datum het volgende bericht:<br><br>
$bericht<br>
-----------------------------------------------------------------------------------------------<br><br>
$vroegere_posts";

if((!empty($naam)) && (!empty($bericht)) && (!empty($datum))) {
	$openen = fopen("gastenboek.txt","w+");
	fwrite($openen,$post);
	fclose($openen);
	header("location: gastenboek.php");
}
else {
	header("location: gastenboek.php");
}
?>
 
Ik vermoed dat r+ geen insert mode maar overwrite mode is dan. Dus hij overschrijft waarschijnlijk eerdere tekens met de nieuwe.

Je huidige oplossing werkt inderdaad, ik zou die gewoon aanhouden.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan