kostenloser Webspace werbefrei: lima-city


Registrieren & Einloggen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    w******e

    Hy.

    Ich habe ein Problem.

    Ich suche ein Registrierungs-Script, das folgendes kann:

    1. Der User gibt Nickname und PW sowie MAIL ein.
    2. Das Script versendet eine Bestätigungsmail, in der ein zufällig generierter Bestätigungscode steht.
    3. der User will sich einloggen, und muss während dem 1. Login den Code eingeben.
    4. Anschließend kann der User sich immer normal einloggen
    #

    wie kann ich das Machen, dass es bei Lima-city funzt?

    hab im web nix richtiges gefunden.

    Beitrag zuletzt geändert: 9.12.2009 10:00:37 von wireware
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. eigentlich ganz einfach,
    du erstellst erst mal eine registrierungsdatei wo du das formular einfügst
    <form action="ausführungsdatei" method="post">
    input -->name
    input --> pass
    input -->email
    </form>

    in der ausführungsdatei frägst du dann erst mal ab, ob alles ausgefüllt wurde und ob die email auch eine email sein kann.

    wen das passt,
    schickst du die email ab. den "zufallscode" erstellst du meinetwegen mit >>md5(time())<< das erzeugt einen md5-hash der aktuellen uhrzeit.
    den selbigen hash speicherst du in deiner datenbank ab.
    die datenbank sollte dann bestehen aus >>user|passwort|email|zufallscode|bestätigt<<

    beim login wird als ersten überprüft ob >>bestätigt<< den wert "ok" hat. wen ja normaler login, wen nein wieder ein formular wo der hash aus der email eingegeben wird.
    bei absenden wird überprüft ob er identisch mit dem in der tabelle ist. sollte dies zutreffen wird bestätigt auf "ok" gesetzt und wen nicht wird z.b. ein formular erzeugt, welches einen neuen hash zusendet oder die email-adresse verändert ...

    hoffe da kommt man mit ^^
  4. Autor dieses Themas

    w******e

    losebettler1 schrieb:

    hoffe da kommt man mit ^^


    leider nicht.
    kannst du mir nen Fertigen Code geben?
  5. Arbeitest du mit txt-Dateien oder mit MySQL ??
    Ich hab mir was für txt-Dateien gebastelt was super klappt und trotzdem recht sicher ist...

    Ah und nochwas:
    Wenn ich bei dir auf Stammuser werden klicke (hat ne Weile gedauert bis ich gemerkt habe, dass das Bild der Link ist und nicht der Tect. Das solltest du ändern, da dass nicht gerade sehr benutzerfreundlich ist) dann kommt eine Seite mit folgendem Quelltext:

    $nick = $HTTP_POST_VARS["nick"];
    $email = $HTTP_POST_VARS["email"];
    $name = $HTTP_POST_VARS["name"];
    $pass1 = $HTTP_POST_VARS["pass1"];
    $pass2 = $HTTP_POST_VARS["pass2"];
    
    
    echo "
    <p></p>
    <table border=0 CELLPADDING=2>
    <form method=\"post\" action=\"new_user.php\">
    <tr><td>Nickname:</td><td> <input type=\"text\" name=\"nick\" value=\"$nick\" size=\"20\" maxlength=\"25\"> (Min. 3, max. 25 Zeichen)</td></tr>
    <tr><td>E-Mail:</td><td><input type=\"text\" name=\"email\" value=\"$email\" size=\"20\"></td></tr>
    <tr><td>Passwort:</td><td><input type=\"password\" name=\"pass1\" value=\"\" size=\"20\"> (Min. 6 Zeichen)</td>
    <tr><td>Best&auml;tigung:</td><td><input type=\"password\" name=\"pass2\" value=\"\" size=\"20\"></td></tr>
    <tr><td>Richtiger Name:</td><td><input type=\"text\" name=\"name\" value=\"$name\" size=\"20\"></td>
    <tr><td colspan=2><div align=right><input type=\"submit\" value=\"Anmelden!\" Size=\"20\"></div></td></tr>
    </form></table><p></p> ";
    
    echo "<html><head><title>Anmeldungsbest&auml;tigung</title></head><body>";
    
    
    $nick = $HTTP_POST_VARS["nick"];
    $email = $HTTP_POST_VARS["email"];
    $pass1 = $HTTP_POST_VARS["pass1"];
    $pass2 = $HTTP_POST_VARS["pass2"];
    $name = $HTTP_POST_VARS["name"];
    
    //Zunächst werden die Daten des Formulars "aufgefangen" und als Variable registriert.
    
    
    //Nun wird geprüft, ob der Username bereits registriert ist. Dazu wird in der Datenbank gesucht.
    
    include("connect_db.php");
    //Diese Datei soll den Verbindungsaufbau zur Datenbank beinhalten. Dazu gibts entweder andere Tutorials oder eine PN an mich.
    
    
    $result = mysql_query("SELECT UserID FROM member WHERE nickname='$nick' ");
    //Diese Abfrage trifft auf meine Benutzung der Datenbank zu, die ich weiter unten erläutere.
    
    while ($zeile = mysql_fetch_array($result))
    {
    $UserID = $zeile[0];
    }
    
    //Hier wird die UserID (Schlüssel der Datenbank, auto_increment) des Users gesucht, der diesen Nickname hat.
    //Wenn dieser vorhanden ist, dann wird ausgegeben, dass der Nickname vorhanden ist - man muss zurück.
    
    if ($UserID) {
    die ("Nickname ist schon vorhanden. <br>
    <form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
    <input type=\"submit\" value=\"zur&uuml;ck\" Size=\"20\"></form>
    ");
    }
    
    //Dies ist ein unsichtbares Formular, welches den echten Namen und die E-Mail enthält.
    //Diese werden im ersten Forumlar wieder ausgegeben.
    //Der Nickname ist vergeben, also muss dieser nicht übermittelt werden. 
    //Passwörter übermittle ich generell nicht gerne häufiger.
    
    
    
    
    
    
    // Jetzt wird geprüft, ob der User überhaupt einen Nickname eingegeben hat:
    
    elseif (!$nick) {
    echo "Kein Nickname eingegeben!";
    
    echo "<form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
    <input type=\"submit\" value=\"zur&uuml;ck\" Size=\"20\"></form>";
    }
    
    //Erneut werden nur die Daten ans andere Formular gegeben, die sinnvoll sind.
    
    
    // Ist der Nickname lang genug?
    
    $laengenick = strlen($nick); //Zählen der Zeichen des Nicks
    $a = 3; //Untergrenze der Zeichen angeben
    
    elseif ($a > $laengenick) {
    echo "Nickname ist zu kurz!";
    
    echo "<form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
    <input type=\"submit\" value=\"zur&uuml;ck\" Size=\"20\"></form>";
    }
    
    
    
    
    // Wenn diese If-Abfragen "bestanden" sind, ist der Nickname als ok angesehen.
    
    
    /*
    --------------------------------------------------------------------------------
    ********************************************************************************
    --------------------------------------------------------------------------------
    */
    
    
    //Nun kommt die E-Mail an die Reihe.
    
    //Es gibt auch komplizierte Mail-Prüfsysteme, das wäre Stoff für weitere Tutorials.
    //Hier wird sich beschränkt auf die Prüfung, ob überhaupt etwas in das Feld eingegeben wurde.
    //Es könnte auch einfach "Lima-City" eingegeben werden.
    //Dies könnte durch eine Account-Aktivierung per Mail verhindert werden. (Auch Stoff für ein anderes Tut ;-) )
    
    
    if (!$email) {
    echo "Keine E-Mail-Adresse eingegeben!";
    
    echo "<form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
    <input type=\"submit\" value=\"zur&uuml;ck\" Size=\"20\"></form>";
    
    }
    
    
    
    
    /*
    --------------------------------------------------------------------------------
    ********************************************************************************
    --------------------------------------------------------------------------------
    */
    
    
    // Prüfung des Passworts
    
    
    elseif ($pass1 != $pass2) {
    echo ("Das Passwort und die Best&auml;tigung stimmen nicht &uuml;berein! <br> ");
    
    echo "<form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
    <input type=\"submit\" value=\"Zur&uuml;ck zur Anmeldung\" Size=\"20\"></form>";
    }
    
    //Wenn die Passwörter nicht gleich sind, wird auf die 1. Seite verwiesen.
    
    
    
    
    $laengepass = strlen($pass1); //Zählen der Buchstaben der 1. Passwort-Eingabe
    $b = 6; //minimale Passwort-Länge
    
    
    elseif ($b > $laengepass) {
    echo "Passwort ist zu kurz!";
    
    echo "<form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
    <input type=\"submit\" value=\"Zur&uuml;ck zur Anmeldung\" Size=\"20\"></form>";
    
    }
    
    //Wenn das Passwort lürzer als $b (hier 6) ist, dann ist das Passwort zu kurz. Man muss zurück.
    
    /*
    --------------------------------------------------------------------------------
    ********************************************************************************
    --------------------------------------------------------------------------------
    */
    
    
    //Nun wird noch der richige Name geprüft. Natürlich kann er auch komplett weggelassen werden.
    
    $anzahl1 = substr_count("$name", "1");
    // Es wird gezählt, wie oft die "1" in der Variable $name vorkommt.
    
    
    elseif (0 < $anzahl1) {
    echo "Richtiger Name ist falsch!";
    echo "<form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\">
    <input type=\"submit\" value=\"Zur&uuml;ck zur Anmeldung\" Size=\"20\"></form>";
    }
    
    //Wenn dies mehr als ein Mal ist, kann es kein Name sein - man muss zurück
    //Oder habt ihr schonmal jemanden gesehen, der Peter1 Müller heißt??
    
    
    /*
    --------------------------------------------------------------------------------
    ********************************************************************************
    --------------------------------------------------------------------------------
    */
    
    //Letztendlich, wenn alle Bedingungen erfüllt sind, muss man die Daten nocheinmal bestätigen.
    
    
    
    else{
    echo "Dies sind Ihre angegebenen Daten:<br><br>";
    
    echo "Nickname: $nick <br> Richtiger Name: $name <br> E-Mail: $email <br> Passwort: $pass1 <br><br>";
    echo "<form method=\"post\" action=\"user_into_database.php\">
    <input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\"> 
    <input type=\"hidden\" name=\"pass1\" value=\"$pass1\" size=\"20\"><br>
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
    Ich bin einverstanden und m&ouml;chte mich entg&uuml;ltig anmelden! <input type=\"submit\" value=\"Eintragen\" Size=\"20\"></form>";
    
    echo "<form method=\"post\" action=\"anmeldung.php\">
    <input type=\"hidden\" name=\"nick\" value=\"$nick\" size=\"20\">
    <input type=\"hidden\" name=\"email\" value=\"$email\" size=\"20\"> <br>
    <input type=\"hidden\" name=\"name\" value=\"$name\" size=\"20\"><br>
    Ich m&ouml;chte meine Daten nocheinmal &auml;ndern! <input type=\"submit\" value=\"zur&uuml;ck\" Size=\"20\"></form>";
    
    } 
    
    //Das Passwort wird mitangegeben. Aber nur dieses eine Mal, wenn man es noch ändern will, wird es schon nichtmehr übermittelt.
    
    
    echo "<script src="http://layer.lima-city.de/support_layer.php" type="text/javascript"></script></body></html>";


    Da solltest du nochmal schauen ob das so stimmt ;-)

    MFG

    Beitrag zuletzt geändert: 9.12.2009 15:50:12 von programtools
  6. Nur ein Paar Sachen zur Anmerkung:
    register_long_arrays ist nicht in allen Konfigurationen aktiviert. Man sollte statt $HTTP_POST_VARS unbedingt $_POST nutzen. Weiterhin, wenn man md5(time()) nutzt, ist der Aktivierungscode sehr vorhersehbar. (Man weiß ja die Zeit...) somit wird die Aktivierung umgehbar. Besser ist md5(microtime()) oder nutzung von mt_rand(). Und zu guter Letzt: Aktivierungsmails sind genauso out wie Captchas. Nutze getdnsrr() um den MX-Record zu checken, das sollte reichen.
  7. Autor dieses Themas

    w******e

    Wie Gesagt.
    Es dreht sich um die Funktion "Stamm-User" werden auf meiner HP.
    Ich benutze MySQL.


    Derzeitige Codes:

    Register.PHP
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Stamm User werden</title> 
    </head> 
    
    <body> 
    <?php 
    include('config.php'); 
    
    
    /* Keine Aktion = Registrierungsformular */ 
    if($action=="" or !isset($action)){echo(" 
    <form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
    Benuttzername: <input type=\"txt\" name=\"Benutzername\"><br> 
    Passwort: <input type=\"txt\" name=\"eMailadresse\"><br>  
    <input type=\"submit\" value=\"Registrieren\">  
    </form>");} 
    
    
    /* Registrierungsbestätigung */ 
    elseif($action=='activate'){ 
    @mysql_query("UPDATE `cont_register` WHERE `numm` = $name SET `state` = unactivated") || die($error[1]); // Script-Beendigung bei Fehler 
    echo("Sie wurden erfolgreich angemeldet."); 
    } 
    
    
    /* Wenn Benutzername und eMail gesetzt = Speichern */ 
    if(isset($Benutzername) && isset($eMailadresse)){  
    
     # Datenspeicherung in einer Datenbank:  
     $names_count = count(mysql_fetch_array(mysql_query("SELECT * FROM `cont_register` WHERE `name` = $Benutzername"))); 
     if ($names_count >=1){die("Dieser Benutzername existiert bereits. <a href='".$_SERVER['PHP_SELF']."' target='_self'>Zurück</a>");} // bei Fehler Beendigung des Scripts 
     @mysql_query("INSERT INTO `cont_register` (`numm`, `name`, `mail`, `state`, `rights`) VALUES ('','".mysql_real_escape_string($Benutzername)."', '".mysql_real_escape_string($eMailadresse)."', 'ununactivated', '0')") || die($error[2]); // bei Fehler Beendigung des Scripts 
     echo("Sie wurden erfolgreich registriert, bitte überprüfen Sie nun Ihre eMails!"); 
    
     # Numm des Users ermitteln: 
    $numm_query = mysql_query("SELECT * FROM `cont_reg` WHERE `name` = ".mysql_real_escape_string($Benutzername)." LIMIT 1");  
     $while($row = mysql_fetch_array($numm_query)){$numm = $row['numm'];}  
    
     # Mails senden: 
    $text=" 
    <html> 
     <head> 
      <title>Registrierungsbestätigung</title> 
     </head> 
     <body> 
      Hallo $Benutzername,<br> 
      Sie sind nun ein Registrierter User bei $AdminWebseite .<br> 
      Um die Regsitrierung abzuschließen müssen Sie nurnoch den Aktivierungslink aufrufen:<br> 
      <a href='$link?action=activate&name=$numm' target='_blank'>Registrierung bestätigen</a><br> 
      <br> 
      Vielen Dank und schöne Grüße...<br> 
      <br><br>Admin & Team<br> 
     </body> 
    </html>"; 
     # Header setzen 
    $header  = 'MIME-Version: 1.0' . "\r\n"; 
    $header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $header .= 'To: ' . $Benutzername . '<' . $eMailadresse . '>' . "\r\n"; 
    $header .= 'From: Meine Webseite <admin@seite.de>' . "\r\n"; 
    $header .= 'Cc: ' . "\r\n"; 
    $header .= 'Bcc: ' . "\r\n"; 
    mail($eMailadresse, 'Registrierung auf meiner Webseite', $text, $header); // eMail an Registranten 
    mail($admin_mail, 'Registrierung auf Seite', 'Da hat sich jemand registriert, sein Name ist: '.$Benutzername, $header); // eMail an Admin 
    } 
    ?> 
    </body> 
    </html>


    admin.PHP
    <?php 
    session_start(); 
    session_decode($_SESSION['LoginName']); 
    session_decode($_SESSION['LoginPass']); 
    include('config.php'); 
    ?> 
    <html> 
    <head> 
     <title>Administrationsinterface</title> 
    </head> 
    <body> 
    <?php 
     if($LoginName == $AdminName && $LoginPass == $AdminPass){ 
      // 
      // Verwaltung aufbauen !!! 
      // Aktivierung der Benutzer durch setzen des Status auf activated (in MySQL-Tabelle) 
      // 
     }elseif(!isset($LoginName) or !isset($LoginPass)){ 
      echo('<form action="'.$_SERVER['PHP_SELF'].'" method="post"> 
      Name: <input type="text" name="LoginName"><br> 
      Passwort: <input type="text" name="LoginPass"><br> 
      <input type="submit" value="Login"> 
      </form>'); // Loginformular 
     }elseif($LoginName != $AdminName or $LoginPass != $AdminPass){ 
      die("Der Benutzername oder das Passwort sind nicht korrekt !"); // Fehler beim Login 
     } 
    ?> 
    </body> 
    </html>



    config.php
    <?php 
    /* Login */ 
    $AdminName = 'WireWare';     // Admin Name 
    $AdminPass = 'xxx';     // Admin Passwort 
    $AdminWebseite = ''; /wireware.lima-city.de/ Admin Webseite 
    
    /* Datenbank */ 
    $db_Hostname[0] = 'mysql.lima-city.de'; // Datenbank Host 
    $db_UserName[0] = 'xxx'; // Datenbank User 
    $db_Password[0] = 'xxx'; // Datenbank Passwort 
    $db_Database[0] = 'xxx'; // Datenbank Name 
    
    /* Link zu deiner Webseite */  
    $link = "http://WireWare.lima-city.de/register.php";  
    
    /* Error-Messages */ 
    $error[1] = 'Der Account konnte nicht aktiviert werden.'; 
    $error[2] = 'Der Account konnte nicht angelegt werden.';  
    
    $error[3] = 'Login war nicht erfolgreich';  
    $error[4] = 'Account nicht gefunden';  
    
    
    
    
    /* Ab hier bitte nichts mehr ändern !!! */  
    /* Datenbank */ 
    $select_db_0 = 0; 
     @mysql_connect( 
      $db_Hostname[0], 
      $db_UserName[0], 
      $db_Password[0] 
     ); 
     @mysql_select_db($db_Database[0]); 
      
    /* Datum & Zeiten */ 
    $timestamp = time();                         // akt Zeit 
    $time_datum = date("d.m.Y",$timestamp);      // Datum 
    $time_uhrzeit = date("H:i:s",$timestamp);    // Uhrzeit 
    $time_year = date("Y",$timestamp);           // Jahreszahl 
    ?>



    Was soll ich weiter Machen?

    Danke schon jetzt für eure Bemühungen

    Ja wass nun?
    Wie gehts weiter?

    plz HELP

    Beitrag zuletzt geändert: 10.12.2009 11:31:48 von wireware
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!