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

  • Replay
    hat ein Thema erstellt Warum funktioniert der script nicht?.

    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

  • Wolla
    antwortet
    i-wie versteht er euch nicht

    SCNR

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Ja, der zeigt den MD5 der Zeichenkette $serial an.

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

    Einen Kommentar schreiben:


  • Replay
    antwortet
    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

    Einen Kommentar schreiben:


  • magpie
    antwortet
    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.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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.)

    Einen Kommentar schreiben:


  • ByStones
    antwortet
    Ich beenutze texteditor?
    Welcome to NetBeans
    PHP Development Tools Project
    Notepad++ | 5.7

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    lass mich das für dich Googlen

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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.

    Einen Kommentar schreiben:


  • Replay
    antwortet
    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?

    Einen Kommentar schreiben:


  • magpie
    antwortet
    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.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X