Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Das Script funktioniert irgendwie nicht.

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Das Script funktioniert irgendwie nicht.

    Hallo,

    ich habe folgendes Problem:

    Wenn sich in dem Datenbank kein Parameter D befindet, dann die Parametern A, B, C, D eintragen und gleichzeitig alle Parametern D zurückgeben, bei denen A=A und B=B und C nicht=C
    Außerdem wenn E angeklickt ist, dann muss Ergebnis rauskommen, wo C=C.

    P.S: mich würde außerdem interessieren, wie man anstatt von ECHO, HTML-Seiten ausgibt.

    Code:
    <?php
    $verbindung = mysql_connect("localhost", "user" , "passwort") 
    or die("There are no conection to database"); 
    
    mysql_select_db("db") or die ("Database couldn't be find"); 
    
    $A = $_POST ["A"];
    $B = $_POST ["B"];
    $C = $_POST ["C"];
    $D = $_POST ["D"];
    $E = $_POST ["E"];
    
    if($A == "" OR $B== "" OR $C == "" OR $D== "")
    { 
        echo "Please, fill in all fields"; 
        exit; 
    }
    
    $result = "SELECT D FROM tb WHERE D LIKE '$D'";
    $menge = mysql_query($result); 
    
    if($menge == 0) 
    {
    $input  = "INSERT INTO tb (A, B, C, D, E) VALUES
    ('$A', '$B', '$C', '$D' '$E')";
    $eintragen = mysql_query($input); 
    
        if($eintragen == true) 
        {
    $result = "SELECT D FROM tb WHERE A LIKE '$A' B LIKE '$B' ";
    if($E==ja) 
    {
    $result .= "AND C LIKE '$C' "
    }
    else
    {
    $result .= "AND C NOT LIKE '$C'"
    }
    $output = mysql_query($result);
    echo "$output";
        }
        if($output== 0);
        {
        echo "Sorry, nothing was found";
        }
    }
    else
    {
    echo "Sorry, parameter already exist";
    }
    ?>
    Danke im Voraus.

  • #2
    Das Script funktioniert irgendwie nicht.
    Das Betiteln deines Threads irgendwie auch nicht...

    echo ist eine geeignete Direktive um Ausgaben zu tätigen - was genau möchtest du wissen? Es gibt Template-Engines, geht die Frage in diese Richtung?

    Kommentar


    • #3
      Dir fehlen eine ganze Menge Basics und dein Quellcode ist voller Sicherheitslücken, außerdem verwendet dein Script eine Veraltete MySQL API.

      Insofern du dir das nicht alles selbst beibringen willst Rate ich dazu das ganze in die Scriptbörse als Auftragsarbeit zu stellen.
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar


      • #4
        Zunächst sei Dir gesagt, daß mysql_* in nächsten Updates nicht mehr verfügbar sein wird.
        Die Alternative stellen MySQLi und PDO dar.

        Dann sind Deine Abfragen fehlerhaft:
        PHP-Code:
        $result "SELECT D FROM tb WHERE A LIKE '$A' B LIKE '$B' "
        Da fehlt mind. ein AND!

        Und dann muß ich zugeben, weiß ich nicht genau, was Du erreichen willst?!
        Vielleicht habe ich es einfach nur nicht verstanden und Du erklärst es mir evtl. nochmal?

        Und:
        P.S: mich würde außerdem interessieren, wie man anstatt von ECHO, HTML-Seiten ausgibt.
        Einfach Das HTML ins echo ballern...
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Warum prüfst du nicht auf Fehler die von der mysql_ Schnittstelle zurpckkommen? Kein einziges mal fragst du ab, ob es zB einen mysql_error gegeben hat etc...

          Das die bald nicht mehr funktioniert und du grobe Sicherheitslücken hast wurde schon gesagt. Hier noch Lesestoff zu deinen Sicherheitslücken:
          http://php-de.github.io/jumpto/sql-injection/

          Und dann noch:

          PHP-Code:
          $A $_POST ["A"];
          $B $_POST ["B"];
          $C $_POST ["C"];
          $D $_POST ["D"];
          $E $_POST ["E"]; 
          da hagelt es noch Notices... aktiviere mal error_reporting, schreib das ganz zu beginn nach dem <?php in dein Script, und behebe auch diese Meldungen.

          PHP-Code:
          error_reporting(-1);
          ini_set('display_errors'1); 

          Dann noch:

          http://php-de.github.io/jumpto/code-...n-doppelquotes
          PHP-Code:
          echo "$output"
          Und INfo am Rande:
          PHP-Code:
          if($eintragen == true
          macht / ist das selbe wie das:

          PHP-Code:
          if($eintragen
          .. denn der Ausdruck in der Klammern wird immer zu true oder false evaluiert - siehe auch: http://php-de.github.io/jumpto/if/


          Darf man fragen wo du den schrecklichen Code her hast? Und bitte die PHP Code Tags verwenden für PHP-Code statt der CODE.
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von monolith Beitrag anzeigen
            Das Betiteln deines Threads irgendwie auch nicht...

            echo ist eine geeignete Direktive um Ausgaben zu tätigen - was genau möchtest du wissen? Es gibt Template-Engines, geht die Frage in diese Richtung?
            Ja, mich würde schon interessieren die Ausgabe in Templates, wenn das nicht zu kompliziert ist.

            Kommentar


            • #7
              Zitat von tr0y Beitrag anzeigen

              Insofern du dir das nicht alles selbst beibringen willst Rate ich dazu das ganze in die Scriptbörse als Auftragsarbeit zu stellen.
              hmm.. was kann sowas kosten?

              Dir fehlen eine ganze Menge Basics und dein Quellcode ist voller Sicherheitslücken, außerdem verwendet dein Script eine Veraltete MySQL API.
              was sind das Sicherheitslücken z.B.?

              Kommentar


              • #8
                Zitat von Arne Drews Beitrag anzeigen

                Und dann muß ich zugeben, weiß ich nicht genau, was Du erreichen willst?!
                Vielleicht habe ich es einfach nur nicht verstanden und Du erklärst es mir evtl. nochmal?
                Im Grunde genommen, soll das Script ein Parameter abgleichen, wenn keine Redundanz vorhanden, dann die Daten, die bei diesem Parameter dabei sind speichern und die andere Daten ausgeben, die den gespeicherten Daten gleich sind?

                ist es so verständlich?

                Kommentar


                • #9
                  Zitat von hausl Beitrag anzeigen


                  Darf man fragen wo du den schrecklichen Code her hast?
                  Ich habe den Code aus verschiedenen Skripten irgendwie selber zusammengebastelt.

                  Kommentar


                  • #10
                    Zitat von akauser2002 Beitrag anzeigen
                    was sind das Sicherheitslücken z.B.?
                    Hier noch Lesestoff zu deinen Sicherheitslücken:
                    http://php-de.github.io/jumpto/sql-injection/
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Ich verkürzte das Script um auf den Fehler zu kommen, funktioniert trotzdem nicht. Und zwar anstatt die Daten in die Datenbank einzutragen, gibt es echo Ausgabe: "Sorry, this already exists in the system."

                      Ich denke, dass Jemand, der sich mit PHP auskennt, findet den Fehler sofort. Für mich wäre das aber supergroße Hilfe.

                      P.S. Mit Sicherheitslücken beschäftige ich mich, wenn grundsätzliches gelöst ist. Also vielen Dank im Voraus.


                      PHP-Code:
                      <?php
                      $verbindung 
                      mysql_connect("localhost""project" "pass"
                      or die(
                      "There are no conection to database"); 

                      mysql_select_db("database") or die ("Database couldn't be find"); 

                      $a $_POST ["a"];
                      $b $_POST ["b"];
                      $c$_POST ["c"];
                      $d $_POST ["d"];
                      $e $_POST ["e"];

                      if(
                      $a == "" OR $b == "" OR $e== "")

                          echo 
                      "Please, fill in all fields"
                          exit; 
                      }

                      $result "SELECT e FROM tabele WHERE e LIKE '$e'";
                      $menge mysql_query($result); 

                      if(
                      $menge == 0
                                   {
                      $input  "INSERT INTO tabele (a, b, c, d, e) VALUES
                      ('
                      $a', '$b', '$c', '$d', '$e)";
                      $eintragen mysql_query($input); 

                      }
                      else
                      {
                      echo 
                      "Sorry, this already exists in the system.";
                      }
                      ?>

                      Kommentar


                      • #12
                        Zitat von akauser2002 Beitrag anzeigen
                        Ja, mich würde schon interessieren die Ausgabe in Templates, wenn das nicht zu kompliziert ist.
                        Es gibt verschiedene fertige Template-Engines. Sehr große und mächtige wie z. B. Twig aber auch kleinere wie Plates uvm. Plates in einer Minute: http://platesphp.com/simple-example/

                        Kommentar


                        • #13
                          Ich denke, dass Jemand, der sich mit PHP auskennt, findet den Fehler sofort. Für mich wäre das aber supergroße Hilfe.
                          Eine große Hilfe wäre, wenn Du anfangen würdest mit debuggen:

                          1. Du bekommst die Meldung aus dem ELSE-Zweig
                          2. Dann wird wohl die Bedingung für IF fehlschlagen
                          3. Prüfen, was $menge beinhaltet ( var_dump )

                          und immer so weiter, bis Du den Fehler eingegrenzt bzw. gefunden hast.
                          Wir können nur mit Sicherheit sagen, daß in $menge nicht das drin steht, was Du erwartest, denn sonst käme die Meldung nicht!


                          ps: zum debugging gehört übrigens auch eine gescheite Fehler-"Analyse":
                          PHP-Code:
                          error_reporting ( -);
                          ini_set 'display_errors'true ); 
                          gepaart mit mysql_error, wenn Du dies beratungsresitent weiter nutzen möchtest.
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar


                          • #14
                            Bitte sag doch kurz, was $_POST["e"] für ein wert enthaltet/erwartet.

                            (obwohl hier noch nichts passiert, solange $menge nicht 0 ist) Prüfe bitte noch die Hochkommas in den VALUES.

                            ..und lerne einzurücken http://tut.php-quake.net/de/indent.html

                            PHP-Code:
                            <?php
                            $verbindung 
                            mysql_connect("localhost""project" "pass"
                            or die(
                            "There are no conection to database"); 
                            mysql_select_db("database") or die ("Database couldn't be find"); 

                            $a $_POST["a"];
                            $b $_POST["b"];
                            $c $_POST["c"];
                            $d $_POST["d"];
                            $e $_POST["e"];

                            if (
                            $a == "" OR $b == "" OR $e== "") { 
                                echo 
                            "Please, fill in all fields"
                                exit; 
                            }

                            $result "SELECT e FROM tabele WHERE e LIKE '$e'";
                            $menge mysql_query($result); 

                            if (
                            $menge == 0) {
                                
                            $input  "INSERT INTO tabele (a, b, c, d, e) VALUES ('$a', '$b', '$c', '$d', '$e)";
                                
                            $eintragen mysql_query($input); 
                            } else {
                                echo 
                            "Sorry, this already exists in the system.";
                            }
                            ?>

                            Kommentar


                            • #15
                              Ich denke, das Problem liegt in MySQL. Was soll ich da beachten, wenn es sich um ein einfaches Textfeld handelt?

                              Kommentar

                              Lädt...
                              X