Probleme mit Script

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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" 
    Last edited by combie; 13-10-2007, 22:57.
    Wir werden alle sterben

    Comment


    • #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

      Comment


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

        Comment


        • #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

          Comment


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

            Comment


            • #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

              Comment


              • #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????

                Comment


                • #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.

                  Comment


                  • #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

                    Comment


                    • #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.
                      Last edited by Darson; 13-10-2007, 23:54.
                      MfG Darson

                      Comment


                      • #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!

                        Comment


                        • #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"
                          Last edited by combie; 14-10-2007, 00:01.
                          Wir werden alle sterben

                          Comment


                          • #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

                            Comment


                            • #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.

                              Comment

                              Working...
                              X