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

Login und Registrierung mit php und mysql! wie geht das?

Status
Für weitere Antworten geschlossen.

Gimli

Mitglied
jojo ich kenn mich soweit mit php gut aus und mysql kenntnisse hab ich auch schon.;-)
ABER ich habe ein Prob:
Wie mache ich ein passwortgeschützten bereich wo man sich registrieren kann und erst anmelden muss! also wenn ein neuer Benutzer kommt muss er sich registrieren. die Daten werden in einer mysql Datenbank gespeichert und beim nächsten mal muss der user das gespeicherte passwort und den benutzer eingeben damit er reinkommt!

Ich hoffe auf ne gute antwort;-)
 
Werbung:
-Auf der Startseite kann man einmal auf Login und einmal auf Register klicken.
-Bei Register werden gewünschter Benutzername und Passwort aufgenommen.
-Es wird überprüft, ob es den Namen schon gibt, wenn nein, dann wird er eingetragen, ansonsten muss er sich etwas neues ausdenken.
-Der User geht auf die Startseite zurück und klickt auf Login.
-Wenn die Daten korrekt sind, wird eine Session gestartet, womit der User eingeloggt bleibt.

Gruß Corvulus
 
hmm danke! nur wüsste ich gerne wie man den code macht! ich hab hier schon mal den code für die registrierung gemacht! nur fehlt da das mit der namensüberprüfung!
Hier der code:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?php
$host = "mein host";
$user = "mein user";
$pass = "mein passwort";
$database = "db230162307";
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if(isset($_POST['submit'])) {
       if(empty($_POST['name'])) {
              $fehler .= "<li>Der Name fehlt!</li>";
       }
       #######################################################################
       if(empty($_POST['pwd'])) {
              $fehler .= "<li>Das Passwort fehlt!</li>";
       }
       #######################################################################
       if(empty($_POST['code'])) {
              $fehler .= "<li>Der Code fehlt!</li>";
       }
       #######################################################################
       elseif($_POST['code'] == $_POST['codetrue']) {
                   #Garnichts ist!^^#
       }
       #######################################################################
       else {
         $fehler .= "<li>Der Code ist Falsch</li>";
       }
       #######################################################################
       if(empty($fehler)) {
            $query = "INSERT INTO tabelle SET
               name = '".addslashes($_POST['name'])."',
               pwd = '".addslashes($_POST['pwd'])."'";
            $sql = mysql_query($query) or die(mysql_error());
            echo "Danke für deine registrierung";
       }
}
elseif(!isset($_POST['submit'])) 
?>
<h1>Registrierung</h1>
<form method="post">
Name:<br>
<input type="text" name="name"><br><br>
Passwort:<br>
<input type="password" name="pwd"><br><br>
 
<?php
$counter = rand(10000,100500);
$anzahl = strlen($counter);
$counter_grafik = "";
for ($pos = 0; $pos < $anzahl; $pos++) {
  $ziffer = substr($counter, $pos, 1);
  $counter_grafik .= "<img style=\"width:35px; height:50px;\" src=\"bilder/bild/$ziffer.png\">";
}
echo $counter_grafik;
?>
<input type="hidden" value="<?=$counter?>" name="codetrue">
Bitte den linken Zahlencode Eingeben:<i>(Als Spammschutz)</i><br><input type="text" name="code"><br><br>
 
<input type="submit" name="submit" value="Abschicken">
</form>
</body>
</html>
 
Werbung:
Du liest normal alle Daten der Tabelle mit eienr while-Schleife aus. In der Schleife prüfst du jedes mal, ob der vorhandene Name gleich dem neuen Namen ist, wenn ja setzt du eine willkürliche Variabele auf 1.
Außerhalb der Schleife dann die abfrage ob diese Variabele auf 1 oder 0/!isset/emty ist. Damit hast du dann auch deine Überprüfung schon.

Gruß Corvulus
 
