Ankündigung

Einklappen
Keine Ankündigung bisher.

Warum funktioniert der script nicht?

Einklappen

Neue Werbung 2019

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

  • Warum funktioniert der script nicht?

    Guten Tag,
    ich wollte was mit einem Php Script in eine datenbank reinschreiben aber das klappt i-wie nicht. Könnt ihr mir helfen das Problem zu lösen?

    Vielen dank! Ich habe gerade erst angefangen wieder zu lernen ^^

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title></title>
    <meta name="author" content="XXXXX">
    <meta name="editor" content="html-editor phase 5">
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    <center>
    <?
    if (isset($_GET['text'])) {
      echo $_GET['text'];
    } else {
      echo "</br>";
    }
    ?>
    <br/>
    <h4>Neuen Serial hinzufügen</h4>
    <form action="add.php" method="post">
    <input name="1" maxlength="5" size="5">-
    <input name="2" maxlength="5" size="5">-
    <input name="3" maxlength="5" size="5">-
    <input name="4" maxlength="5" size="5">-
    <input name="5" maxlength="5" size="5">
    <h4>Programm:</h4>
    <input name="6" maxlength="50" size="20">
    <h4>Beschreibung:</h4>
    <input name="7" maxlength="50" size="20">
    <br/>
    <br/>
    <input type="submit" value="Erstellen">
    </form>
    <br/>
    <br/>
    </center>

    </body>
    </html>
    die add.php

    PHP-Code:
    <?
    if (!isset($_POST['1'])) {
      die("Fehler");
    }
    $serial = $_POST['1'];
    $serial .= $_POST['2'];
    $serial .= $_POST['3'];
    $serial .= $_POST['4'];
    $serial .= $_POST['5'];
    $programm = $_POST['6'];
    $beschreibung = $_POST['7'];
    mysql_connect("XXXXXXXXXXX", "XXXXXXXXX", "XXXXXXXXXX");
    mysql_select_db("XXXXXXXXXXXXXX");
    $result=mysql_query("SELECT count(*) FROM Serial WHERE Serial = '$serial'");
    echo mysql_error();
    exit();
    if ($result > 0) {
      Header("Location: admin.php?text=Die Serialnummer existiert bereits");
    } else {
      $serial=md5('$serial');
      mysql_query("INSERT INTO Serial (Serial, Programm, Beschreibung, Erstellt, Benutzt) VALUES('$serial', '$programm', '$beschreibung' now(), '0')");
      header("Location: admin.php?text=Die Serialnummer wurde erfolgreich in die Datenbank eingefügt");
    }
    ?>

    Wenn ich einen neuen Serial erstellen will kommt immer eine leere weißee seite


  • #2
    Wenn ich einen neuen Serial erstellen will kommt immer eine leere weißee seite
    Das error_reporting hast du auf E_ALL stehen, und display_errors auf on?
    Wenn nicht, hole das bitte schleunigst und als allererstes nach.


    Gehe nicht naiv davon aus, dass Datenbank-Operationen immer problemlos klappen - sondern werte den Rückgabewert von mysql_query aus, und Frage im Fehlerfalle mit mysql_error nach einer genaueren Beschreibung.


    Und ein Location-Header erfordert per Definition einen vollständigen URL inkl. Protokoll-Angabe. Ausserdem solltest du nicht einfach alles in den Querystring reinwerfen, was dir gerade so einfällt, sondern diese Daten URL-gerecht behandeln - urlencode/rawurlencode.

    Kommentar


    • #3
      Hat warscheinlich nichts mit deinem Problem zu tun, aber das kann so nicht funktionieren.

      Hier überprüfst du ob die Seriennummer vorhanden ist mit der Klartextnummer
      PHP-Code:
      $result=mysql_query("SELECT count(*) FROM Serial WHERE Serial = '$serial'"); 
      Wenn du die Seriennummer aber einträgst verschlüsselst du sie mit MD5
      PHP-Code:
      $serial=md5('$serial');
        
      mysql_query("INSERT INTO Serial (Serial, Programm, Beschreibung, Erstellt, Benutzt) VALUES('$serial', '$programm', '$beschreibung' now(), '0')"); 
      Deine Abfrage, ob die Seriennummer schon vorhanden ist, kann gar nicht funktionieren.

      Zu deinem Problem. Mach in beiden Bedingungen mal ein ECHO so siehst du wo dein script stehen bleibt.

      PHP-Code:
      if ($result 0) {
      echo 
      'existiert';
        
      //Header("Location: admin.php?text=Die Serialnummer existiert bereits");
      } else {
      echo 
      'existiert nicht';
        
      $serial=md5('$serial');
        
      mysql_query("INSERT INTO Serial (Serial, Programm, Beschreibung, Erstellt, Benutzt) VALUES('$serial', '$programm', '$beschreibung' now(), '0')");
        
      //header("Location: admin.php?text=Die Serialnummer wurde erfolgreich in die Datenbank eingefügt");

      Fals du aber weitergeleitet wirst, musst du deine admin.php auf den Fehler untersuchen.

      Kommentar


      • #4
        Mhmm jo da haste recht jetzt wenn ich den script starte kommt immer existriert obwohl der nicht eingetragen ist. Hab auch exit(); weg gemacht. Ich glaube es liegt eher an der add.php oder?

        Kommentar


        • #5
          Zitat von Replay Beitrag anzeigen
          Mhmm jo da haste recht jetzt wenn ich den script starte kommt immer existriert obwohl der nicht eingetragen ist.
          Natürlich, weil du aus dem Rückgabewert von mysql_query einen vollkommen unsinnigen Schluss zu ziehen versuchst.

          Lies dir jetzt bitte endlich im Manual durch, was dieser Rückgabewert aussagt.

          Kommentar


          • #6
            Was ist manual? Ich beenutze texteditor? ich hab gesagt ich bin anfänger ^^

            Kommentar


            • #7
              lass mich das für dich Googlen
              --

              „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


              • #8
                Ist es so richtig: mysql_query("INSERT INTO Serial (Serial, Programm, Beschreibung, Erstellt, Benutzt) VALUES('$serial', '$programm', '$beschreibung' now(), '0')");

                Kommentar


                • #9
                  Ich beenutze texteditor?
                  Welcome to NetBeans
                  PHP Development Tools Project
                  Notepad++ | 5.7
                  Signatur:
                  PHP-Code:
                  $s '0048656c6c6f20576f726c64';
                  while(
                  $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                  Kommentar


                  • #10
                    Zitat von Replay Beitrag anzeigen
                    Ist es so richtig:
                    Ist was so richtig?
                    Ich dachte, es geht erst mal darum, dass schon die davor stattfindende Prüfung, ob die Serial-Nummer schon vorhanden ist, fehlerhaft verläuft?

                    mysql_query("INSERT INTO Serial (Serial, Programm, Beschreibung, Erstellt, Benutzt) VALUES('$serial', '$programm', '$beschreibung' now(), '0')");
                    Abgesehen davon, dass so eine „ist das richtig“-Fragestellung immer noch ziemlich sinnlos ist - Nein, ist es definitiv nicht, weil du der Problematik SQL Injection keinerlei Beachtung geschenkt hast.
                    (Und ein Komma fehlt auch noch.)

                    Kommentar


                    • #11
                      Du verwendest die Variable $result falsch. Lies dir mal den Abschnitt über die MySQL-Funktionen im PHP Manuel durch und such dir Tutorials zu Datenbankabfragen und PHP im Netz. Dir fehlen die Grundlagen.

                      Kommentar


                      • #12
                        Das mit dem überprüfen lass ich weg da ich das sowieso nicht versteh jedoch 1 problem hab ich:
                        PHP-Code:
                         $serial=md5('$serial'); 
                        zeigt immer den gleichen md5 an? Ich will aber das diee serials in meiner datenbank verschlüsselt sind

                        Kommentar


                        • #13
                          Ja, der zeigt den MD5 der Zeichenkette $serial an.

                          Codeoptimierung:Code-Smells - PHP.de Wiki
                          http://www.openwebboard.org/Tutorial...html#hMythos_1
                          --

                          „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


                          • #14
                            Zitat von Replay Beitrag anzeigen
                            $serial=md5('$serial'); zeigt immer den gleichen md5 an?
                            Oh verflixt, lern' endlich Grundlagen ...

                            Kommentar


                            • #15
                              i-wie versteht er euch nicht

                              SCNR
                              PHP-Code:
                              if ($var != 0) {
                                
                              $var 0;

                              Kommentar

                              Lädt...
                              X