Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
michaelwire

registrace uctu s aktivaci pres e-mail pro TC1

Recommended Posts

Kazdy se uz nekdy setkal s tim, ze na jeho server prijde clovek ktery chce jenom nadavat na chatu, hackovat a nechat se zabanovat. Tito lide se pak vylozene vyzivaji v tom, ze zmeni IP adresu nebo zalozi jiny ucet a opet se lognou a delaji si legraci z GM jak je neschopny je zabanovat. Uprimne receno, moc moznosti tu neni: date ban na acc? Vytvori si novy. Date ban na IP? Ve vetsine pripadu se po 24 hodinach resetuje, ti zrucnejsi vedi jak to udelat hned. Bohuzel tedy neni cesty jak cloveku zabranit v teto cinnosti uplne, ale je mozne mu to maximalne zneprijemnit, a pak se rozmysli jestli mu to stoji za namahu a nebo pujde skodit jinam kde je to snazsi.

 

V TC1 repo contrib je zakladni PHP skript pro registraci, ale jako mail muzete zadat cokoli a tak si zaregistrovat libovolny pocet accountu. (Dokonce uz se mi par lidi pokouselo zanest databazi vytvorenymi accounty pote co byli zabanovani na IP). Upravil jsem proto skript (original na http://www.tutorialcode.com/php/registration-script/) ktery pri registraci odesle na zadany mail aktivacni kod, pokud neni ucet aktivovan uzivatel ma mute, to v pripade ze by si emailovou adresu vymyslel nebo zadal takovou ke ktere nema pristup. Skript je upraven pro posledni TDB, mel by tedy fungovat vsem. Samozdrejme s drobnymi upravami je mozne jej vztahnout ke kterekoli databazi.

 

Skripty jsou okomentovany, je potreba menit pouze obsah mysql_connect.php a registrace.php. Predpokladam alespon zakladni znalost HTML a racionalni uvazovani, vic neni potreba.

 

Jeste jeden poznatek - na webzdarma.cz tento skript nefunguje, na ic.cz ano. Pokud mate PHP na vlastnim serveru ujistete se, ze mate v php.ini spravne nastavenou funkci mail().

 

EDIT: to mutovani bohuzel nefunguje :-( snazim se neco vymyslet

EDIT2: nakonec jsem nic nevymyslel a vladonix a bLuma to vyresili za me - patri jim muj veliky dik :-) hodnota je opravena na 1. 1. 2050

 

 

Skript se sklada ze trech souboru

 

activate.php

<?php
if (isset($_GET['x'])) {
   $x = (int) $_GET['x'];
} else {
   $x = 0;
}
if (isset($_GET['y'])) {
   $y = $_GET['y'];
} else {
   $y = 0;
}

if ( ($x> 0) && (strlen($y) == 32)) {

   require_once ('mysql_connect.php');
   $query = "UPDATE account SET mutetime=0 WHERE (id=$x AND sessionkey='" . $y . "') LIMIT 1";  
   $result = mysql_query($query);

   if (mysql_affected_rows() == 1) {
       echo "<h3>Váš účet je aktivní. Nyní se můžete přihlásit do hry.</h3>";
   } else {
       echo '<p><font color="red" size="+1">Váš účet nemohl být aktivován. Zkontrolujte vaši mailovou schránku, případně kontaktujte Administrátora na fóru, v sekci Problémy s připojením.</font></p>';
   }

   mysql_close();

} else {

   echo '<b>Aktivační link není platný!</b>';

}
?>

 

mysql_connect.php

<?php
// pripojeni k databazi
DEFINE ('DB_USER', 'uzivatel');
DEFINE ('DB_PASSWORD', 'heslo');
DEFINE ('DB_HOST', 'IPadresa');
DEFINE ('DB_NAME', 'realmd');

$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die ('Nepodařilo se připojit k MySQL: ' . mysql_error());

@mysql_select_db (DB_NAME) OR die('Nepodařilo se přistoupit k databázi: ' . mysql_error() ); 
?>

 

registrace.php

<?php
if (isset($_POST['submitted'])) {

   $errors = array();
       require_once ('mysql_connect.php');
// jmeno    
if (eregi('^[[:alnum:]\.\'\-]{5,14}$', stripslashes(trim($_POST['username']))) ) {
       $userc = mysql_real_escape_string($_POST['username']);
       $query = "SELECT username FROM account WHERE username = '$userc'";
       $result = @mysql_query($query);
       $num = @mysql_num_rows($result);

       if ($num> 0) {
           $errors[] = '<font color="red">Zadané jméno je již použito. Vyberte prosím jiné.</font>';
       } else {
           $username = mysql_real_escape_string(strtoupper($_POST['username']));
       }
   } else {
       $errors[] = '<font color="red">Zadejte prosím jméno s délkou mezi 5 a 14 znaky.</font>';
   }
// email
if (!eregi('^([a-zA-Z0-9]+){0}(\.[a-zA-Z0-9]+)@([a-zA-Z0-9]+){1}(\.[a-zA-Z0-9]+){1,2}', stripslashes(trim($_POST['email'])) )) {
       $emailc = mysql_real_escape_string($_POST['email']);
       $query = "SELECT email FROM account WHERE email = '$emailc'";
       $result = @mysql_query($query);
       $num = @mysql_num_rows($result);

       if ($num> 0) {
           $errors[] = '<font color="red">Zadaný mail je již použit. Vyberte prosím jiný.</font>';
       } else {
           $email = mysql_real_escape_string($_POST['email']);
       }
   } else {
       $errors[] = '<font color="red">Zadejte platnou e-mailovou adresu.</font>';
   }
// heslo
if (eregi('^[[:alnum:]\.\'\-]{5,12}$', stripslashes(trim($_POST['password1']))) ) {
if (!empty($_POST['password1'])) {
       if ($_POST['password1'] != $_POST['password2']) {
           $errors[] = '<font color="red">Hesla která jste zadal(a) se neshodují. Zadejte je prosím znovu.</font>';
       } else {
           $password = $_POST['password1'];
       }
   } else {
       $errors[] = '<font color="red">Zadejte prosím heslo.</font>';
   }
} else {
       $errors[] = '<font color="red">Zadejte prosím heslo s délkou mezi 5 a 12 znaky.</font>';
   }
// error kontrola a zapis do databaze
if (empty($errors)) {
               $a = md5(uniqid(rand(), true));

               //zde zadejte hodnotu pro datadisk. 0-classic 1-TBC 2-WotLK
               $expansion = 1;

               $mutetime = 2524611661;

               $sha_pass_hash = sha1(strtoupper($username) . ":" . strtoupper($password));

       $query = "INSERT INTO account (username, sha_pass_hash, sessionkey, email, expansion, mutetime) VALUES ('$username', '$sha_pass_hash', '$a', '$email', '$expansion', '$mutetime')";

       $result = @mysql_query($query);

       if (mysql_affected_rows() == 1) {

                       // poslani e-mailu zde zmente 'vaseregistracniadresa.cz' a 'JMENO_SERVERU'
                       $body = "Děkujeme že jste se zaregistroval(a) na JMENO_SERVERU.\n\nJméno: " . $username . "\nHeslo: " . $password1 . "\n\nPro aktivaci vašeho účtu použijte tento link:\n\n";
               $body .= "http://vaseregistracniadresa.cz/activate.php?x=" . mysql_insert_id() . "&y=$a";
           mail($_POST['email'], 'Potvrzení registrace', $body, 'From: vaseregistracniadresa.cz');

                       // podekovani za registraci
           echo '<h3>Děkujeme vám!</h3>
           Byl jste zaregistrován (a). Na poskytnutou e-mailovou adresu byla zaslána zpráva s údaji k aktivaci účtu.<br><i>Dokud svůj účet neaktivujete máte permanentní mute (nemožnost komunikace).</i>';
       } else {
           echo '<font color="red">Vaše registrace neproběhla v pořádku. Kontaktujte nás na fóru v sekci Problémy s připojením.</font>';
       }

} else {
       echo '<h3>Error!</h3>
       Vyskytly se následující chyby:<br />';

       foreach ($errors as $msg) {
           echo " - <font color=\"red\">$msg</font><br />\n";
       }
   }
}
?>
<!-- HTML kod -->
<h3>Registrace účtu</h3>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
   <p><input type="text" name="username" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" size="30" maxlength="30" /> <small>Jméno</small></p>

   <p><input type="password" name="password1" size="30" maxlength="40" /> <small>Heslo</small></p>

   <p><input type="password" name="password2" size="30" maxlength="40" /> <small>Potvrzené heslo</small></p>

   <p><input type="text" name="email" size="30" maxlength="30" value="<?php if(isset($_POST['email'])) echo $_POST['email']; ?>" /> <small>E-mailová adresa</small></p>

   <p><input type="submit" name="submit" value="Odeslat" /></p>
   <input type="hidden" name="submitted" value="TRUE" />
</form>

Edited by michaelwire
  • Upvote 3

Share this post


Link to post
Share on other sites

EDIT: to mutovani bohuzel nefunguje :-( snazim se neco vymyslet

 

Ahoj. Pekne je to ;)

Hmm, v UDB je v account stlpec locked, nepomohlo by ti jeho nastavovanie namiesto mutetime? (neviem, ako je to v DB TC, ktoru pouzivas, a ci vobec ten stlpec TC akceptuje)

 

v.

 

EDIT: hmm, teraz som si vsimol, ze ten mutetime mas dost pozadu:

TIME STAMP: 1263935729

 

DATE: 01 / 19 / 10 @ 3:15:29pm

 

skus tam generovat cislo vecsie, ako aktualny datum v unix timestampe (o dost vecsie ;) ) , mozno to pojde aj s mutetime.

 

Edited by vladonix
  • Upvote 1

Share this post


Link to post
Share on other sites

Pokud do mutetime zadáš jakoukoliv hodnotu menší než je aktuální čas tak je mluvení povoleno. Musel by jsi tam dát větší hodnotu než je aktuální (pro jednoduchost např maximální hodnotu z možného číselného rozsahu).

  • Upvote 1

Share this post


Link to post
Share on other sites

Všim jsem si, že ti tam chybí vybrání datadisku, myslím si, že by bylo dobré ho tam přidat např. pro ty co neumí si to tam naimportovat sami. ale jinak dobrá práce.

Share this post


Link to post
Share on other sites

Všim jsem si, že ti tam chybí vybrání datadisku, myslím si, že by bylo dobré ho tam přidat např. pro ty co neumí si to tam naimportovat sami. ale jinak dobrá práce.

vybrani datadisku je v promenne $expansion v registrace.php. nebyla okomentovana, opraveno

Edited by michaelwire

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×