• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Registrieren funktioniert nicht

TerraX

Mitglied
Hey :)
Ich fange gerade erst mit php an und weis deshalb nicht weiter.. :)

Zum lernen habe ich das Login+Regiestrieren Tutorial von Htmlworl auf Youtube gemacht doch es will nciht funtionieren.. :)

Login:
PHP Tutorial: LOGIN per PHP SESSION erstellen | deutsch - YouTube
Regiestrieren:
PHP Tutorial: Login mit Registrierung| MySQL | deutsch - YouTube
(Das komplette Script kann man dort auch Downloaden aber da kommt der gleiche Fehler..)

Es wird dieser Fehler angezeigt:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\php\register.php on line 38

Das Script in dem der Fehler kommt ist der:
PHP:
<html>
</head>
    <title>Mein Bereich - Registrieren</title>
</head>
<body>
<h3>Registrieren</h3>
<?php
if(!isset($_GET["page"])) {
?>
    <form action="register.php?page=2" method="post">
    Username:<input type="text" name="user" /><br />
    Passwort:<input type="password" name="pw" /><br />
    Passwort wiedeholen:<input type="password" name="pw2" /><br />
    <input type="submit" value="Senden" />
    </form>
<?php
}
?>
<?php
if(isset($_GET["page"])) {
    if($_GET["page"] == "2") {
    $user = strtolower($_POST["user"]);
    $pw = md5($_POST["pw"]);
    $pw2 = md5($_POST["pw2"]);
    
    if($pw != $pw2) {
        echo "Deine Passwörter stimmen nicht überein. Bitte wiederhole deine Eingabe....<a href=\"register.php\">zurück</a>";
    } else {
            $verbindung = mysql_connect("localhost", "root", "PASSWORTSTEHTHIEREIGENTLICHDRIN!!!")
            or die ("Fehler im System");

            mysql_select_db("admin")
            or die ("Verbidung zur Datenbank war nicht möglich...");
            
            $control = 0;        
            $abfrage = "SELECT user FROM login WHERE user = '$user'";
            $ergebnis = mysql_query($abfrage);
            while($row = mysql_fetch_object($ergebnis))
                {
                    $control++;
                }    
            if($control != 0) {
                echo "Username schon vergeben. Bitte verwende einen anderen Usernamen....<a href=\"register.php\">zurück</a>";
            } else {
            $eintrag = "INSERT INTO login
            (user, passwort)

            VALUES
            ('$user', '$pw')";

            $eintragen = mysql_query($eintrag);
            
            if($eintragen == true) {
                echo "Vielen Dank. Du hast dich nun registriert...<a href=\"index.php\">Jetzt anmelden</a>";
            } else {
                echo "Fehler im System. Bitte versuche es später noch einmal...";
            }
            mysql_close($verbindung);
            }
    }
    }
}
?>
</body>
</html>

Weis jemand warum?? :)
Falls mir noch jemand dashier sagen könnte wärs hammer:
Wie macht man das das die Regiestrrierung per Email bestätigt wird?

Mfg TerraX:mrgreen:
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
PHP:
<?php $abfrage = "SELECT user FROM login WHERE user = '$user'"; ?>

Das da richtig auszeichnen.


Und was folgender Block soll, ist mir nicht ganz klar.

PHP:
<?php
<?php
if(!isset($_GET["page"])) {
?>
    <form action="register.php?page=2" method="post">
    Username:<input type="text" name="user" /><br />
    Passwort:<input type="password" name="pw" /><br />
    Passwort wiedeholen:<input type="password" name="pw2" /><br />
    <input type="submit" value="Senden" />
    </form>
<?php
}
?>
?>

Nils aka XraYSoLo
 
Was sagt mysql_error().
Die MySQL-Extension ist übrigens ab PHP5.5 veraltet und wird in PHP5.6 oder PHP6 komplett abgeschafft. Daher solltest du auf PDO oder mysqli umsteigen. Außerdem ist das Script SQL-Injection anfällig.
 
Werbung:
PHP:
<?php $abfrage = "SELECT user FROM login WHERE user = '$user'"; ?>

Das da richtig auszeichnen.


Und was folgender Block soll, ist mir nicht ganz klar.

PHP:
<?php
<?php
if(!isset($_GET["page"])) {
?>
    <form action="register.php?page=2" method="post">
    Username:<input type="text" name="user" /><br />
    Passwort:<input type="password" name="pw" /><br />
    Passwort wiedeholen:<input type="password" name="pw2" /><br />
    <input type="submit" value="Senden" />
    </form>
<?php
}
?>
?>

Nils aka XraYSoLo

Danke aber hat nicht funktioniert bis auf einen weiteren Error :)
Das ist das eingabe Formular zum regiestrieren?! :D

@Asterixus:

Kannst du mir vll erklären wie ich das einbaue und was das genau ist? :)
 
