EMail abfrage

05/15/2015 18:06 Juppi2000#1
Hi, gibt es ne möglichkeit die EMail adresse vor Accountfreigabe checken zu lassen? Ich meine damit das man im Regi die EMail eingibt und dann zum erstellen zur EMailadresse eine Email geschickt wird und der Account erst dann erstellt wird wenn der beinhaltete Link geklickt wurde. Kann mir da wer was empfehlen?
05/15/2015 20:02 xKeRnx#2
So nun schreibe ich den ganzen Text zum 2 mal da eben EPVP DOWN war und mein KOMPLETTER TEXT WEG!!!!!!!


So als erstes musst du die Login.php anpassen dass wenn nAuthID = 2 ist folgender error kommt (Please Activate Your Account)

So als zweites musst die die Regi.php anpassen dass er in OdinAccounts..tAccounts nAuthID = 2 einträgt...
So dann erstellst du eine neue Tabelle diese nennst du tActivate diese sollte 2 Collums enthalten einmal nEMID(int) und sString(nvarchar(50))
So nun erstellst du beim register ein random String mit md5(Username & Password & RandomString) diesen und die nEMID trägst du in tActivate ein...
So nun schickst du noch eine email an den User auch mit dem Regi script...
Bsp.
Please click the Link to Activate your Account...
Link: [Only registered and activated users can see links. Click Here To Register...] & Password & RandomString)


So nun musst du noch die Activate.php erstellen
wieder ein kleines beispiel:
PHP Code:
$String = mssql_escape_string($_POST['String']);
$checkActivate = sqlsrv_query($conn, "SELECT nEMID, sString From tActivate WHERE sString = ?;", array($String));
$fetchActivate = sqlsrv_fetch_array($checkActivate);

if(
sqlsrv_num_rows($checkActivate) == 1){
$updateUser = sqlsrv_query($conn, "UPDATE tAccounts SET nAuthID = '1' WHERE nEMID = ?;", array($fetchActivate['nEMID']));
If (
$updateUser){
echo
'Finish';
$DeleteRString = sqlsrv_query($conn, "DELETE * FROM tActivate WHERE nEMID = ?;", array($fetchActivate['nEMID']));
}else{
echo
'Cant Update the User!!!';
}
}else{echo
'SQL EROR';} 
So da ich diesen Text nun zum zweiten mal geschrieben habe ist er nicht mehr so ausführlich wie beim ersten mal aber er soll ja nur ein Denkanstoß sein, aber ich hoffe es hilft dir trotzdem weiter...

MfG.
KeRn
05/15/2015 20:14 DuOtto#3
Ja.

Grundsätzlich funktioniert E-Mail-Validierung so, dass du bei der Registrierung etwas zufälliges generierst (zufällige Buchstaben/Zahlenfolge) und das dann per Mail()-Methode an die E-Mail schickst, die der User angibt. Der Account wird dann so angelegt, dass er noch nicht nutzbar ist.
Wenn der User dann in der E-Mail den Link anklickt oder den Code aus der E-Mail eingibt, ist für den Server ja klar, dass dem User die Adresse wirklich gehört. Er kann also freigeschaltet werden, sodass er sich einloggen kann.

Das Grundgerüst dafür müsste soweit ich weiß in der Finalhell-Seite eingebaut sein.
Du könntest z.B. den Account erst in einer Datenbank speicher, die nicht vom Launcher abgefragt wird, dann ist es so, als wäre ein nicht bestätigter Account auch noch gar nicht angelegt.

Sinnvoller wäre es aber, in der Account-Tabelle einfach eine neue Spalte (Boolean) anzulegen, die enthält, ob der Account schon aktiviert wurde oder nicht.
Der Launcher (bzw. das PHP-Script/der Serverteil davon) könnte das dann bei jedem Login abfragen und eine entsprechende Nachricht an den Nutzer weitergeben.

Edit: KeRn war schneller, dafür hast du jetzt einmal Theorie und einmal Praxis.
05/15/2015 21:14 Juppi2000#4
Danke beide Antworten waren Hilfreich :)