Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP-MySQL-Freischaltung

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP-MySQL-Freischaltung

    Ich habe folgende Frage!

    Jeder kennt das du registrierst dich auf einer Webseite und bekommst dann eine Email zugeschickt, erst wenn du die Emailadresse über einen Link bestätigt hast wirst du freigeschaltet.

    Die große Frage ist: WIE GEHT DAS?

    Den das steht in keinem Buch wo man das lernen kann, also kann mir da jemand ein paar tipps geben?


    BItte danke


  • #2
    also ich stell mir das so vor:
    wenn man sich registriert, wird ja die id gespeichert und du machst ein feld namens active und als wert=0. dann machste ne seite in der einfach steht
    Code:
    $id = $_GET['uid'];
    $sql = "update user set active=1 where id='md5($id)'";
    $qry = mysql_query($sql) or die(mysql_error());
    für den link lieste die id aus und verschlüsselst die per md5
    der link könnte dann so aussehen

    Kommentar


    • #3
      gut und wie blockier ich das dann das zum Beispiel wenn er die Email nicht bestätigt hat sich nicht einloggen kann?

      Kommentar


      • #4
        aja wenner sich einloggen will, checkst du ob active den wert 1 oder 0 besitzt.

        Kommentar


        • #5
          sorry bin noch kompletter anfänger hast da auch ein kleines Beispiel!


          Wäre nett!

          Kommentar


          • #6
            Du kannst einfach eine Abfrage beim einloggen schreiben, ob active gleich 1 ist:
            Code:
            SELECT
              active
            FROM
              user
            WHERE
              name = $name
            $name musst du natürlich über das Loginformular haben. Dann mit der if-Abfrage ob active gleich eins ist; wenn nicht dann einfache eine Fehlermeldung ausgeben.
            Natürlich kannst du das auch gleich beim Loginvorgang abfragen.
            mfg RudiS

            Kommentar


            • #7
              THANKS

              DANKESCHÖN

              Kommentar


              • #8
                geht das auch das der user erst in die datenbank eingetragen wird wenn er auf den link klickt? oder kann man da ein auto script machen das dann alle toten accounts nach 1 woche löscht?

                mfg wing

                Kommentar


                • #9
                  Klar geht das. Man muss nur ein Skript schreiben das prüft ob es Datensätze gibt die active gleich null haben und die vor länger als z.B einer Woche erstellt worden.
                  mfg RudiS

                  Kommentar


                  • #10
                    brauch man für active 0 / 1 eine extra tabellenspalte oder kann man das irgendwo sehen bzw. wird das irgendwo anders gespeichert


                    mfg wing

                    Kommentar


                    • #11
                      Man braucht für active eine eigene Spalte, die logischerweise active heißt, da dass die Spalte ist.
                      mfg RudiS

                      Kommentar


                      • #12
                        Code:
                        <?php
                        
                        	// Datenbank Variablen
                        		$dbserver = "xx";	// Datenbankserveradresse (http://w.funpic.de/phpmyadmin/)
                        		$dbname = "xx";				// Name der Datenbank
                        		$dbuser = "xx";				// Username des Datenbankbenutzers
                        		$dbpass = "xx";				// Passwort des Datenbankbenutzers
                        
                        	  $login = mysql_connect ("$dbserver", "$dbuser", "$dbpass")
                        		or die ("Datenbank zur Zeit nicht erreichbar: ".mysql_error());
                        		print ("Verbindung erfolgreich");
                        	
                        	  mysql_select_db($dbname,$login);
                        	
                        
                        	  $query = "SELECT id, active FROM userarea WHERE username = '".$user."'";
                        	  $result = mysql_query($query,$login);
                        
                        	$get = mysql_fetch_array($result, MYSQL_ASSOC);
                        
                        	if ($get["active"] <> 1){
                        		die ("Der Account ist bereits aktiv!");
                        	}
                        		//wenn es auf 0 ist soll er es auf 1 setzten	
                        
                        	mysql_close($login);
                        
                        	header ("Location:login.php");
                        
                        ?>
                        ok das is schonmal das grundgerüst aber da fehlen noch einige sachen

                        1. ne if abfrage is da ob der account schon aktiviert wurde aber wie mach ich jetzt das else und wie geht der code für das ändern?

                        2. beim id und active holen brauch der ja n username aber wo bekommt der den her??

                        3. ist der quellcode auch wirklich richtig so?

                        mfg wing

                        Kommentar


                        • #13
                          1, 2: ich würde das einfach andersrum machen:
                          Code:
                          if ($get["active"] != 1)
                           {
                            $sql = "UPDATE
                                      spielertabelle
                                    SET
                                      active = 1
                                    WHERE
                                      MD5(mail) = '".$email."'
                                   ";
                            $result = mysql_query($sql) OR die (mysql_error());
                           }
                          Du nimmst nicht den Usernamen, sondern die mit md5() verschlüsselte Mail, die ja an den User geschickt wurde. Das gleiche für SELECT von oben.
                          3. "id" bei SELECT ist unnötig; bei mysql_query brauchst du $login nicht, außer du hast mehrere Verbindungen
                          Du solltest bei header Location einen absoluten Link nehmen.
                          mfg RudiS

                          Kommentar


                          • #14
                            das mit dem $login lass ich lieber dann blick ich als anfänger besser durch

                            aber nochmal auf die $email ich hab das so gemacht das die mail per php automatisch geschickt wird und da ist jetzt nichts verschlüsselt und auch der $email string geht doch dann verloren die mail is ja keine php datei

                            1. wie verschlüssele ich jetzt die ganzen daten die dann in meine datenbank rein sollen
                            2. das mit dem email hab ich immer noch nich kapiert brauch ich da vielleicht was in der "verarbeitung.php" von der aus die email gesendet wird?

                            mfg wing

                            Kommentar


                            • #15
                              Also dass ist eigentlich ganz einfach. Du schreibst die E-Mail mit mail() ganz normal, und schreibst darin eine Adresse zum freischalten:
                              zum Freischalten klicken Sie bitte auf diesen Link: http://www.domain.de/login.php?mail=...jd24jf845jd923
                              Was da hinter ?mail= steht (hier nur so hingetippt) ist die E-Mail des Spielers mit md5() verschlüsselt. Im Skript fragst du dann ab, ob mail vorhanden ist und dann folgt mein oben genannter Code:
                              Code:
                              if (!empy($_GET['mail'])) // vorhanden und nicht leer
                               {
                                // hier mein Code mit dem active ändern und so weiter
                               }
                              mfg RudiS

                              Kommentar

                              Lädt...
                              X