SO?

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <?php
$host = "geheim";
$user = "geheim";
$pass = "geheim";
$database = "geheim";
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
?> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php
if(isset($_POST['submit'])) {
       if(empty($_POST['name'])) {
              $fehler .= "<li>Der Name fehlt!</li>";
       }
    #######################################################################
    while ($ds = mysql_fetch_object(mysql_query("SELECT name FROM reg") or die(mysql_error()))) {
                              $nick = $ds ->name;
                              if($_POST['name'] == $nick) {
                                     $fehler .= "<li>Dieser Name ist leider schon vergeben!</li>";
                                     var_dump($nick);
                              }
  }
  unset($nick);
       #######################################################################
       if(empty($_POST['pwd'])) {
              $fehler .= "<li>Das Passwort fehlt!</li>";
       }
       #######################################################################
       if(empty($_POST['code'])) {
              $fehler .= "<li>Der Code fehlt!</li>";
       }
       #######################################################################
       elseif($_POST['code'] == $_POST['codetrue']) {
                   #Garnichts ist!^^#
       }
       #######################################################################
       else {
         $fehler .= "<li>Der Code ist Falsch</li>";
       }
    #######################################################################
    if(empty($fehler)) {
            $query = "INSERT INTO reg SET
               name = '".addslashes($_POST['name'])."',
               pwd = '".addslashes($_POST['pwd'])."'";
            $sql = mysql_query($query) or die(mysql_error());
            echo "Danke für deine registrierung";
       }
    else echo "<h2>ERROR:<ul>".$fehler."</ul></h2>";
}
elseif(!isset($_POST['submit'])) {#Garnichts ist#
}
?> <h1>Registrierung</h1> <form method="post">
Name:<br> <input type="text" name="name"><br><br>
Passwort:<br> <input type="password" name="pwd"><br><br> <?php
$counter = rand(10000,100500);
$anzahl = strlen($counter);
$counter_grafik = "";
for ($pos = 0; $pos < $anzahl; $pos++) {
  $ziffer = substr($counter, $pos, 1);
  $counter_grafik .= "<img style=\"width:35px; height:50px;\" src=\"bilder/bild/$ziffer.png\">";
}
echo $counter_grafik;
?> <input type="hidden" value="<?=$counter?>" name="codetrue">
Bitte den linken Zahlencode Eingeben:<i>(Als Spammschutz)</i><br><input type="text" name="code"><br><br> <input type="submit" name="submit" value="Abschicken"> </form> </body> </html>