Diese verschwungenen und unterbrochenen Funktionsklammern. Das Formular wird ohne hin immer angezeigt, wenn dus auszeichnest. Ich verstehe diese Klammerei nicht.

--> Das meinte Asterixus

Nils aka XraYSoLo
 
Und wie baue ich das jetzt in das Script ein?? Danke das du mir den Link geschickt hast aber ich werde daraus nicht schlau :|

Weist du wie ich das Script überhaupt zum laufen bekomme?? Liegt der Fehler an Mysql das ich Mysqli nehmen muss?
 
Werbung:
Das, was ich geschrieben habe, bezog sich auf die Funktionalität.
Was Asterixus geschrieben hat, bezog sich auf die Sicherheit.

Die Wahl liegt bei dir, was du machen möchtest.

Nils aka XraYSoLo
 
Werbung:
Genau deswegen habe ich doch den Thread hier gemacht weil ich nicht weis was falsch ist :D Und wissen wie ich Mysqli hier einbaue weis ich auch nicht.. :(
Und wie gesagt lerne ich gerade erst. Wenn ich das selbstständig hinbekommen hätte hätte ich ja nicht hier gefragt ;)
 
Ich sagte ja bereits, dieses Statement ist falsch.

PHP:
<?php $abfrage = "SELECT user FROM login WHERE user = '$user'"; ?>

Lass es dir mal mit var_dump() ausgeben und sieh nach, was da geändert werden muss (Syntax einer Sprache ist absolut grundlegend). Weiterhin musst du dich mit den mysqli-Funktionen eben auseinandersetzen und vertraut machen; und lesen, deswegen der Link. Das ganze wirds auch sicherlich irgendwo auf Deutsch geben.

Nils aka XraYSoLo
 
Also er gibt dann den Nutzername denn man eingegeben hat aus.. Ich weis aber nicht wie das mir weiterhelfen soll..
Wenn ich diesen Statement ändere wird garnichtsmehr bis auf eine Fehlermeldung angezeigt.
 
Werbung:
PHP:
<?php
if(isset($_GET["page"]) && $_GET["page"] == "2") 
{
    $pw = md5($_POST["pw"]);
    $pw2 = md5($_POST["pw2"]);
    
    if($pw != $pw2) 
    {
        echo "Deine Passwörter stimmen nicht überein. Bitte wiederhole deine Eingabe....<a href=\"register.php\">zurück</a>";
    } 
    else 
    {
       $verbindung = mysql_connect("localhost", "root", "PASSWORTSTEHTHIEREIGENTLICHDRIN!!!")
         or die ("Fehler im System");

       mysql_select_db("admin")
         or die ("Verbidung zur Datenbank war nicht möglich...");
            
       $user = mysql_real_escape_string(strtolower($_POST["user"]));
                  
       $abfrage = "SELECT 
                      `user` 
                    FROM 
                      `login` 
                    WHERE 
                      `user` = '$user'";
                      
       $ergebnis = mysql_query($abfrage)
          or die ("MySQL-Error: " . mysql_error());
          
       if (mysql_num_rows($ergebnis))
       {
          echo "Username schon vergeben. Bitte verwende einen anderen Usernamen....<a href=\"register.php\">zurück</a>";
       } 
       else 
       {
          $eintrag = "INSERT 
                        INTO 
                          `login`
                          (`user`, `passwort`)
                        VALUES
                          ('$user', '$pw')";

           mysql_query($eintrag)
              or die ("MySQL-Error: " . mysql_error());

           echo "Vielen Dank. Du hast dich nun registriert...<a href=\"index.php\">Jetzt anmelden</a>";

           mysql_close($verbindung);
      }
    }
}
?>
 
DANKE ;Jump
Das hat mir jetzt schonmal weitergeholfen :D
Kannst du mir auch sagen was genau du jetzt geändert hast? :)

Eigentlich sollte jetzt ja alles klappen aber.. -.-
MySQL-Error: Table'admin.login' doesnt exist
Ich weis aber nicht warum da eigentlich eine Tabelle besteht die admin heist und da ich eine vermutung hatte (die aber nciht stimmte) habe ich die gleiche Tabelle ncohmal gemacht nur halt admin.login genannt aber es hat sich nix geändert. Woran kann das jetzt liegen? :?

Und srry das ich bei jedem Problem frage aber jeder fängt mal an ;)
 
Werbung:
Ich sage immer noch: garantiert nicht! Wenn MySQL dir sagt, dass in der Datenbank admin keine Tabelle user vorhanden ist, dann ist das auch so.

PS: auf dem Bild kann man nichts erkennen.
 
Werbung:
Für mich sieht das so aus, als wenn es eine Datenbank admin gibt, darin eine Tabelle admin und darin eine Spalte user. :(
 
Ich glaube ich verstehe jetzt was du mir sagen willst :)

Ich brauche die Datenbank "admin" und eine Tabelle "user"??
 
Zurück
Oben