Probleme mit Script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Script

    Hi, ich hab ein für Euch Profis ein kleines Problem. Ich bin gerade dabei, ein kleines einfaches Gästebuch zu erstellen. Klappt auch ganz gut, nur passiert folgendes.
    Ich habe 2 Seiten, 1. gaestebuch.php 2. eintragen.php

    sobald ich die Datei "eintragen.php" anklicke, fügt das Script automatisch einen leeren Eintrag in die Datenbank ein. Und wenn ich Daten eingebe, werden die ausgefüllten Felder nicht übernommen und es entsteht wieder ein leerer Eintrag und die Seite wechselt wieder zu "gaestebuch.php" zurück.
    Dazu ist dieses Script:

    PHP-Code:
    <? include("header.php"); ?>
    <? include ("connect_inc.php");?>

    <?

      $name_neu = $_POST['name_neu'];
      $ort_neu = $_POST['ort_neu'];
      $eintrag_neu = $_POST['eintrag_neu'];
      
          
      $datum_neu = date("d.m.Y");
      $zeit_neu =  date("H.i");
      
      
    $eintrag = "INSERT INTO gaestebuch (id, name, datum, zeit, ort, eintrag)
     VALUES('', '$name_neu', '$datum_neu', '$zeit_neu', '$ort_neu','$eintrag_neu')";
    $eintragen = mysql_query($eintrag);



    ?>
    <html>
    <body>

    <form id="gaestebuch" name="gaestebuch" action="gaestebuch.php">
    <table border="0" width="80%">
          <tr>
                <td>Name:</td>
                <td>Wohnort:</td>
          </tr>
          <tr>
                <td><input type="text" name="name_neu" size="20" maxlength="30" tabindex="1"></td>
                <td><input type="text" name="ort_neu" size="20" maxlength="20" tabindex="2"></td>
          </tr>
    </table><p>
          <textarea name="eintrag_neu" rows="5" cols="30" tabindex="3">Hier kommt der Inhalt</textarea><p>
          <input type="submit" name="senden" value="senden">
          <input type="reset" name="loeschen" value="löschen"><p><hr color="#000000">
          </form>

    </body>
    </html>


    <? include("footer.php"); ?>

    Ändere ich jetzt folgende Zeile
    PHP-Code:
    <form id="gaestebuch" name="gaestebuch" action="gaestebuch.php"
    in
    PHP-Code:
    <form id="gaestebuch" name="gaestebuch" action="<?php $_SERVER['PHP_SELF']; ?>" method = "POST">
    ab, schreibt er zwar den DB-Eintrag, jedoch wechselt die Seite nicht automatisch zu "gaestebuch.php" zurück. Und wenn ich statt ['PHP_SELF'] ['gaestebuch.php'] schreibe, werden die Daten ebenfalls übernommen, aber auch hier wechselt die Seite nicht automatisch zurück zu "gaestebuch.php".

    Nun meine Frage, was muss ich ändern, bzw. hinzufügen, damit:

    1. kein leerer DB-Eintrag automatisch gemacht wird,
    2. die Daten übernommen werden und die Seite "gaestebuch.php" aufgerufen wird.

    Vielen Dank schon mal für Eure Hilfe!

    Gruss Darson
    MfG Darson

  • #2
    action="<?php $_SERVER['PHP_SELF']; ?>" <<-- falsch
    action="<?php echo $_SERVER['PHP_SELF']; ?>" <<-- besser
    action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" <<-- meist viel viel besser

    Achte auf XSS Anfälligkeiten...
    Und wenn Formular OK, dann:
    PHP-Code:
    include "gaestebuch.php" 
    Zuletzt geändert von combie; 13.10.2007, 23:57.
    Wir werden alle sterben

    Kommentar


    • #3
      Original geschrieben von combie
      action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" <<-- meist viel viel besser

      Achte auf XSS Anfälligkeiten...
      Script_Name??? Sorry, aber bin noch nicht so erfahren mit PHP/MySQL. Kann das nirgendwo zuordnen. Und meine Probs hab ich dadurch immer noch!!

      Und was sind XSS Anfälligkeiten????


      Gruss Darson
      MfG Darson

      Kommentar


      • #4
        Wenn du neu bist, dann sei wenigstens so gütig und mach dich erstmal selbstständig auf die Suche!

        Kommentar


        • #5
          Hab ich doch die letzten 3 Stunden gemacht TobiaZ. Nur leider sind die meisten Scripts viel umfangreicher als meines, und Tuts hab ich auch schon durchforstet, aber die beschreiben nicht das was ich habe, sondern nur teile davon, oder sie sind auch ziemlich umfangreich!!!
          MfG Darson

          Kommentar


          • #6
            Seltsam. Die antwort kam vor ca 10 Minuten und du behauptest 3 Stunden gesucht zu haben. Super!

            Kommentar


            • #7
              Original geschrieben von TobiaZ
              Seltsam. Die antwort kam vor ca 10 Minuten und du behauptest 3 Stunden gesucht zu haben. Super!
              Ich habe 3 Stunden gesucht, bevor ich dieses Thema erstellt habe!!!
              MfG Darson

              Kommentar


              • #8
                ich bezog mich aber auf
                Script_Name??? Sorry, aber bin noch nicht so erfahren mit PHP/MySQL. Kann das nirgendwo zuordnen. Und meine Probs hab ich dadurch immer noch!!

                Und was sind XSS Anfälligkeiten????

                Kommentar


                • #9
                  Und was dein eigentliches Problem angeht: Lies und befolge unsere Regeln. http://www.php-resource.de/forum/sho...threadid=50454

                  Danach bitte neue Problembeschreibung posten.

                  Kommentar


                  • #10
                    XSS
                    google: "xss php_self"
                    (Ergebnisse 1 - 10 von ungefähr 929 Seiten auf Deutsch für xss php_self . (0,29 Sekunden))
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Ich hoffe doch das ich damit Deiner Empfehlung entspreche!!!!

                      PHP-Code:
                      <?
                         error_reporting(E_ALL);
                        $name_neu = $_POST['name_neu'];
                        $ort_neu = $_POST['ort_neu'];
                        $beitrag_neu = $_POST['beitrag_neu'];
                        
                            
                        $datum_neu = date("d.m.Y");
                        $zeit_neu =  date("H.i");
                        
                        
                      $eintrag = "INSERT INTO gaestebuch (id, name, datum, zeit, ort, eintrag)
                       VALUES('', '$name_neu', '$datum_neu', '$zeit_neu', '$ort_neu','$beitrag_neu')
                       or die(mysql_error().'<hr />'.'euer SQL'.'<hr />')";
                      $eintragen = mysql_query($eintrag);

                      Also:
                      PHP-Code:
                      or die(mysql_error().'<hr />')"; 
                      bewirkt nichts.

                      bei
                      PHP-Code:
                      error_reporting(E_ALL); 
                      kommenfolgende Fehlermeldungen:



                      Notice: Undefined index: name_neu in C:\Programme\xampp\htdocs\funpic\eintragen.php on line 6

                      Notice: Undefined index: ort_neu in C:\Programme\xampp\htdocs\funpic\eintragen.php on line 7

                      Notice: Undefined index: beitrag_neu in C:\Programme\xampp\htdocs\funpic\eintragen.php on line 8

                      Aber daran liegt es nicht, das ein leerer Datensatz automatisch erzeugt wird.
                      Zuletzt geändert von Darson; 14.10.2007, 00:54.
                      MfG Darson

                      Kommentar


                      • #12
                        Also: or die(mysql_error().'<hr />')"; bewirkt nichts.
                        Natürlich nicht, der Eintrag wird ja gemacht!

                        bei error_reporting(E_ALL); kommenfolgende Fehlermeldungen:
                        Das habe ich auch erwartet. Bitte beheben!

                        Kommentar


                        • #13
                          Aber daran liegt es nicht, das ein leerer Datensatz automatisch erzeugt wird.
                          Aber sicherlich!
                          Du schreibst die leeren Daten, obwohl niemand das Formular abgesendet hat.
                          Teste mit isset().....

                          Und zusätzlich:
                          google: "SQL Injection"
                          Zuletzt geändert von combie; 14.10.2007, 01:01.
                          Wir werden alle sterben

                          Kommentar


                          • #14
                            zu

                            PHP-Code:
                             or die (mysql_error().'<hr />'
                            er wird nicht gemacht!

                            und die anderen Fehlermeldungen sind ja die Variablen, die erst durch die Formularfelder eine Zuweisung erhalten!!!
                            MfG Darson

                            Kommentar


                            • #15
                              und die anderen Fehlermeldungen sind ja die Variablen, die erst durch die Formularfelder eine Zuweisung erhalten!!!
                              Richtig. Stellt sich nur die Frage, warum du die variablen schon verwendest, BEVOR sie existieren.

                              Schau dir mal ein paar grudlagenseiten zur Formularverarbeitung an.

                              Kommentar

                              Lädt...
                              X