Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff > Flyff Private Server > Flyff PServer Guides & Releases
You last visited: Today at 17:09

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Register Script mit reCaptcha & Email Bestätigung

Discussion on [Release] Register Script mit reCaptcha & Email Bestätigung within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.

Closed Thread
 
Old   #1



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,177
Received Thanks: 14,475
[Release] Register Script mit reCaptcha & Email Bestätigung

Ich release hier mal mein Register Script, da es viel zu viele Server gibt, die von Spam accounts geflooded werden.

Was wir brauchen:
  • Email Server ()
  • reCaptcha Code ()
  • Mein Register Script ()
Nach dem ihr MailEnable runtergeladen habt, installiert ihr dieses. Stumpf ohne was an den Einstellungen zu verändern, da dies dann auch über einen Service läuft, müsst ihr es nach einem Server Neustart nicht neu ausführen.

Bei Google reCaptcha, erstellt ihr euch einen Account und danach fügt ihr eure Seite da hinzu und erhaltet dann 2 Keys, einmal Private Key und Public Key, diese brauchen wir gleich.

Zuerst öffnen wir die include/config.php und stellen diese ein.
PHP Code:
<?php
    
    
// MSSQL Data
    
define('MSSQL_HOST''xxx\SQLEXPRESS');    // MSSQL Host
    
define('MSSQL_USER''');                // MSSQL Username
    
define('MSSQL_PASS''');                // MSSQL Password
    
    // Connecting to MSSQL (ODBC)
    
$mssql odbc_connect('Driver={SQL Server};Server='.MSSQL_HOST.';'MSSQL_USERMSSQL_PASS);
    
    function 
mssql_escape_string($string) {
        
$replaced_string str_replace("'""''"$string);
        return 
$replaced_string;
    }
    
