Gästebucheinträge verkehrt herum

  • PHP

  • Clawhammer
  • 1479 Aufrufe 11 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Gästebucheinträge verkehrt herum

    So....
    hab mir ein ganz kleines Simples Gästebuch gebastelt:

    PHP-Quellcode

    1. <?php
    2. $name = $_REQUEST['name'];
    3. $home = $_REQUEST['nachname'];
    4. $kommentar = $_REQUEST['kommentar'];
    5. if ($name == "") {
    6. } else {
    7. $datei=fopen("Guestbook.txt","a");
    8. fwrite($datei,nl2br($_POST['name']));
    9. echo fwrite($datei, "<br/>",100);
    10. fwrite($datei,nl2br($_POST['nachname']));
    11. echo fwrite($datei, "<br/>",100);
    12. fwrite($datei,nl2br($_POST['kommentar']));
    13. echo fwrite($datei, "<br/><br/>",100);
    14. fclose($datei);
    15. }
    16. ?>
    17. <div align="center">G&auml;stebuch
    18. </div>
    19. <form id="form1" name="form1" method="post" action="">
    20. <p align="left">Name:
    21. <input name="name" type="text" id="name" />
    22. </p>
    23. <p align="left">Nachname:
    24. <input name="nachname" type="text" id="nachname" />
    25. </p>
    26. <p align="left">Kommentar:</p>
    27. <p align="left">
    28. <textarea name="kommentar" cols="110" rows="10" id="kommentar"></textarea>
    29. </p>
    30. <p align="left">
    31. <input type="submit" name="Submit" value="Senden" />
    32. </p>
    33. </form>
    34. <table width="100%" border="0">
    35. <tr>
    36. <td><p>G&auml;stebucheintrag:</p>
    37. <p><?php $datei=fopen("Guestbook.txt","r");
    38. echo fread($datei,1000);
    39. fclose($datei); ?>&nbsp;</p></td>
    40. </tr>
    41. </table>
    42. <p align="center"><a href="../Homepage/News.php">Main</a></p>
    Alles anzeigen


    Funktioniert soweit auch alles super :)
    Allerdings habe ich das problem das der oberste Eintrag leider der erste immer ist und das die neueren Einträge nach unten weg gehen. Wie kann ich sagen das er die Datei rückwerts ließt zumindest spaltenmäßig? Oder gibs noch nen besseren trick?

    Danke für eure Hilfe :)
    mfg
    Clawhammer
  • Moin,

    Quellcode

    1. $datei=fopen("Guestbook.txt","a");
    2. fwrite($datei,nl2br($_POST['name']));
    3. echo fwrite($datei, "<br/>",100);
    4. fwrite($datei,nl2br($_POST['nachname']));
    5. echo fwrite($datei, "<br/>",100);
    6. fwrite($datei,nl2br($_POST['kommentar']));
    7. echo fwrite($datei, "<br/><br/>",100);
    8. fclose($datei);

    Warum "echo"? fwrite gibt entweder true oder false zurück, je nachdem, ob die Aktion gelungen ist oder nicht.

    Mach das doch so, indem du erst das Gästebuch ausliest und dann den neuen Beitrag vor dem existierenden in die Datei schreibst (mit type = w+)

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Hm wie müste das dann so aussehen?:

    PHP-Quellcode

    1. $datei=fopen("Guestbooknew.txt","w+");
    2. fwrite($datei,nl2br($_POST['name']));
    3. echo fwrite($datei, "<br/>",100);
    4. fwrite($datei,nl2br($_POST['nachname']));
    5. echo fwrite($datei, "<br/><br/>",100);
    6. fwrite($datei,nl2br($_POST['kommentar']));
    7. echo fwrite($datei, "<br/><br/>",100);
    8. fclose($datei);
    9. $Zwischenspeicher1=fopen("Guestbook.txt","r");
    10. echo fread($Zwischenspeicher1,1000);
    11. $Zwischenspeicher2=fopen("Guestbooknew.txt","r");
    12. echo fread($Zwischenspeicher2,1000);
    13. $datei=fopen("Guestbook.txt","w+");
    14. fwrite($datei,nl2br($_POST['$Zwischenspeicher2']));
    15. fclose($datei);
    16. $datei=fopen("Guestbook.txt","a+");
    17. fwrite($datei,nl2br($_POST['$Zwischenspeicher1']));
    18. fclose($datei);
    Alles anzeigen


    Das Problm hierran ist nur das er leer dateien produziert :(
    Die Guestbooknew.txt ist beschrieben.

    Wiso das echo? In dem Buch was ich zum schreiben habe steht das bei dem Befehl immer dabei dachte es gehört dazu.
  • Clawhammer schrieb:


    Quellcode

    1. $datei=fopen("Guestbooknew.txt","w+");
    2. fwrite($datei,nl2br($_POST['name']));
    3. echo fwrite($datei, "<br/>",100);
    4. fwrite($datei,nl2br($_POST['nachname']));
    5. echo fwrite($datei, "<br/><br/>",100);
    6. fwrite($datei,nl2br($_POST['kommentar']));
    7. echo fwrite($datei, "<br/><br/>",100);
    8. fclose($datei);
    9. $Zwischenspeicher1=fopen("Guestbook.txt","r");
    10. echo fread($Zwischenspeicher1,1000);
    11. $Zwischenspeicher2=fopen("Guestbooknew.txt","r");
    12. echo fread($Zwischenspeicher2,1000);
    13. $datei=fopen("Guestbook.txt","w+");
    14. fwrite($datei,nl2br($_POST['$Zwischenspeicher2']));
    15. fclose($datei);
    16. $datei=fopen("Guestbook.txt","a+");
    17. fwrite($datei,nl2br($_POST['$Zwischenspeicher1']));
    18. fclose($datei);
    Alles anzeigen

    Omg :(

    Also erstens ist das echo nur sinnvoll, wenn du ausgeben möchtest, wie viele Bytes geschrieben werden... ABER SONST NICHT!!! PHP: fwrite - Manual

    Und ich lege dir echt ans Herz das Tutorial von mir DURCHZUARBEITEN! Du weist Lücken in dem programmiertechnischen Denken auf.

    Hier ist der Code, so wie ich das meinte:

    Quellcode

    1. $datei=fopen("Guestbook.txt","w+");
    2. $zwischenspeichern = fread($datei,filesize('Guestbook.txt'));
    3. fwrite($datei,$_POST['name']."<br />".$_POST['nachname']."<br /><br />".nl2br($_POST['kommentar']).$zwischenspeichern);
    4. fclose($datei);

    Wenn du Name und Nachname hast, reicht da ein <input type="text" völlig aus. Dann brauchst auch kein nl2br. Wenn das ein GB sein wird, würde ich dir außerdem zur Funktion htmlspecialchars raten, da sonst dein GB bald sehr unschön aussieht. Außerdem könnte nachdem du das TUT durchgearbeitet hast, dein nächstes Ziel eine IP-Sperre für dein GB zu bauen.

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Clawhammer schrieb:

    Für den anfang wollte ich erstmal nicht soviel mit MySQL machen, wenn die seite Fertig ist und ich mit den Grundlagen besser zurechtkomme wollte ich es nochmal ändern auf MySQL.


    ja aber lern doch lieber mysql seperat denn ohne mysql kann man eigentlich nicht so viel sicheres erstellen. und mysql ist nicht wirklich kompliziert es ist einfach nur ne afrage du kannst damit entweder einen bestimmten daten satz aus einer tabelle rausholen oder ein wert oder ein wert überschreiben oder ein wert löschen oder ne tabelle löschen oder erstellen oder ein wert in eine tabelle eintragen. mehr gibts da echt nicht zu lernen. man könnte die wichtigsten mysql befehle auf in paar sätzen aufschreiben
  • cccpmik schrieb:

    ja aber lern doch lieber mysql seperat denn ohne mysql kann man eigentlich nicht so viel sicheres erstellen. und mysql ist nicht wirklich kompliziert es ist einfach nur ne afrage du kannst damit entweder einen bestimmten daten satz aus einer tabelle rausholen oder ein wert oder ein wert überschreiben oder ein wert löschen oder ne tabelle löschen oder erstellen oder ein wert in eine tabelle eintragen. mehr gibts da echt nicht zu lernen. man könnte die wichtigsten mysql befehle auf in paar sätzen aufschreiben


    Und was hat er davon? Ein paar potentielle Sicherheitslücken, die er noch nicht begreift. Ich würde ihm stark raten erstmal sich an das Proggen zu gewöhnen und dann seine Fähgkeiten auszubauen. Nicht gleich alles auf einmal.

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.


  • Omg

    Also erstens ist das echo nur sinnvoll, wenn du ausgeben möchtest, wie viele Bytes geschrieben werden... ABER SONST NICHT!!! PHP: fwrite - Manual

    Und ich lege dir echt ans Herz das Tutorial von mir DURCHZUARBEITEN! Du weist Lücken in dem programmiertechnischen Denken auf.

    Hier ist der Code, so wie ich das meinte:



    Das Tut werd ich mir mal zu genüge tun danke für den tipp :)

    So... hab deinen code mal ausprobiert, leider ersetzt er mir jedesmal den ersten Beitrag?

    PHP-Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    5. <title>MetPro Homepage</title>
    6. <!--
    7. .Stil4 {font-family: "shelleyVolante BT"; font-size: xx-large; }
    8. .test {
    9. }
    10. -->
    11. </style>
    12. <style type="text/css">
    13. <!--
    14. body {
    15. background-color: #FFFFFF;
    16. }
    17. body,td,th {
    18. color: #000000;
    19. }
    20. .Stil1 {
    21. font-family: "shelleyVolante BT";
    22. font-size: xx-large;
    23. }
    24. -->
    25. </style></head>
    26. <body>
    27. <div align="center">
    28. <p>&nbsp;</p>
    29. <p>BANNERBILD</p>
    30. <p>&nbsp;</p>
    31. <p>&nbsp;</p>
    32. </div>
    33. <table width="100%" border="0">
    34. <tr>
    35. <td width="17%"><div align="center"><a href="Index.php" class="Stil1">Home</a></div></td>
    36. <td width="15%"><div align="center"><a href="News.php" class="Stil1">News</a></div></td>
    37. <td width="23%"><div align="center"><a href="Guestbook.php" class="Stil1">Gästebuch</a></div></td>
    38. <td width="22%"><div align="center" class="Stil1">Reservierung</div></td>
    39. <td width="22%"><div align="center"><span class="Stil4 Stil1"><a href="Gallerie/Index.php" class="Stil1">Gallerie</a></span></div></td>
    40. <td width="23%"><div align="center"><a href="Gallerie/Index.php" class="Stil1"></a><span class="Stil4 Stil1">Impressum</span></div></td>
    41. </tr>
    42. </table>
    43. <table width="100%" border="0">
    44. <tr>
    45. <td width="58%" height="1787" valign="top"><p>G&auml;stebucheintr&auml;ge:</p>
    46. <p><?php $datei=fopen("Guestbook.txt","r");
    47. echo fread($datei,1000);
    48. fclose($datei); ?>&nbsp;</p>
    49. <p>&nbsp;</p></td>
    50. <td width="42%" valign="top"><p align="center">G&auml;stebuch:</p>
    51. <form id="form1" name="form1" method="post" action="">
    52. <p>Name:
    53. <input name="name" type="text" id="name" />
    54. </p>
    55. <p>Nachname:
    56. <input name="nachname" type="text" id="nachname" />
    57. </p>
    58. <p>Kommentar:</p>
    59. <p>
    60. <textarea name="kommentar" cols="50" rows="10" id="kommentar"></textarea>
    61. </p>
    62. <p align="center">
    63. <input type="submit" name="Submit" value="Senden" />
    64. </p>
    65. </form>
    66. <p>&nbsp; </p></td>
    67. </tr>
    68. </table>
    69. <table width="100%" border="0">
    70. <tr>
    71. <td><div align="center">
    72. <p align="center"><a href="Admin/admin.php">Login</a></p>
    73. </body>
    74. </html>
    75. <?php
    76. $name = $_REQUEST['name'];
    77. $home = $_REQUEST['nachname'];
    78. $kommentar = $_REQUEST['kommentar'];
    79. if ($name == "") {
    80. } else {
    81. $datei=fopen("Guestbook.txt","w+");
    82. $zwischenspeichern = fread($datei,filesize('Guestbook.txt'));
    83. fwrite($datei,$_POST['name']."<br />".$_POST['nachname']."<br /><br />".nl2br($_POST['kommentar']).$zwischenspeichern);
    84. fclose($datei);
    85. }
    86. ?>
    Alles anzeigen
  • hey!

    so funktionierts! aber der source-code is echt unsauber!

    PHP-Quellcode

    1. <?php
    2. print_r($_REQUEST);
    3. $name = $_REQUEST['name'];
    4. $home = $_REQUEST['nachname'];
    5. $kommentar = $_REQUEST['kommentar'];
    6. if ($name != '' && $kommentar != '') {
    7. $datei=fopen("Guestbook.txt","a");
    8. fwrite($datei,str_replace('|', '-', $_POST['name']).'|'.str_replace('|', '-', $_POST['nachname']).'|'.str_replace(array("\r\n", "\r", "\n", '|'), '<br />', $_POST['kommentar'])."\r\n");
    9. fclose($datei);
    10. }
    11. ?>
    12. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    13. <html xmlns="http://www.w3.org/1999/xhtml">
    14. <head>
    15. .
    16. .
    17. .
    18. <table width="100%" border="0">
    19. <tr>
    20. <td width="58%" height="1787" valign="top"><p>G&auml;stebucheintr&auml;ge:</p>
    21. <?php
    22. $content = file("Guestbook.txt");
    23. for ($i = count($content)-1; $i >= 0; $i--) {
    24. list($fname, $lname, $text) = explode("|", $content[$i]);
    25. echo '<p><i>'.$fname.' '.$lname.'</i><br />'.$text.'<hr /></p>';
    26. }
    27. ?>
    28. </td>
    29. .
    30. .
    31. .
    32. </body>
    33. </html>
    Alles anzeigen


    ceeyaa.mex