Problem beim übergeben einer POST-Variable und schreiben in eine *.txt-Datei

bekod

Grünschnabel
Hallo,

habe mich eben angemeldet, da ich hier einige Beiträge durchgelesen habe, die mir allerdings nicht viel bei meinem Problem weitergeholfen haben. Ich habe mich also entschlossen mein Problem hier explizit zu schildern, damit mir geholfen werden kann. Ich bin am Anfang eines kleinen Chat-Projekts, zur Information.

index.html
HTML:
<!DOCTYPE HTML>
<html>
<head>
 <title>Chat Test</title>
 <script type="text/javascript">
  function loadchat(){
    setTimeout(update(), 5);
  }
 
  function update(){
   if (window.XMLHttpRequest){
    myAjax = new XMLHttpRequest();
   }else{
    myAjax = new ActiveXObject("Microsoft.XMLHTTP");
   }
 
   myAjax.onreadystatechange=function(){
    if (myAjax.readyState==4 && myAjax.status==200){
     document.getElementById("output").innerHTML=myAjax.responseText;
    }
   };
   
   myAjax.open("GET","chat.php",true);
   myAjax.send();
  }
  
  function sendmessage(){
  
  	if (window.XMLHttpRequest){
  	 sendtext = new XMLHttpRequest();
  	}else{
  	 sendtext = new ActiveXObject("Microsoft.XMLHTTP");
  	}
    
    sendtext.open("POST","chat.php");
    sendtext.setRequestHeader("Content-Type",  "application/x-www-form-urlencoded"); 
    sendtext.send('text='+document.getElementById("text").value);
    window.alert('In dem Textfeld stand: '+document.getElementById("text").value);
  } 
 </script>
</head>
<body onload="loadchat()">
 <div style="width:400px; border: 1px black solid;" id="output">Chat wird geladen..</div><br>
 <form name="chat" onSubmit="sendmessage()" action="javascript:return false;" method="post">
   <input type="text" name="text" class="text" id="text">
 </form>
</body>
</html>


chat.php
PHP:
<?php

$text = $_POST["text"];
$filename = "chat.txt";
$handle = fopen($filename, "r+");

fwrite((fopen($filename, a)), $text);


$contents = fread(fopen($filename, r), filesize($filename));
fclose($handle);

echo $contents;

?>

Mein Problem ist, dass zwar die chat.txt ausgelesen und auch angezeigt wird auf der index.html, allerdings ist es mir nicht möglich einen Text ordentlich in die chat.txt zu schreiben.

Danke, im Voraus!
 
Zuletzt bearbeitet:
Das hat zwar nix mit JS zu tun sondern eher mit PHP, aber ich sag dir gleich mal was mir auffällt.
PHP:
$handle = fopen($filename, "r+"); // hier öffnest du die Datei zum lesen und schreiben von anfang

fwrite((fopen($filename, a)), $text); // hier öffnest du wieder den Parameter aber nicht als string


$contents = fread(fopen($filename, r), filesize($filename)); // hier öffnest du wieder und Paramter nicht als string
Du erstellst als erstess ein neues Handle verwendest es aber nicht.

PHP:
$handle = fopen($filename, "r+");
fwrite($handle, $text);

$contents = fread($handle, filesize($filename));

Noch dazu muss der Parameter für die Schreib/Leseberechtigung als String angegeben werden.
 
Die file ist so eine Art "Schmierblatt", d.h. dass die hälfte von allem gar nicht mehr benutzt wird. Es geht also konkret um das Problem!
 
Dann beschreib doch dein Problem genauer....
Mein Problem ist, dass zwar die chat.txt ausgelesen und auch angezeigt wird auf der index.html, allerdings ist es mir nicht möglich einen Text ordentlich in die chat.txt zu schreiben.

Was heist "nicht Ordentlich"?
 
Nicht ordentlich heißt bei mir soviel wie "gar nicht". Es wird einfach nix zusätzlich in die chat.txt geschrieben..
 
Benutze statt "r+" die Option "a+".
Dann wird der Zeiger an das Ende der Datei gesetzt und die bisherigen Daten werden nicht überschrieben.

Siehe auch php.net: [phpf]fopen[/phpf]
 
Funktioniert immer noch nicht, hab die Parameter für's Lesen und Schreiben auch als String angegeben.
 

Neue Beiträge

Zurück