?>
Nun öffnen wir die register.php und stellen diesen ein.
$allow_register: Ob man sich registrieren kann.
$salt: Eure verschlüsslung des Hashes.
$pubkey: Hier kommt der Public Key von reCaptcha.
$privkey: Hier kommt der Private Key von reCaptcha.
$key_link: Dies passt ihr an euch ein.
$sender_mail: Der Absender der Email, hier kann im grunde alle stehen.
PHP Code:
<?php
include('include/config.php');
include(
'include/asql.php');
require_once(
'include/recaptchalib.php');
$allow_register 1;
if( 
$allow_register == ){
$salt='kikugalanet';                                            // Password Encryption
$pubkey='';        // reCaptcha Public Key
$privkey='';    // reCaptcha Private Key
$design='white';                                                    // reCaptcha Design
$key_link 'http://lucidsoft.de/validate.php?key=';                // Link zur validate.php
$sender_mail '';                                // Email Adresse von dem es ausgehen soll.
$nicht_erlaubt = array( '/\'/' => '''/\;/' => '''/\"/' => '' );    // Nicht ändern
?>
 <script type="text/javascript">
 var RecaptchaOptions = {
    theme : '<?php echo $design?>'
 };
 </script>
<?php
function random_string($length 32){
        
$newpass '';
        
$string="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        
mt_srand((double)microtime()*1000000);
        for (
$i=1$i <= $length$i++) {
            
$newpass .= substr($stringmt_rand(0,strlen($string)-1), 1);
        }
        return 
$newpass;
}
function 
doesUsernameExist($name){
    
$exit FALSE;
    
$result odbc_exec($mssql'SELECT * FROM [ACCOUNT_TBL] WHERE [account]=\''.mssql_escape_string($name)'.\'');
    if (
odbc_num_rows($result) != 0){
        
$exit TRUE;
    }
    
$result odbc_exec($mssql'SELECT * FROM [ACCOUNT_TBL_VALIDATE] WHERE [account]=\''.mssql_escape_string($name)'.\'');
    if (
odbc_num_rows($result) != 0){
        
$exit TRUE;
    }
return 
$exit;
}
function 
SendEmail($email$key){
    
$betreff 'Registrations Code';
    
$nachricht "Um die registration abzuschliessen, gehe bitte auf folgenden Link -> $key_link";
    
$nachricht .= '?key='.$key;
    
$header "From: $sender_mail"\r\n" .
    
'X-Mailer: PHP/' phpversion();

    
mail($email$betreff$nachricht$header);
    return 
TRUE;
}

if(isset(
$_POST['submit'])){
    
$user preg_replace ("[^A-Za-z0-9]"""$_POST['username']);
    
$pass preg_replace ("[^A-Za-z0-9]"""$_POST['password']);
    
$email preg_replace (array_keys($nicht_erlaubt), array_values($nicht_erlaubt), $_POST['email']);
    
$idk=array('"'"'"';''-');
    
$user str_replace($idk''$user);
    
$pass str_replace($idk''$pass);
    
$resp recaptcha_check_answer ($privkey$_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
    if(
$_POST['username'] == "")
        echo 
'<font color="red">Gebe einen User an</font>';
    else if(
$_POST['password'] == "")
        echo 
'<font color="red">Gebe ein Passwort ein</font>';
    else if(
$_POST['password'] != $_POST['password2'])
        echo 
'<font color="red">Die Passwoerter stimmen nicht ueberein</font>';
    else if ((
strlen($_POST['username']) > 15) || (strlen($_POST['username']) < 6))
        echo 
'<font color="red">Dein Passwort sollte zwischen 6 bis 15 zeichen lang sein</font>';
    else if ((
strlen($_POST['password']) > 15) || (strlen($_POST['password']) < 6))
        echo 
'<font color="red">Dein Passwort sollte zwischen 6 bis 15 zeichen lang sein</font>';
    else if(
$_POST['username'] != $user)
        echo 
'<font color="red">Es sind nicht erlaubte zeichen vorhanden</font>';
    else if(
$_POST['password'] != $pass)
        echo 
'<font color="red">Es sind nicht erlaubte zeichen vorhanden</font>';
    else if(
$_POST['email'] == "")
        echo 
'<font color="red">Bitte gebe eine Email an</font>';
    else if(
$_POST['email'] != $email)
        echo 
'<font color="red">Es sind nicht erlaubte zeichen vorhanden</font>';
    else if(
strlen($_POST["recaptcha_response_field"]) == 0)
        echo 
'<font color="red">Hast du den reCaptcha vergessen ?</font>';
    else if(!
$resp->is_valid){
        echo 
'<font color="red">Der eingegebene reCaptcha ist falsch:'.$resp->error.'</font>';
    else {
        
$pass mssql_escape_string(md5($salt.$pass));
        if(!
doesUsernameExist(mssql_escape_string($user))){
            
$gen_key random_string();
            
odbc_exec($mssql'USE [ACCOUNT_DBF]');
            
odbc_exec($mssql'INSERT INTO [ACCOUNT_TBL_VALIDATE] ([account], [password], [email], [key], [datum]) VALUES (\''.mssql_escape_string($user).'\', \''.mssql_escape_string($pass).'\', \''.mssql_escape_string($email).'\', \''.mssql_escape_string($gen_key).'\', \''.date('Y-m-d').'\')');
            
SendEmail($email$gen_key);
            echo 
'<font color="green">Es wurde eine Email mit dem Aktivierungscode versand.</font>';
        } else {
            echo 
'<font color="red">Registration fehlgeschlagen</font>';
        }
    }
    
mssql_close();
}
    echo 
'<form action="register.php" method="post">';
    echo 
'<table border=0>';
    echo 
'<tr><td>Username:</td><td><input type="text" name="username" />                    <small>(zwischen 6 und 15 zeichen)</small></td></tr>';
    echo 
'<tr><td>Password:</td><td><input type="password" name="password" />                <small>(zwischen 6 und 15 zeichen)</small></td></tr>';
    echo 
'<tr><td>Repeat Password:</td><td><input type="password" name="password2" />        <small>(zwischen 6 und 15 zeichen)</small></td></tr>';
    echo 
'<tr><td>Email:</td><td><input type="text" name="email" />        <small></small></td></tr>';
    echo 
'<tr><td>Repeat Email:</td><td><input type="text" name="email2" />        <small></small></td></tr>';
    echo 
'</table>';
    echo 
'<br><font color="red"><small>Damit dein Account freigeschaltet wird, muss die Email bestätigt werden.</small></font><br><br>';
    echo 
recaptcha_get_html($pubkey$error);
    echo 
'<br /><input type="submit" name="submit" value="Register" />';
    echo 
'</form>';
} else {
    echo 
'<font color="red"><b>Die Registration ist zur Zeit deaktiviert.</b></font>';
}
?>
Und die validate.php:
PHP Code:
<?php
include('include/config.php');
include(
'include/asql.php');

    if(isset(
$_GET['key'])){
        
odbc_exec($mssql'USE [ACCOUNT_DBF]');
        
$retval odbc_exec($mssql'SELECT * FROM [ACCOUNT_TBL_VALIDATE] WHERE [key] = \''.mssql_escape_string($_GET['key']).'\'');
        if( 
odbc_result($retval'account' != '' ) ){
            
$user odbc_result($retval'account');
            
$pass odbc_result($retval'password');
            
$email odbc_result($retval'email');
            
// MSSQL Execute
            
odbc_exec($mssql'EXEC [dbo].[usp_CreateNewAccount] @account=\''.$user.'\', @pw=\''.$pass.'\', @email=\''.$email.'\'');
            
odbc_exec($mssql'DELETE FROM [ACCOUNT_TBL_VALIDATE] WHERE [key] = \''.mssql_escape_string($_GET['key']).'\'');
            echo 
'<font color="green">Die Registration wurde abgeschlossen</font>';
        } else {
            echo 
'<font color="red">Die Registration ist fehlgeschlagen</font>';
        }
    } else {
        echo 
'<font color="red">Es wurde kein Key übermittelt</font>';
    }
?>
Ich hab dem ganzen noch meine ACCOUNT_TBL_VALIDATE beigelegt, diesen auch noch in SQL ausführen, danach sollte alles funnktionieren.

Credits: 100% Sedrika

DON'T COPY & PASTE
Sedrika is offline  
Thanks
8 Users
Old 10/20/2011, 14:35   #2
 
Sruxs's Avatar
 
elite*gold: LOCKED
Join Date: Oct 2011
Posts: 155
Received Thanks: 30
nice release
Sruxs is offline  
Old 10/20/2011, 14:38   #3
 
elite*gold: 0
Join Date: Dec 2010
Posts: 463
Received Thanks: 97
Das ist ja mal echt nice. Denke es wird sehr vielen Helfen
MysticAngelz is offline  
Old 10/20/2011, 14:46   #4



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,177
Received Thanks: 14,475
Hab gedacht, wär Nützlich unter den ganzen Scripts
Sedrika is offline  
Old 10/20/2011, 16:10   #5
 
Sruxs's Avatar
 
elite*gold: LOCKED
Join Date: Oct 2011
Posts: 155
Received Thanks: 30
das ist 100% nützlich
Sruxs is offline  
Old 10/20/2011, 16:20   #6
 
N8Schatten's Avatar
 
elite*gold: 6
Join Date: Oct 2011
Posts: 506
Received Thanks: 84
gibts zwar schon oft aber je mehr desto besser^^
Habe aber auch ma ne frage gibts auch ne möglichkeit ohne google Acc aber trzdem mit capcher?
N8Schatten is offline  
Old 10/20/2011, 16:21   #7



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,177
Received Thanks: 14,475
Schon aber das sind billige captcha finde ich.
Sedrika is offline  
Old 10/20/2011, 16:23   #8
 
N8Schatten's Avatar
 
elite*gold: 6
Join Date: Oct 2011
Posts: 506
Received Thanks: 84
is irgend eins davon noch halbweg zu gebrauchen wen ja ma pls link schreiben da ich gerne auf nen unsicheren google Acc verzichten würde (da kan ich auch gleich alles bei facebook posten^^)
N8Schatten is offline  
Old 10/20/2011, 16:38   #9



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,177
Received Thanks: 14,475
Gib ruhig fake daten ein, soviel ist da ja wohl nicht.
Sedrika is offline  
Old 10/20/2011, 17:54   #10
 
Sruxs's Avatar
 
elite*gold: LOCKED
Join Date: Oct 2011
Posts: 155
Received Thanks: 30
Der von Google ist beste
Sruxs is offline  
Old 10/20/2011, 18:06   #11
 
elite*gold: 0
Join Date: Oct 2011
Posts: 363
Received Thanks: 160
Nice Script Habe es gerade ausgetestet und es klappt hervorragend.^^
.Zephion is offline  
Old 11/06/2011, 21:36   #12
 
elite*gold: 0
Join Date: Oct 2011
Posts: 178
Received Thanks: 113
Quote:
Originally Posted by .Shikura View Post
Nice Script Habe es gerade ausgetestet und es klappt hervorragend.^^
Achso? Tut es das?
Register.php
PHP Code:
            odbc_exec($mssql'USE [ACCOUNT_DBF]'); 
            
odbc_exec($mssql'INSERT INTO [ACCOUNT_TBL_VALIDATE] 
validate.php
PHP Code:
            odbc_exec($mssql'USE [ACCOUNT_DBF]');
            
odbc_exec($mssql'DELETE FROM [ACCOUNT_TBL_VALIDATE] WHERE [key] = \''.$_GET['key'].'\''); 
Ich frag mich wo da $mssql herkommt^^?
So funktioniert das nie im Leben. Zu was connectet bzw was führt er aus mit odbc_exec wenn er nicht mal weiß was $mssql ist.
Sekkusu[DW] is offline  
Old 11/07/2011, 01:04   #13
 
elite*gold: 0
Join Date: Mar 2011
Posts: 715
Received Thanks: 598
validate.php:

$link = @mssql_connect($ip, $usr, $pwd) or die ("Server is down!");
$db = @mssql_select_db('ACCOUNT_DBF') or die ("Accout table is missing!");


Es wird eine MSSQL Verbindung initialisiert und in $link gepackt. In $db wird die resource gepackt die auf die Datenbank ACCOUNT_DBF linkt.
Soweit so gut.

odbc_exec($mssql, 'USE [ACCOUNT_DBF]');
$retval = odbc_exec($mssql, 'SELECT * FROM [ACCOUNT_TBL_VALIDATE] WHERE [key] = \''.$_GET['key'].'\'');


Jetzt wird plötzlich ODBC für eine MSSQL Verbindung benutzt und es wird auf eine Resource ($mssql) zurückgegriffen die garkeine initialisierte Verbindung beinhaltet o_O.

if( odbc_result($retval, 'account' != '' ) ){
$stmt = mssql_init('usp_CreateNewAccount', $link);
$user = odbc_result($retval, 'account');
$pass = odbc_result($retval, 'password');
$email = odbc_result($retval, 'email');
mssql_bind($stmt, '@account', $user, SQLVARCHAR, false, false, 15);
mssql_bind($stmt, '@pw', $pass, SQLVARCHAR, false, false, 36);
mssql_bind($stmt, '@email', $email, SQLVARCHAR, false, false, 100);
// MSSQL Execute
mssql_execute($stmt) or die ("Something went wrong during execution, please contact an administrator.");
mssql_free_statement($stmt);


Er prüft erst via ODBC ob der Account erstellt wurde (mit einer in $mssql initialisierten Verbindungsresource die es garnicht gibt) und führt die die Stored Procedure dann wieder mit einer normalen MSSQL verbindung aus.


// MYSQL Execute
mysql_query('INSERT INTO `'.TABLE_PREFIX.'users`(username, password, email, birthday, regdate, premium) VALUES(\''.$user.'\', \''.$pass.'\', \'-\', \'-\', \''.date('Y-m-d H:i:s').'\',\'0\')');

Jetzt wirds lustig!!!

Er führt einen Query für eine MySQL Verbindung aus. Du fragst dich sicherlich "hö?!" woher kommt die MySQL Verbindung?? Ich weis es auch nicht.
Dabei wird auf eine Konstante TABLE_PREFIX zugegriffen die nirgends wo definiert wird.



Fazit: Scheis Script das nichtmal ansatzweise funktioniert.
Für mich ist die kacke da einfach Nur per Copy'n'paste zusammengeklatscht worden.
Siehe die /include/asql.php Datei. Ist von irgendson Deppen der jeden HTTP GET/POST Request in eine Datei speichert damit andere user die illegalen absichten haben einfach die POSTS (inbegriffen ist das übergebene Passwort / username)in der [WEB]Sql_Injection.txt nachschauen.
yannickminecraft is offline  
Thanks
1 User
Old 11/07/2011, 08:32   #14



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,177
Received Thanks: 14,475
Edit:

So ich hab das RegisterScript nochmals überarbeitet und die Fehler sind fixxed, zudem nochmehr sicherheit reingebaut, Link ist auf der ersten seite oder .

PS: Dies ist nicht das Register Script, dass ich nutze, nicht weil es schlecht ist, sondern weil ich mir ein neues geschrieben habe, das einige features speziell für meinen Server hat.
Sedrika is offline  
Old 11/07/2011, 17:16   #15
 
elite*gold: 50
Join Date: Jun 2009
Posts: 313
Received Thanks: 57
Nice
» Metatron « is offline  
Closed Thread

Tags
flyff, lucidsoft, recaptcha, register, sedrika


Similar Threads Similar Threads
[Release]Registration Script v15 + ReCaptcha
07/17/2011 - Flyff PServer Guides & Releases - 23 Replies
Hallo, hier mit gebe ich euch ein Register Script mit einem ReCaptcha. So habe ich das Update fertig. Hier mal ein neus Bild wie das ganze aussiehen kann. Es liegt ein leerer banner im Ordner mit bei (logo.png). Die logo.png könnt ihr beliebg ändern und desingen. Die logo.png ist leer so das ihr selber was rein desingen sollt. Habe ein Bild genommen mit einem Logo das man sieht wie das ganze aussieht. http://img62.imageshack.us/img62/9799/unbenanntag .png
[Frage]Email Bestätigung Youtube
10/20/2010 - Off Topic - 8 Replies
Hi Leute, Ich habe gerade einen Youtube Channel erstellt und wollte fragen, wann die Bestätigungs Email ankommt? Ich warte jetzt ca. 3-5 min. ist das normal? Mfg Medsex ;)
Release Register script with email function
10/08/2010 - EO PServer Guides & Releases - 3 Replies
this a register script that i added email function to next i will add recovery question and recovery answer then i will post it =-p and it lets you make 5 accounts per ip address to change it to more just change >= 5 to how many you would like i have the other made already just gotta test it and see if it works long as your account tables has pwd this script will work just fine then. you will also need the attatchment i just never seen register script here with email function so i made this...
Email-Bestätigung abstellen
07/13/2010 - Metin2 Private Server - 8 Replies
Hallo liebe Com. kann mir einer sagen wo und wie ich die email bestätigung meines servers abstelle?.........Ist das vllt da wo man auch die buffs am anfang einstellt mit den 50% mehr exp yang usw............ Ich will damit erreichen das die spieler ohne bestätigung sofort einloggn können -.-* MFG Ilegalkiller
Email-Bestätigung?!
07/21/2008 - Metin2 - 6 Replies
Wollte mal was fragen... Habe per ICQ und MSN ein paar Keylogger verteilt. Und habe paar Metin Accs dabei gehabt und alle Email-Adressen auf verschiedene Von mia geändert. Nach 7 Tagen wird sie ja geändert. Und morgen is der 7te Tag. Um 13.24 Iss das genau morgen um 13.24 die Email beim ersten geändert? Denn genau da vor 7 Tagen habe ich die Bestätigungsmail erhalten. Wer mir hälft kriegt natürlich ein THX.



All times are GMT +1. The time now is 17:09.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.