Anzeige

Undefined offset im gästebuch

Undefined offset im gästebuch | PSD-Tutorials.de

Erstellt von Inaliii, 14.05.2010.

  1. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    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:
    1.  
    2.  
    3.   $datenbankdatei = 'gaestebuch.txt';
    4.   $mailempfaenger = 'postfach@domain.tld';
    5.  
    6.   if(!file_exists($datenbankdatei))
    7.     if(!@touch($datenbankdatei))
    8.       die("Fehler: Die Datenbank ist nicht erreichbar.");
    9.  
    10.  
    11.  
    12.   if(isset($_POST['button']))
    13.   {
    14.              if($_POST['name'] == "" || $_POST['eintrag'] == "")
    15.            {
    16.          echo 'Es fehlen Angaben. Bitte vollständig ausfüllen';
    17.            }
    18.                else
    19.                {
    20.  
    21.       $eintrag = date('d.m.Y - H:i:s').' || '.$_SERVER["REMOTE_ADDR"].' || '.$_POST['name'].' || '.$_POST['email'].' || '.$_POST['eintrag']."\n";
    22.  
    23.    
    24.       if(!$file = @fopen($datenbankdatei,"a"))
    25.         die("Fehler: Die Datenbank ist nicht erreichbar.");
    26.  
    27.    
    28.       flock($file,LOCK_EX) or die();
    29.  
    30.      
    31.       if(!@fwrite($file, $eintrag))
    32.         die("Fehler: Die Datenbank ist nicht erreichbar.");
    33.  
    34.    
    35.       flock($file,LOCK_UN) or die();
    36.  
    37.      
    38.       fclose($file);
    39.  
    40.      
    41.       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>';
    42.  
    43.  
    44.      
    45.       @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());
    46.                }
    47.           }
    48.   else
    49.   {
    50.    
    51.     echo '<h2>mein Gästebuch</h2>';
    52.  
    53.    
    54.     $file = fopen($datenbankdatei, 'r');
    55.  
    56.    
    57.             while (!feof($file))
    58.             {
    59.  
    60.       $zeile  = fgets($file, 5000);
    61.       $daten  = explode(" || ", $zeile);
    62.       $datum  = $daten[0];
    63.       $ip     = $daten[1];                       //--- Undefined offset:  1
    64.       $name   = $daten[2];                   //---- Undefined offset: 2
    65.       $email  = $daten[3];                    //---Undefined offset: 3
    66.       $eintrag = $daten[4];                 //--- Undefined offset: 4
    67.  
    68.    
    69.       if($name != "" && $eintrag != "")
    70.         echo '<a href="mailto:'.$email.'">'.$name.'</a> schrieb am '.$datum.' folgendes:<br />'.$eintrag.'<br /><br />';
    71.  
    72.             }
    73.     fclose($file);
    74.  
    75.    
    76.     echo '<hr />';
    77.  
    78.      }  
    79.  
    ich bekomme folgende meldungen:

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

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

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

    Notice: Undefined offset: 4 in C:\xampp\htdocs\web\gaestebuch_textd\gaestebuchtest.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.
     
    Zuletzt bearbeitet: 14.05.2010
    #1      
  2. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Hast Du denn schon Einträge im Gästebuch? Wenn nicht mach mal bitte einen und schau ob die Meldungen immer noch angezeigt werden.

    BTW. Für die Fehlersuche braucht man schon die Zeilennummer, xxx bringt da niemanden weiter. Evtl. noch dazuschreiben, ab welcher Zeile Dein abgebildeter Code anfängt.

    Grüße
     
    #2      
  3. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    ahm i hab sogar schon per hand einträge gemacht immer selber fehler ich trag oben im code den fehler ein das ist übersichtlicher
     
    #3      
  4. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Ist mir schon klar, daß es daran liegt

    Du schreibst Du trägst es per Hand ein; was heisst per Hand? Öffnest Du die Textdatei und schreibst darein?
     
    #4      
  5. cebito

    cebito undefined

    262
    Dabei seit:
    08.03.2008
    Beiträge:
    8.316
    Geschlecht:
    männlich
    Ort:
    Dresden
    Kameratyp:
    zum durchgucken
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Wenn du schon per Hand Einträge gemacht hast, wie sehen die denn aus? So?

    14.05.2010 || 0001 || cebito || keine email || ob das der Fehler ist?

    Die Ursache für die Fehlermeldung ist nämlich, das der entsprechende Key im Array $daten nicht existiert. Mit
    PHP:
    1. $daten  = explode(" || ", $zeile);
    nimmst du die jeweilige Zeile (Gästebucheintrag) auseinander, splittest die genau bei "||" auf und trägst sie in $daten ein.
    Wenn also keine "||" zwischen den einzelnen Punkten vorhanden sind, wird auch nichts aufgesplittet wodurch alle daten in $daten[0] landen und du diese Fehlermeldung erhältst.
     
    Zuletzt bearbeitet: 14.05.2010
    #5      
  6. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    danke erst mal ich hab sie übers formular und in die textdatei direkt eingetragen.

    zwischen den einzelnen punkten sind die || vorhanden doch am ende erscheint in der textdate ein kleines quadrat was für ein zeilenumbruch /n steht

    ist das dann der fehler?
     
    #6      
  7. cebito

    cebito undefined

    262
    Dabei seit:
    08.03.2008
    Beiträge:
    8.316
    Geschlecht:
    männlich
    Ort:
    Dresden
    Kameratyp:
    zum durchgucken
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Aah, ok, grad gesehn, der Zeilenumbruch hinter dem letzten Eintrag muss weg, sonst versucht php noch eine (leere) neue Zeile zu lesen und die erzeugt dann den Fehler. So sollte es funktionieren indem du prüfst ob $zeile leer ist

    PHP:
    1.  
    2.  while (!feof($file)){
    3.  
    4.       $zeile  = fgets($file, 5000);
    5.  
    6.       if(!empty($zeile)){
    7.          $daten  = explode(" || ", $zeile);
    8.          $datum  = $daten[0];
    9.          $ip     = $daten[1];
    10.          $name   = $daten[2];
    11.          $email  = $daten[3];
    12.          $eintrag = $daten[4];
    13.  
    14.          if($name != "" && $eintrag != "")
    15.             echo '<a href="mailto:'.$email.'">'.$name.'</a> schrieb am '.$datum.' folgendes:<br />'.$eintrag.'<br /><br />';
    16.        }
    17. }
     
    Zuletzt bearbeitet: 14.05.2010
    #7      
  8. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    oh mann danke dir

    manchmal hat man aber au n brett vor m kopf
     
    Zuletzt bearbeitet: 15.05.2010
    #8      
  9. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Ha ich seh gerade, dass er dann alle neuen Einträge gar nicht mehr mit ausgibt das kann dann so auch nicht sein. hmmm
     
    #9      
  10. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Was passiert eigentlich wenn der Gast Umbrüche z.B. im Feld 'eintrag' eingibt? Wird doch wahrscheinlich vom Typ textarea sein, oder?
     
    #10      
  11. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    PHP:
    1.  
    2. <?php
    3.  
    4.  
    5.     echo '<h2>neue Einträge:</h2>
    6. <form method="post" action="'.$_SERVER["PHP_SELF"].'">
    7. Ihr Name: <input type="text" name="name"><br />
    8. eMail: <input type="text" name="email"><br />
    9. Ihr Eintrag: <textarea name="eintrag"></textarea><br />
    10. <input type="submit" name="button" value="Absenden">
    11. </form>';
    12.  
    13.   error_reporting(E_ALL);
    14.  
    15.  
    16.   $datenbankdatei = 'gaestebuch.txt';
    17.   $mailempfaenger = 'sabrina_plaschke@csn-online.net';
    18.  
    19.  
    20.   if(!file_exists($datenbankdatei))
    21.     if(!@touch($datenbankdatei))
    22.       die("Fehler: Die Datenbank ist nicht erreichbar.");
    23.  
    24.  
    25.  
    26.   if(isset($_POST['button']))
    27.   {
    28.  
    29.    
    30.            if($_POST['name'] == "" || $_POST['eintrag'] == "")
    31.            {
    32.          echo 'Es fehlen Angaben. Bitte vollständig ausfüllen';
    33.            }
    34.                else
    35.                {
    36.    
    37.       $eintrag = date('d.m.Y - H:i:s').' || '.$_SERVER["REMOTE_ADDR"].' || '.$_POST['name'].' || '.$_POST['email'].' || '.$_POST['eintrag']. "/n";
    38.  
    39.      
    40.       if(!$file = @fopen($datenbankdatei,"a"))
    41.         die("Fehler: Die Datenbank ist nicht erreichbar.");
    42.  
    43.       flock($file,LOCK_EX) or die();
    44.  
    45.      
    46.       if(!@fwrite($file, $eintrag))
    47.         die("Fehler: Die Datenbank ist nicht erreichbar.");
    48.  
    49.      
    50.       flock($file,LOCK_UN) or die();
    51.  
    52.    
    53.       fclose($file);
    54.  
    55.       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>';
    56.  
    57.  
    58.       @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());
    59.                }
    60.           }
    61.   else
    62.   {
    63.  
    64.     echo '<h2>mein Gästebuch</h2>';
    65.  
    66.    
    67.     $file = fopen($datenbankdatei, 'r');
    68.  
    69.             while (!feof($file))
    70.             {
    71.      
    72.       $zeile  = fgets($file, 5000);
    73.  
    74.       if(!empty($zeile)){
    75.          $daten  = explode(" || ", $zeile);
    76.          $datum  = $daten[0];
    77.          $ip     = $daten[1];
    78.          $name   = $daten[2];
    79.          $email  = $daten[3];
    80.          $eintrag = $daten[4];
    81.          
    82.  
    83.       if($name != "" && $eintrag != "")
    84.         echo '<a href="mailto:'.$email.'">'.$name.'</a> schrieb am '.$datum.' folgendes:<br />'.$eintrag.'<br /><br />';
    85.  
    86.             }
    87.          }
    88.          
    89.     fclose($file);
    90.  
    91.    
    92.     echo '<hr />';
    93.  
    94.      }
    95. echo "<pre>";
    96. print_r($daten);
    97. echo "</pre>";  
    98.  
    99.  
    100. ?>
    101.  
    102.  
    Heute mach ich die Datei nochmals auf und wieder Fehler:

    Array
    (
    [0] => 17.05.2010 - 10:55:13
    [1] => 000
    [2] => ina
    [3] => fuddl@bla.de
    [4] => hi test/n17.05.2010 - 10:55:31
    [5] => 000
    [6] => ina
    [7] => fuddl@bla.de
    [8] => test2/n


    die ausgabe
    )
    doch allerdings erscheint nur d erste eintrag also array und das /n macht auch probleme er spaltet allesnicht richtig auf
     
    #11      
  12. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    hab das in der textdatei hab keine sql spielen dann textarea auch ne rolle? ich mach sowas normal immer mit sql da hab ich auch ein funktionierendes doch ich soll für eine freundin auf ihre website eins machen und diese will kein geld für sql ausgeben zusätzlich als websitemodul hmmmm. und ich bin total planlos was textdatein angeht und auch der meinung dass sql moderner is und funktionaler aber da kann ich mich auch täuschen...

    ich weiß da es für private zwecke ist könnte ich kostenlos fertige module runterladen aber jetzt ist mein ehrgeiz geweckt ich will verstehen woran das liegt dass nichts geht ;)
     
    #12      
  13. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Ja spielt eine Rolle, denn wenn der Gast Text mit Umbruch eingibt ist der Umbruch in der Textdatei automatisch auch das Zeilenende; bzw. danach fängt ein neuer Daensatz an. ;)

    Im letzten Code hast Du ein Slash (/n) anstelle eines Backslashes (\n) verwendet.

    Grüße ;)

    Btw.: Egal ob Textdatei oder MySQL, die Daten sollten nie ungeprüft gespeichert werden
     
    #13      
  14. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    huhu danke lach, ja bis zur prüfung an sich bin ich noch gar nicht gekommen diese einzubauen daran werd ich mich jetzt machen *haarerauf*

    mehrzeilig geht noch net ;) bin für tips und hilfen offen und dankbar ;)
     
    Zuletzt bearbeitet: 17.05.2010
    #14      
  15. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Mit den Umbrüchen könnte nl2br weiterhelfen. Bastel Dir einfach eine Funktion in der HTML-Umbrüche generiert und danach alle \n und \r entfernt werden (str_replace).

    Du könntest am Anfang der Funktion die Usereingaben vielleicht noch durch strip_tags und htmlentities schicken, dann ist zumindest das Thema Prüfung auch weitestgehend durch.

    Grüße :)
     
    #15      
  16. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    ja so was hab i gebaut aber wo setz ich des sinnvoll hin ohne hundert fehlermeldungen zu bekommen ;) i weiß aller anfang is schwer hab direkt in die speicherung der textdatei gedacht aber des is irgendwie immer missglückt
     
    #16      
  17. netbandit

    netbandit Aktives Mitglied

    12
    Dabei seit:
    18.05.2008
    Beiträge:
    1.145
    Geschlecht:
    männlich
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Beispiel anhand von $_POST['eintrag'] und $_POST['name']:

    PHP:
    1.  
    2. function gb_text($string){
    3.     $string=strip_tags($string); // HTML und PHP-Tags entfernen
    4.     $string=trim($string); // Überflüssige Zeichen am Anfang und Ende entfernen (Umbrüche Tabs, Leerzeichen etc.
    5.     $string=htmlentities($string); // Sonderzeichen in HTML-Code umwandeln
    6.     $string=nl2br($string); // <br /> vor Umbrüche setzen
    7.     $string=str_replace("\n", " ", $string); // Zeilenvorschub entfernen
    8.     $string=str_replace("\r", " ", $string);    // Rücklauf entfernen
    9.     $string=str_replace("\t", " ", $string); // Tabs entfernen
    10.     $string=str_replace(" || ", " ", $string); // Deinen "Trenner" entfernen, könnte ja mal sein dass...
    11.     // $string=str_replace("... und was weiß ich noch was alles raus muss/soll
    12.     return $string;
    13. }
    14. // Erst definieren
    15. $eintrag='';
    16. $name='';
    17. // Dann überschreiben wenn etwas gesendet wurde
    18. if(isset($_POST['eintrag']))$eintrag=gb_text($_POST['eintrag']);
    19. if(isset($_POST['name']))$name=gb_text($_POST['name']);
    20.  
    21. // Achtung: Bei diesem Beispiel im restlichen Script nicht mehr auf $_POST['eintrag'] und $_POST['name'] zurückgreifen sondern auf $eintrag und $name
    22.  
    23. // Prüfen mit isset() ist bei diesem Beispiel nicht mehr nötig, stattdessen langt auch:
    24. if($name && $eintrag){
    25. //...
    26. }
    27.  
    28.  
    Das machst Du dann mit allen Feldern aus Deinem Formular, Kommentar am Ende (Achtung: ...) gilt dann auch für diese :)
     
    Zuletzt bearbeitet: 17.05.2010
    #17      
  18. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    ah ok dann war mein anfang den ich hatte gar net so blöd ich hatte nur n fehler in d funktion jetzt wo ich deine las wurde mir mein fehler auch klar.
    danke dir herzlich
     
    #18      
  19. Inaliii

    Inaliii Noch nicht viel geschrieben

    Dabei seit:
    31.05.2008
    Beiträge:
    17
    Geschlecht:
    weiblich
    Ort:
    Schwäbisch Hall
    Software:
    Adobe
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    eine frage hab ich noch wenn ich das

    $string=htmlentities($string); // Sonderzeichen in HTML-Code umwandeln

    wenn ich dies drin habe, wandelt er mir die ß und sonderzeichen alle in komische zeichen um wenn ich es rausnehme sieh man sie richtig,
    sollte nicht gerade mit htmlentities alles richtig dargestellt werden?
     
    #19      
  20. M3g4Star

    M3g4Star Nicht mehr ganz neu hier

    Dabei seit:
    01.10.2007
    Beiträge:
    75
    Geschlecht:
    männlich
    Undefined offset im gästebuch
    AW: Undefined offset im gästebuch

    Hallo,
    das kommt auf deinen Zeichensatz an den du verwendest.

    Beachte im Manual den charset.

     
    #20      
x
×
×