FUNKTIONIERT IWIE NET!!! :-(:-(
 
hab jetzt zwar deinen Code nicht gelesen, aber grundsätzlich :
Code:
$sql = "SELECT *
          FROM userdaten
          WHERE username = '{$_POST['regusername']}'
          LIMIT 1";
$result = mysql_query($sql) OR die(mysql_error());
if ( mysql_num_rows($result) == 0 )
{
    // Username nicht vorhanden
} else {
   // Username bereits vorhanden => neuen aussuchen
}
würds ca. so machen.
$_POST['...'] natürlich noch sichern
mit z.b.
mysql_real_escape_string() &
htmlentities()

mfg
 
Werbung:
Also ich hab hier nochmal den code! Jetzt müsste es eigentlich gehen:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <?php
$host = "geheim";
$user = "geheim";
$pass = "geheim";
$database = "geheim";
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
?> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php
if(isset($_POST['submit'])) {
       if(empty($_POST['name'])) {
              $fehler .= "<li>Der Name fehlt!</li>";
       }
    #######################################################################
       if(empty($_POST['pwd'])) {
              $fehler .= "<li>Das Passwort fehlt!</li>";
       }
       #######################################################################
       if(empty($_POST['code'])) {
              $fehler .= "<li>Der Code fehlt!</li>";
       }
       #######################################################################
       elseif($_POST['code'] == $_POST['codetrue']) {
                   #Garnichts ist!^^#
       }
       #######################################################################
       else {
         $fehler .= "<li>Der Code ist Falsch</li>";
       }
    #######################################################################
    $name = $_POST['name'];
    $sql = "SELECT *
          FROM reg
          WHERE name = '$name'
          LIMIT 1";
    $result = mysql_query($sql) OR die(mysql_error());
    if ( mysql_num_rows($result) == 0 ) {
               echo "Benutzername verfügbar!";
    } else {
       $fehler .= "<li>Der Benutzername ist schon vergeben!</li>";
    }
    
    
    if(empty($fehler)) {
            $query = "INSERT INTO reg SET
               name = '".addslashes($_POST['name'])."',
               pwd = '".addslashes($_POST['pwd'])."'";
            $sql = mysql_query($query) or die(mysql_error());
            echo "Danke für deine registrierung";
       }
    else echo "<h2>ERROR:<ul>".$fehler."</ul></h2>";
}
elseif(!isset($_POST['submit'])) {#Garnichts ist#
}
?> <h1>Registrierung</h1> <form method="post">
Name:<br> <input type="text" name="name"><br><br>
Passwort:<br> <input type="password" name="pwd"><br><br> <?php
$counter = rand(10000,100500);
$anzahl = strlen($counter);
$counter_grafik = "";
for ($pos = 0; $pos < $anzahl; $pos++) {
  $ziffer = substr($counter, $pos, 1);
  $counter_grafik .= "<img style=\"width:35px; height:50px;\" src=\"bilder/bild/$ziffer.png\">";
}
echo $counter_grafik;
?> <input type="hidden" value="<?=$counter?>" name="codetrue">
Bitte den linken Zahlencode Eingeben:<i>(Als Spammschutz)</i><br><input type="text" name="code"><br><br> <input type="submit" name="submit" value="Abschicken"> </form> </body> </html>
 
PHP:
<?php
	include('sqlverbindung.php'); //mysql_connect und mysql_db_select muessen hier drinne stehen.
	$wunschname = $_POST['wunschname'];//Wunschname wird aus dem Formular gelesen.
	$x = 0; //Beliebige Variabele auf 0 setzen.(Optional)
	$sql = mysql_query("SELECT * FROM datenbank");
	while($data = mysql_fetch_object($sql)) { //Die uebliche Abfrage, alles eimal durch.
		$name = $data->name; //$name bekommt den Wert aus der Tabelle.
		if($wunschname == $name) $x = 1; //Ueberpruefung, ob die Namen identisch sind.
	}
	if($x != 1) echo "Der Benutzername ist noch zu haben. :-)"; //Hier koennen natuerlcih auch Daten uebergeben werden.
?>

Wenn man die Variabelen und die Namen von MySQL anpasst, dann soltle es klapepn.

Gruß Corvulus
 
Zuletzt bearbeitet:
INSERT Befehl funktioniert folgendermaßen :
Code:
[B][FONT=Arial]Syntax für das Einfügen (INSERT) einer Zeile[/FONT][/B]


 [B][FONT=Courier New]insert[/FONT][/B][FONT=Courier New] into <tabelle> (<spalte_1>,..,<spalte_n>) 
values (<wert_1>,..,<wert_n>);[/FONT]
Oracle SQL Tutorial: Insert-Befehl

Beispiel :
Code:
INSERT INTO news
    (Inhalt,
     Name,
     Poster)
VALUES
    ('Ein verdammt toller text',
     'jürgen',
     '4');
PHP:
elseif($_POST['code'] == $_POST['codetrue']) {
würd ich durch

Beispiel von QuakeNet.

PHP:
elseif($_POST['code'] != $_POST['codetrue']) {
ersetzen, dann kannst du dir die leere zeile sparen.

PHP:
elseif(!isset($_POST['submit'])) {#Garnichts ist#
}
kannst du wegslassen, du brauchst nicht unbedingt eine Gegenbedingung.

mfg
 
Werbung:
Komisch

was mach ich falsch? hier mal alle scripte:

reg.php(funktioniert)
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<?php
$host = "geheim.geheim.geheim";
$user = "geheim";
$pass = "geheim";
$database = "geheim";
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
?> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> 
<?php
if(isset($_POST['submit'])) {
       if(empty($_POST['name'])) {
              $fehler .= "<li>Der Name fehlt!</li>";
       }
    #######################################################################
       if(empty($_POST['pwd'])) {
              $fehler .= "<li>Das Passwort fehlt!</li>";
       }
       #######################################################################
       if(empty($_POST['code'])) {
              $fehler .= "<li>Der Code fehlt!</li>";
       }
       #######################################################################
       elseif($_POST['code'] == $_POST['codetrue']) {
                   #Garnichts ist!^^#
       }
       #######################################################################
       else {
         $fehler .= "<li>Der Code ist Falsch</li>";
       }
    #######################################################################
    $wunschname = $_POST['name'];//Wunschname wird aus dem Formular gelesen.
$x = 0; //Beliebige Variabele auf 0 setzen.(Optional)
$sql = mysql_query("SELECT * FROM reg");
while($data = mysql_fetch_object($sql)) { //Die uebliche Abfrage, alles eimal durch.
$name = $data->name; //$name bekommt den Wert aus der Tabelle.
if($wunschname == $name) {
      $x = 1;
      $fehler .= "<li>Der Benutzername ist schon vergeben!</li>";
}
}
if($x != 1) echo "Der Benutzername ist noch zu haben. "; //Hier koennen natuerlcih auch Daten uebergeben werden.
 
 
 
    if(empty($fehler)) {
            $query = "INSERT INTO reg SET
               name = '".$_POST['name']."',
               pwd = '".$_POST['pwd']."'";
            $sql = mysql_query($query) or die(mysql_error());
            echo "Danke für deine registrierung";
       }
    else echo "<h2>ERROR:<ul>".$fehler."</ul></h2>";
}
elseif(!isset($_POST['submit'])) {#Garnichts ist#
}
?> <h1>Registrierung</h1> <form method="post">
Name:<br> <input type="text" name="name"><br><br>
Passwort:<br> <input type="password" name="pwd"><br><br> <?php
$counter = rand(10000,100500);
$anzahl = strlen($counter);
$counter_grafik = "";
for ($pos = 0; $pos < $anzahl; $pos++) {
  $ziffer = substr($counter, $pos, 1);
  $counter_grafik .= "<img style=\"width:35px; height:50px;\" src=\"bilder/bild/$ziffer.png\">";
}
echo $counter_grafik;
?> <input type="hidden" value="<?=$counter?>" name="codetrue">
Bitte den linken Zahlencode Eingeben:<i>(Als Spammschutz)</i><br><input type="text" name="code"><br><br> <input type="submit" name="submit" value="Abschicken"> </form> </body> </html>


Dann die seite login.php(hat einen bug):
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?php
session_start();
$host = "geheim.geheim.geheim";
$user = "geheim";
$pass = "geheim";
$database = "geheim";
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$name = $_POST['name'];
if(isset($_POST['log'])) {
       if(empty($name)) $fehler .= "<li>Kein Name eingegtragen</li>";
       if(empty($_POST['pw'])) $fehler .= "<li>Kein Passwort eingetragen</li>";
       if(empty($fehler)) {
            $verbindung = mysql_fetch_object(mysql_query("SELECT * FROM tabelle WHERE name = '$name'"));
            $pw = $verbindung->pwd;
            if($pw == $_post['pw']) {
 
                  $_SESSION['login'] = 1;
                  setcookie("logged", "1", time()+2592000);
                  echo "Login abgeschlossen";
            } else echo "Login fehlgeschlagen!";
       } elseif(isset($fehler)) echo "ERROR: <ul>".$fehler."</ul>";
}
?>
<h1>Login</h1>
<form method="post">
<fieldset><legend>Logindaten:</legend>
Name:<br>
<input type="text" name="name"><br><br>
Passwort:<br>
<input type="password" name="pw"><br><br>
</fieldset>
<fieldset><legend>Login:</legend>
<input type="submit" name="log" value="Login">
</fieldset>
</form>
</body>
</html>


Und nun die letzte seite seite.php(weiß nicht ob das richtig ist):

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?php
if($_SESSION['login'] == 1 or $_COOKIE['logged'] == 1) {
              echo "ok";
}
if(empty($_SESSION['login']) && !isset($_COOKIE['logged'])) {
               echo "<script type=\"text/javascript\">location.href=\"http://www.malegi.de/login.php\";document.write(\"Weiterleitung\")</script>";
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Testseite  MUHAHAHAHAHA
</body>
</html>
 
könntest du die fehler meldung bitte dazuschreiben, oder woran du erkennst dass es einen bug hat.
Nach der Reg.php steht der Datensatz auch in der Datenbank ? ( phpMyAdmin => überprüfen )
Hab noch nie so einen INSERT befehl gesehen, so sind normal UPDATE befehle aufgebaut.
Sollte der datensatz nicht in der DB stehen probiers mal mit meinem oben gepostetem syntax.
 
reg.php funktioniert! Es wird in die db geschrieben und so weiter!

aber login.php funktioniert nicht! ich kann einen namen angeben und so und da steht login abgeschlossen.
 
Werbung:
und wo ist das problem, wenn der login abgschelossen ist ?
Funktioniert die testseite nicht ?
setcookie musst du vor der ersten Ausgabe an den Browser machen, also es darf kein echo oder html code ( der ausgegeben wird ) davor sehen. sonst funzts net, weils im header mit übergeben wird.
 
Ne man kann irgendein pw angeben und es steht da login abgeschlossen! UND es ist kein cookie gesetzt
:cry::cry::cry:
 
Zuletzt bearbeitet:
Werbung:
das mit dem cookie hab ich dir ja gesagt, ihrgenwie kommts mir so vor also würdest du meine Beiträge nicht lesen bzw. nur die ersten paar Wörter.
mach halt mal ein print_r($_POST);
und ein print_r($verbindung); dann siehst du was in den arrays drinnen steht
 
doch ich lese deine einträge! ich hab es auch verändert aber guck bitte mal in den code ob du da nicht einen fehler entdeckst:

PHP:
<?php
session_start();
$host = "geheim.geheim.geheim";
$user = "geheim";
$pass = "geheim";
$database = "geheim";
$dz = mysql_connect($host, $user, $pass);
mysql_select_db($database, $dz);
$name = $_POST['name'];
if(isset($_POST['log'])) {
       if(empty($name)) $fehler .= "<li>Kein Name eingegtragen</li>";
       if(empty($_POST['pw'])) $fehler .= "<li>Kein Passwort eingetragen</li>";
       if(empty($fehler)) {
            $verbindung = mysql_fetch_object(mysql_query("SELECT * FROM tabelle WHERE name = '$name'"));
            $pw = $verbindung->pwd;
            if($pw == $_post['pw']) {
 
                  $_SESSION['login'] = 1;
                  setcookie("logged", "1", time()+2592000);
                  $variable = "Login abgeschlossen!";
            } else $variable = "Login fehlgeschlagen!";
       } elseif(isset($fehler)) $variable = "ERROR: <ul>".$fehler."</ul>";
}
?>
(Dieser code steht ganz am anfang der datei)
 
Zuletzt bearbeitet:
Code seh ich auf den ersten blick kein prob.

immernoch problem : egal welches passwort immer eingelogged ?

hast du mal ein print_r gemacht, was steht drin ?

was ist $_POST['log'] ?
 
Zuletzt bearbeitet:
Werbung:
ah ok, hatte auf die schnelle nur
<input type="submit" name="submit" value="Abschicken">
von der registrierung gesehen.

was ist mit meinen anderen fragen ?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben