kleine shoutbox

deh3nne

Mitglied
Bin PHP Beginner und mein Prog geht nicht so richtig...

Ich wollte mir selbst eine Shoutbox zimmern und das Grundgerüst steht soweit und funktioniert auch schon aber es tritt ein Problem auf:

Schreibt man einen neuen Eintrag und schickt diesen ab, taucht er nicht sofort auf, sondern erst nach einer Aktualisierung der site!?

Link: Link

QT: http://wwwpub.zih.tu-dresden.de/~s0500979/Trash/QT.txt

Danke für die Hilfe

PS:Allgemeine Verbesserungen zum QT sind auch gern gesehen ^^
 
ich hab mal das Script ein bisschen umgeschrieben (keine grundlegenden Veränderungen, hab nur noch eine "html-freie" Version hinzugefügt)

PHP:
 <?php
 
 // festlegung der variablen
          
         $filename = "../Trash/new.txt";
         $bool = 1;
         $htmlanzeigen = 1;
         
// neuen eintrag hinzuf&uuml;gen

if($_POST["a"] == "new"){
         $newtext = $_POST['text'];
                  
          //Schonmal geschrieben?
         $file = fopen($filename, "r");

         $cont = fread($file, filesize($filename));
         $cont = explode("|", $cont);

         for($i = 0; $i < sizeof($cont);$i++){
              if(strcmp($newtext, $cont[$i]) == 0){
                 $bool = 0;
                 echo "<p>das wurde schon geschrieben<br></p>";
              }
         }
         fclose($file);
         
         
         //txt aktualisieren falls der text nicht schon einmal geschrieben und die Länge größer null ist
         $file = fopen($filename, "a+");

         if($bool == 1 && strlen($newtext) > 0){
            fwrite($file,"|".$newtext);
         }


         fclose($file);
         
         header("Location: $PHP_SELF"); // ein reload...
}

/*********************************
// allgemeine ausgabe
*********************************/

         //auslesen
         $file = fopen($filename, "r");

         $out = fread($file, filesize($filename));

         $out = explode("|", $out);

         echo "<div>";
         for($i = 0; $i < sizeof($out);$i++){
              switch $htmlanzeigen{
              
              case 1:
              echo $i." ". $out[$i] . "<br>";
              break;
              
              case 0:
              case default:
              echo $i." ". htmlentities($out[$i]). "<br>";
              break;
              } 
         }

         echo "<p><br>Anzahl Einträge: ".sizeof($cont) . "</p>";
         fclose($file);


         echo "</div>";
         echo "<form action='g.php' method='post'>";
         echo "<textarea name='text' cols='50' rows='10'></textarea><br>";
         echo "<input type='hidden' name='a' value='new'>";
         echo "<input type='submit' value=' Blub '>";
         echo "</form>";




 ?>
 
Wie funktioniert oder was macht
Code:
if($_POST["a"] == "new")
?

das prüft ob die übergebene Variable "a" (die unten in dem hidden-feld steht) "new" ist und führt nur dann das eintragen durch
http://www.schattenbaum.net/php/if.php

und die Variable $htmlanzeigen wird doch nie geändert?!
Weiter weiß ich nicht was du mit "html-freie" Version meinst...

das ist für dich zum einstellen ;) wenn du $htmlanzeigen auf 0 setzt gibt es den Inhalt mit htmlentities aus (also ohne html, wie links u.a.)

und noch ein Versuch:
PHP:
echo "<form action='".$PHP_SELF."' method='post'>";
anstatt
PHP:
echo "<form action='g.php' method='post'>";

meiner Meinung nach müsste es aber funktionieren...
 
es dient einfach nur zum Testen, ob der Nutzer einen Beitrag in die Datei schreiben will.
(ja das mit dem string ist richtig)

falls es dir hilft:
bei mir funktioniert das Script :-)
hier

EDIT:
Link gelöscht
 
Zuletzt bearbeitet:
Das selbe Skript, was du oben gepostet hast? Wie kann das sein?

Ist die if abfrage überhaupt sinnvoll?
 
Zuletzt bearbeitet:
die if abfrage ist schon sinnvoll ansonsten prüfst du ja immer ob du das Zeug reinschreiben musst

bei mir lief das Script mit diesem Code:
PHP:
<?php
 
 // festlegung der variablen
          
         $filename = "new.txt";
         $bool = 1;
         $htmlanzeigen = 1;
         
// neuen eintrag hinzuf&uuml;gen

if($_POST["a"] == "new"){
         $newtext = $_POST['text'];
                  
          //Schonmal geschrieben?
         $file = fopen($filename, "r");

         $cont = fread($file, filesize($filename));
         $cont = explode("|", $cont);

         for($i = 0; $i < sizeof($cont);$i++){
              if(strcmp($newtext, $cont[$i]) == 0){
                 $bool = 0;
                 echo "<p>das wurde schon geschrieben<br></p>";
              }
         }
         fclose($file);
         
         
         //txt aktualisieren falls der text nicht schon einmal geschrieben und die Länge größer null ist
         $file = fopen($filename, "a+");

         if($bool == 1 && strlen($newtext) > 0){
            fwrite($file,"|".$newtext);
         }


         fclose($file);
         
         header("Location: $PHP_SELF"); // ein reload...
}

/*********************************
// allgemeine ausgabe
*********************************/

         //auslesen
         $file = fopen($filename, "r");

         $out = fread($file, filesize($filename));

         $out = explode("|", $out);

         echo "<div>";
         for($i = 0; $i < sizeof($out);$i++){
              switch ($htmlanzeigen){
              
              case 1:
              echo $i." ". $out[$i] . "<br>";
              break;
              
              case 0:
              default:
              echo $i." ". htmlentities($out[$i]). "<br>";
              break;
              } 
         }

         echo "<p><br>Anzahl Einträge: ".sizeof($out) . "</p>";
         fclose($file);


         echo "</div>";
         echo "<form action='".$PHP_SELF."' method='post'>";
         echo "<textarea name='text' cols='50' rows='10'></textarea><br>";
         echo "<input type='hidden' name='a' value='new'>";
         echo "<input type='submit' value=' Blub '>";
         echo "</form>";




 ?>
 
Zuletzt bearbeitet:
ok , das mit der if ist sinnvoll, geb ich zu...

Aber was noch offen ist, ich kopiere deinen Quelltext, schreibe ihn mir in meine *.php und trotzdem kommt nicht dasselbe raus, wie kommt das? Ich hoffe mal ich mache dabei keine dummen Anfängerfehler (zur Sicherheit: in der Datei steht nur der PHP Tag?)

Kann es auch am Server liegen?

Weiter habe ich festgestellt, das das meine *.php mit deinem Skript nicht im internet Explorer geht sondern nur im Firefox :?


geht immer noch nicht, hier ist genau der Text, der in der Datei steht:

Code:
<?php echo "<?xml version='1.0' encoding='ISO-8859-1' ?>"; ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>


        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
        <meta name="GENERATOR" content="Phase 5">
        <meta name="AUTHOR" content="Henne">
        <meta name="copyright" content="Hendrik Schuster">
        <meta name="description" content="Private Homepage, zu Vorführ und Präsentationszwecken!">
        <meta name="abstract" content="Private Homepage, zu Vorführ und Präsentationszwecken!">
        <meta name="keywords" content="deh3nne, Henne, Hendrik, Schuster, Medieninformatik, TU, Dresden">
        <meta name="page-topic" content="Private Homepage">
        <link rel="stylesheet" href="CSS/Standard.css" type="text/css">


</head>



<body lang="de-DE">

<?php

 // festlegung der variablen

         $filename = "new.txt";
         $bool = 1;
         $htmlanzeigen = 1;

// neuen eintrag hinzuf&uuml;gen

if($_POST["a"] == "new"){
         $newtext = $_POST['text'];

          //Schonmal geschrieben?
         $file = fopen($filename, "r");

         $cont = fread($file, filesize($filename));
         $cont = explode("|", $cont);

         for($i = 0; $i < sizeof($cont);$i++){
              if(strcmp($newtext, $cont[$i]) == 0){
                 $bool = 0;
                 echo "<p>das wurde schon geschrieben<br></p>";
              }
         }
         fclose($file);


         //txt aktualisieren falls der text nicht schon einmal geschrieben und die Länge größer null ist
         $file = fopen($filename, "a+");

         if($bool == 1 && strlen($newtext) > 0){
            fwrite($file,"|".$newtext);
         }


         fclose($file);

         header("Location: $PHP_SELF"); // ein reload...
}



         //auslesen
         $file = fopen($filename, "r");

         $out = fread($file, filesize($filename));

         $out = explode("|", $out);

         echo "<div>";
         for($i = 0; $i <= sizeof($out);$i++){
              switch ($htmlanzeigen){

              case 1:
              echo $i." ". $out[$i] . "<br>";
              break;

              case 0:
              default:
              echo $i." ". htmlentities($out[$i]). "<br>";
              break;
              }
         }

         echo "<p><br>Anzahl Einträge: ".sizeof($out) . "</p>";
         fclose($file);


         echo "</div>";
         echo "<form action='".$PHP_SELF."' method='post'>";
         echo "<textarea name='text' cols='50' rows='10'></textarea><br>";
         echo "<input type='hidden' name='a' value='new'>";
         echo "<input type='submit' value=' Blub '>";
         echo "</form>";




 ?>

</body>
</html>
 
Zurück