Ankündigung

Einklappen
Keine Ankündigung bisher.

textbasierendes gästebuch arrayfehler?

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • textbasierendes gästebuch arrayfehler?

    hallo ich habe eine frage da ich im moment nicht weiter komme vielleicht kann mir jemand von euch helfen

    ich habe ein textdateibasierendes gästebuch den code hier:

    PHP-Code:
    PHP-Code:
    error_reporting(E_ALL);

      
    // Der Name der Gästebuch-Datei lautet:
      
    $datenbankdatei 'gaestebuch.txt';
      
    $mailempfaenger 'postfach@domain.tld';

      
    // Überprüfung, ob die Datei vorhanden ist.
      // wenn nicht vorhanden, dann versuche diese zu erstellen
      // wenn das Erstellen nicht erfolgreich war (mangelnde Rechte), dann Skript abbrechen
      
    if(!file_exists($datenbankdatei))
        if(!@
    touch($datenbankdatei))
          die(
    "Fehler: Die Datenbank ist nicht erreichbar.");



      if(isset(
    $_POST['button']))
      {
                 if(
    $_POST['name'] == "" || $_POST['eintrag'] == "")
               {
             echo 
    'Es fehlen Angaben. Bitte vollständig ausfüllen';
               }
                   else
                   {
     
          
    $eintrag date('d.m.Y - H:i:s').' || '.$_SERVER["REMOTE_ADDR"].' || '.$_POST['name'].' || '.$_POST['email'].' || '.$_POST['eintrag']."\n";

        
          if(!
    $file = @fopen($datenbankdatei,"a"))
            die(
    "Fehler: Die Datenbank ist nicht erreichbar.");

        
          
    flock($file,LOCK_EX) or die();

         
          if(!@
    fwrite($file$eintrag))
            die(
    "Fehler: Die Datenbank ist nicht erreichbar.");

       
          
    flock($file,LOCK_UN) or die();

          
          
    fclose($file);

          
          echo 
    '<h2>Danke für deinen Eintrag</h2>Die Daten wurden erfolgreich aufgenommen.<br /><a href="'.$_SERVER["PHP_SELF"].'">Zurück zum Gästebuch</a>';


          
          @
    mail($mailempfaenger"Gästebucheintrag""Folgender Eintrag wurde hinterlassen:\n\nName: ".$_POST['name']."\nAbsender: ".$_POST['email']."\nText: ".$_POST['eintrag']."\n\nIP: ".$_SERVER["REMOTE_ADDR"]."\n".date('d.m.Y - H:i:s'), "From: ".$_POST['email']."\r\nX-Mailer: PHP/" phpversion());
                   }
              }
      else
      {
        
        echo 
    '<h2>mein Gästebuch</h2>';

       
        
    $file fopen($datenbankdatei'r');

       
                while (!
    feof($file))
                {
     
          
    $zeile  fgets($file5000);
          
    $daten  explode(" || "$zeile);
          
    $datum  $daten[0];
          
    $ip     $daten[1];                                        hier entsteht fehler1
          $name   
    $daten[2];                                      hier fehler 2
          $email  
    $daten[3];                                          hier fehler 3
          $eintrag 
    $daten[4];                                          hier fehler 4                    da die zeilenangabe der fehler ja nicht passte)

       
          if(
    $name != "" && $eintrag != "")
            echo 
    '<a href="mailto:'.$email.'">'.$name.'</a> schrieb am '.$datum.' folgendes:<br />'.$eintrag.'<br /><br />';

                }
        
    fclose($file);

       
        echo 
    '<hr />';

         } 


    ich bekomme folgende meldungen:

    Notice: Undefined offset: 1 in C:\xampp\htdocs\web\gaestebuch_textd\gaestebuchtes t.php on line xxx

    Notice: Undefined offset: 2 in C:\xampp\htdocs\web\gaestebuch_textd\gaestebuchtes t.php on line xxx

    Notice: Undefined offset: 3 in C:\xampp\htdocs\web\gaestebuch_textd\gaestebuchtes t.php on line xxx

    Notice: Undefined offset: 4 in C:\xampp\htdocs\web\gaestebuch_textd\gaestebuchtes t.php on line xxx



    er zeigt alles richtig an alle inhalte der textdate doch habe ich das gefühl beim auslesen des arrays kommt es zu einem problem.
    natürlich könnte ich sagen ok es funktioniert ja aber ich hätte es schon gern soweit sauber, da ich noch ein paar zusäte wie anti spam usw dazu programmieren möchte.


  • #2
    Zitat von Inaliii Beitrag anzeigen
    ich bekomme folgende meldungen:

    Notice: Undefined offset: 1 in C:\xampp\htdocs\web\gaestebuch_textd\gaestebuchtes t.php on line xxx
    Mach dir bitte erst mal klar, wie dumm es ist, hier die in der Meldung extra als Hilfe angegebenen Zeilenummern unkenntlich zu machen.


    Und dann schaust du dir die Daten, auf die dort zugegriffen werden soll, mal genauer an, in dem du in der Zeile davor eine Kontrollausgabe mittels var_dump oder print_r machst. (<pre> erhöht die Übersichtlichkeit, sonst in den Quelltext schauen.)

    Kommentar


    • #3
      Das hat nichts mit dumm zu tun, ich habe meine eigenen notizien rauskopiert daherstimmten sie ja nicht mehr es geht um das array. daher sah ich es nicht als dumm an sondern als sinnlos sie drin zu lassen



      ich hab sie oben im php code ergänzt

      Kommentar


      • #4
        Dann berücksichtige jetzt bitte noch den zweiten Teil meiner Antwort.

        Kommentar


        • #5
          Zitat von ChrisB Beitrag anzeigen
          Mach dir bitte erst mal klar, wie dumm es ist, hier die in der Meldung extra als Hilfe angegebenen Zeilenummern unkenntlich zu machen.


          Und dann schaust du dir die Daten, auf die dort zugegriffen werden soll, mal genauer an, in dem du in der Zeile davor eine Kontrollausgabe mittels var_dump oder print_r machst. (<pre> erhöht die Übersichtlichkeit, sonst in den Quelltext schauen.)
          PHP-Code:
          echo "<pre>";
          print_r($daten);
          echo 
          "</pre>"
          das hatte ich versucht darum sag ich ja auslesefehler beim array

          hier das ergebnis:

          Array
          (
          [0] =>

          )

          allerdingszeigt er das array komplett an in der gästebuch ausgabe

          Kommentar


          • #6
            Na was soll das schon sein?
            PHP-Code:
              $daten  explode(" || "$zeile);
                  
            $datum  $daten[0];
                  
            $ip     $daten[1];                                        hier entsteht fehler1 
            in $zeile steht etwas, was nicht in genug Teile zerlegt werden kann. AUf die dann zugreifen zu wollen, erzeugt nen Fehler.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Zitat von nikosch Beitrag anzeigen
              Na was soll das schon sein?

              in $zeile steht etwas, was nicht in genug Teile zerlegt werden kann. AUf die dann zugreifen zu wollen, erzeugt nen Fehler.
              ok wenn man mir jetzt noch sagen könnte warum es nicht in genug teile zerlegt werden kann?

              Kommentar


              • #8
                Na, dann werden die Zeilen in deiner Datei nicht das Format aufweisen, welches du beim explode() erwartest... Baue Fehlerbehandlung mit ein, und bitte bitte bitte KEIN KLAMMERAFFE (@) während der Entwicklung... du WILLST UNBEDINGT Fehlermeldungen sehen, wenn Fehler auftreten.
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Zitat von lstegelitz Beitrag anzeigen
                  Na, dann werden die Zeilen in deiner Datei nicht das Format aufweisen, welches du beim explode() erwartest... Baue Fehlerbehandlung mit ein, und bitte bitte bitte KEIN KLAMMERAFFE (@) während der Entwicklung... du WILLST UNBEDINGT Fehlermeldungen sehen, wenn Fehler auftreten.
                  Ich glaub ich muss mal was hinzufügen, ich habe den code hier aus nem tutorial raus, da ich gerade dabei bin php zu lernen und um das prinzip zu verstehen hab ich das genommen, also bitte drückt eure hilfen bisschen klarer aus ich bin noch net so fit in php ich bin noch beim lernen

                  ach das (@) hätt ich schon nicht verwendet *ggg*

                  Kommentar


                  • #10
                    Zitat von Inaliii Beitrag anzeigen
                    also bitte drückt eure hilfen bisschen klarer aus ich bin noch net so fit in php ich bin noch beim lernen
                    Wir drücken uns eigentlich klar genug aus ...


                    Wenn du nicht weisst, was explode macht, liest du es bitte im Handbuch nach.

                    Und wenn explode bei dir nicht die Eingabedaten in das zerlegen kann, was herauskommen soll - dann schaust du dir als nächstes natürlich eben diese Eingabedaten an; var_dump/print_r als „Debug-Werkzeug“ hast du ja gerade kennengelernt.

                    Kommentar


                    • #11
                      PHP-Code:
                      echo "<pre>";
                      print_r($daten);
                      echo 
                      "</pre>"
                      das hatte ich versucht darum sag ich ja auslesefehler beim array

                      hier das ergebnis:

                      Code:
                      Array
                      (
                      [0] =>
                      
                      )
                      Dass das nicht aufgeteilt werden kann, sollte doch wohl klar sein.
                      --

                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                      --

                      Kommentar


                      • #12
                        ja und warum kann es das nicht in der textdatei teilt man ja auch die einzelnen einträge mit ||

                        vielleicht kann mal jemand die lösung sagen.

                        Kommentar


                        • #13
                          Noch mal: Testausgaben machen!

                          Du willst $zeile aufteilen, $zeile enthält aber offenbar nicht das gewünschte - also mach davon eine Kontrollausgabe.

                          Kommentar


                          • #14
                            Crosspost
                            DevBlog|3D Online-Shopping|Xatrium

                            Kommentar


                            • #15
                              Bitte beachten: Anmerkungen zu Crosspostings

                              [MOD: Thread geschlossen]
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X