Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP abfrage Mysql (PHP-admin)

Einklappen

Neue Werbung 2019

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

  • PHP abfrage Mysql (PHP-admin)

    Hallo,
    ich möchte ein ganz kleines Login-System schreiben, bzw. erst mal eine Seite, wo man sich registrieren kann. Und zwar möchte ich, dass erst mal überprüft wird, ob schon Daten übergeben wurden. Dann soll meine 2. If-abfrage gucken, ob es den Usernamen schon gibt. Dafür habe ich einfach mal den Usernamen "user" angelegt. Also mein 1. Ziel ist es, eine Fehlermeldung "Der User ist bereits vergeben" zu bekommen, wenn ich "user" eingebe.

    Meine Datenbank heißt "phplernen", der Tabellenname ist "login".
    Was mache ich falsch?

    Der Code:
    PHP-Code:
    <!DOCTYPE html>

    <head>
        
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title> Registrieren </title>
    </head>

    <body>
    <h3> Registrieren </h3>

        <?php
        $db_link 
    mysqli_connect("localhost""login-admin1""Hallo99""phplernen")
        
    ?> 
    <?php
            
                
                    
        
                
                
                $name 
    = isset($_POST["user"]);
                
    $pword = isset($_POST["pw"]);
                
    $rpword = isset($_POST["pw2"]);
                
                
                
                
                if ( isset(
    $_POST["user"]) && isset($_POST["pw"]) && isset($_POST["pw2"])) {
                    
                    
    $abfrage "SELECT username FROM login WHERE username" == [$name];
                    
    $ergebnis mysql_query($abfrage);
            
                
                    if(
    $ergebnis == false) {
                        echo 
    "LALA";
                
                    
                        if (
    $pword == $rpword) {
                    
                
                        }else {
                            echo 
    "Die Passwörter stimmen nicht überein!";    
                        }    
                
                    }else {
                        echo 
    "Nutzername ist bereits vergeben";
                    }
                
                }else {
                    echo 
    "Tragen Sie bitte Ihre Daten ein:";
                
                
                
    ?>
                    <p></p>
                <?php    
                
    }
                
    ?>
                    
    <form method="post" action="register.php">
        User: <input type="text" name="user" /> <br> <br>
        Passwort: <input type="password" name="pw" /><br><br>
        Passwort wiederholen: <input type="password" name="pw2" /><br><br>
        <input type="submit" name="Registrieren" />
    </form>
    </body>
    </html>


  • #2
    Und bitte schickt mir jetzt nicht nur Links... Ich war schon auch vielen Seiten und habe versucht das zu verstehen. Entweder ist es nicht richtig erklärt, oder ich bin heute morgen zu blöd, um das zu verstehen^^

    Kommentar


    • #3
      Soweit ich das sehe steckt in deiner Variable $name nur ein boolescher Wert weil isset() einen Bool zurück gibt.

      Kommentar


      • #4
        Zitat von Binganzokay Beitrag anzeigen
        Soweit ich das sehe steckt in deiner Variable $name nur ein boolescher Wert weil isset() einen Bool zurück gibt.
        Wenn ich das isset weg lasse, bekomme ich immer einen "Undefined index" fehler

        Kommentar


        • #5
          Moin.

          Du baust die Verbindung zu MySQL über die mysqli_-API auf, schonmal gut. Aber dann nutzt du mysql_query um deine Abfrage auszuführen.
          PHP-Code:
          $ergebnis mysql_query($abfrage);  // falsch, sollte eher so aussehen:
          $ergebnis mysqli_query($db_link $abfrage); 
          Der nächste Fehler, du fragst in deinem if ab, ob der Rückgabe wert von ..._query() false ist. Sowohl mysqli_- als auch mysql_query liefern nur false zurück, wenn deine Query fehlerhaft war und MySQL einen Fehler zurückgibt. Du musst dein Ergebnis fetchen oder dir die Anzahl der gefundenen Zeilen zurückgeben lassen um feststellen zu können ob es den Namen schon gibt.

          Anschließend hast du ein paar Else-Dinger, keine Ahnung.. glaub du hast da auch irgendwo eine schließende Klammer von ersten if vergessen oder falsch gesetzt.


          Deine IF's kannst du auch besser strukturieren. Z.B.
          PHP-Code:
          if ( !isset($_POST["user"]) || !isset($_POST["pw"]) || !isset($_POST["pw2"])) {
              echo 
          "Tragen Sie bitte Ihre Daten ein:";
              exit;
          }
          if (
          $pword !== $rpword) {
              echo 
          "Die Passwörter stimmen nicht überein!";
              exit;
          }
          $name mysqli_real_escape_string($db_link$_POST['user']);
          $abfrage "SELECT username FROM login WHERE username = '$name'";
          $ergebnis mysqli_query($db_link$abfrage); 
          Stichwort Wächterklauseln. Anstatt zu verschachteln, werden unabhängige Abfragen die zum Beenden des Scripts bzw. Programmablaufs führen sollen separat ausgeführt um die Lesbarkeit zu verbessern.
          Relax, you're doing fine.
          RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

          Kommentar


          • #6
            Zuvor bitte erstmal die Syntaxfehler beseitigen.
            Durch Aktivieren des Error-Reportings, sprich Einfügen von

            PHP-Code:
            ini_set('display_errors''On');
            error_reporting(-1);    //max. aufgedreht 
            am Anfang des PHP-Scriptes solltest du Hinweise auf Fehler und Unzulänglichkeiten erhalten.

            Du möchtst keine Links?
            Bekommst trotzdem einen. Denn der Artikel ist echt gut und es ist wichtig das du das dort geschriebene verstehst,
            bevor wir hier den Erklärbär spielen.
            Affenformular (Standardverfahren)

            LG jspit
            PHP-Klassen auf github

            Kommentar


            • #7
              Hi,

              zuallererst solltest du bei mysqli bleiben! Danach verwendest du nämlich mysql_query usw. Dann rück deinen code bitte vernünftig ein. Schlußendlich solltest du nach deiner Abfrage einfach mit

              PHP-Code:
              if(mysqli_num_rows($ergebnis) == 1){
               echo 
              "vorhanden";
              }else{
               echo 
              "nicht vorhanden";

              umsetzen bspw.

              mfg wolf29

              @Binganzokay: isset() prüft ob eine Variable existiert oder NULL ist: http://php.net/manual/de/function.isset.php
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Zitat von wolf29 Beitrag anzeigen
                @Binganzokay: isset() prüft ob eine Variable existiert oder NULL ist: http://php.net/manual/de/function.isset.php
                Ja und liefert einen bool zurück.
                Ich wollte darauf hinaus, dass der TE seine $name Variable nur mit einem bool belegt. Der Inhalt aus $_POST['name'] wird da nicht drin stehen, dementsprechend hat er keinen Namen nach dem er in der Datenbank suchen soll. Oder übersehe ich gerade was?

                Edit:

                bzw. er müsste dann halt einfach $_POST['name'] direkt nehmen. Das entsprechende Escaping dazu wurde ja bereits erwähnt.

                Kommentar


                • #9
                  Ich bin dankbar für alle Antworten und verstehe auch das meiste, aber es funktioniert immer noch nicht^^
                  Auch
                  PHP-Code:
                  ini_set('display_errors''On');
                  error_reporting(-1);    //max. aufgedreht 
                  behebt nicht die Fehlermeldungen

                  Kommentar


                  • #10
                    Es sorgt nur dafür, dass die Fehlermeldungen angezeigt werden.
                    Lies dir die Posts nochmal sorgfältig durch, es wurde alles genannt was du für dein Vorhaben brauchst.

                    +
                    aber es funktioniert immer noch nicht^^
                    Das sagt uns nichts.
                    Wenn du noch Hilfe brauchst, poste mindestens die Fehlermeldungen und den aktuellen Code. Aber tu es jetzt nicht, wie gesagt, du hast hier alles was du brauchst.
                    Relax, you're doing fine.
                    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                    Kommentar


                    • #11
                      @Binganzokay

                      Ja und liefert einen bool zurück.
                      Ich wollte darauf hinaus, dass der TE seine $name Variable nur mit einem bool belegt. Der Inhalt aus $_POST['name'] wird da nicht drin stehen, dementsprechend hat er keinen Namen nach dem er in der Datenbank suchen soll. Oder übersehe ich gerade was?
                      Ah nein. Hab Dich falsch verstanden.

                      mfg Wolf29
                      while (!asleep()) sheep++;

                      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                      Kommentar

                      Lädt...
                      X