Stránka 2 z 5

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 10:34
od vasikxl
No, no, no, máš něco proti Čechům :lol:

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 11:53
od Mysteria
Tak tady máš moji verzi Zdendo, jak jsem slíbil (obsahuje i výběr mezi MD5, SHA1 a SHA256).
Spoiler: zobrazit

Kód: Vybrat vše

<!DOCTYPE html>
<
html xmlns='http://www.w3.org/1999/xhtml' lang='cs'>
    <head>
        <meta charset='UTF-8' />
        <meta name='author' content='Mysteria' />
        <meta name='description' content='' />
        <meta name='keywords' content='' />
        <meta name='robots' content='index, FOLLOW' />
        <title>AuthMe Registrace</title>
        <style>
            .register input { display: block; width: 200px; margin-bottom: 2px; box-sizing: border-box; -ms-box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; }
        </style>
    </head>
    <body>
        <form class='register' action='register.php' method='post'>
            <input type='text' name='name' value='' placeholder='Zadejte své jméno' required />
            <input type='password' name='password' value='' placeholder='Zadejte své heslo' required />
            <input type='password' name='password2' value='' placeholder='Zadejte své heslo znovu' required />
            <input type='submit' name='submit' value='Registrovat' />
        </form>
    </body>
</
html>
<?
php
$dbHost 
= 'localhost';
$dbUser = 'root';
$dbPw = 'password';
$dbName = 'web';
$hash = 'SHA256';
$maxAccPerIP = 10;

$db = new mysqli($dbHost, $dbUser, $dbPw, $dbName);
if (!empty($_POST['name']) && !empty($_POST['password']) && !empty($_POST['password2'])) {
    if (!$db->connect_errno) {
        if ($ps = $db->prepare('SELECT COUNT(*) FROM authme WHERE username = ?')) {
            $ps->bind_param('s', $_POST['name']);
            $ps->execute(); $ps->bind_result($count); $ps->fetch(); $ps->close();
            if ($count === 0) {
                if ($_POST['password'] === $_POST['password2']) {
                    if ($ps = $db->prepare('SELECT COUNT(*) FROM authme WHERE ip = ?')) {
                        $ps->bind_param('s', $_SERVER['REMOTE_ADDR']);
                        $ps->execute(); $ps->bind_result($count); $ps->fetch(); $ps->close();
                        if ($count < $maxAccPerIP) {
                            switch ($hash) {
                                case 'MD5':
                                    $pw = hash('md5', $_POST['password']); break;
                                case 'SHA1':
                                    $pw = hash('sha1', $_POST['password']); break;
                                case 'SHA256':
                                    $salt = (string)mt_rand(10000000, 999999999) . (string)mt_rand(10000000, 999999999);
                                    $pw = hash('sha256', $_POST['password']) . $salt;
                                    $pw = '$SHA$' . $salt . '$' . hash('sha256', $pw);
                                    break;
                            }
                            $authMeTime = time() * 1000;
                            if ($ps = $db->prepare('INSERT INTO authme (username, password, ip, lastlogin) VALUES (?, ?, ?, ?)')) {
                                $ps->bind_param('sssi', $_POST['name'], $pw, $_SERVER['REMOTE_ADDR'], $authMeTime);
                                if ($ps->execute()) {
                                    echo 'Registrace proběhla úspěšně!';
                                } else { echo 'Litujeme, ale registrace selhala (chyba: ' . $ps->errno . ' - ' . $ps->error . ').'; }
                            } else { echo 'Litujeme, ale registrace selhala (chyba: ' . $db->errno . ' - ' . $db->error . ').'; }
                        } else { echo 'Litujeme, ale z Vaší IP adresy je zaregistrováno příliš mnoho účtů.'; }
                    } else { echo 'Litujeme, ale registrace selhala (chyba: ' . $db->errno . ' - ' . $db->error . ').'; }
                } else { echo 'Litujeme, ale Vámi zadaná hesla se neshodují, zadejte je prosím znovu.'; }
            } else { echo 'Litujeme, ale Vámi zadaný nick již někdo používá, zadejte prosím jiný.'; };
        } else { echo 'Litujeme, ale registrace selhala (chyba: ' . $db->errno . ' - ' . $db->error . ').'; }
        $db->close();
    } else { echo 'Litujeme, nepodařilo se připojit k databázi (chyba: ' . $db->connect_errno . ' - ' . $db->connect_error . ').'; }
}
 

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 13:09
od zdenda204
Super, ty ify se mi líbí :)
Ještě na netu vyčtu něco o tom bindování abych to pochopil a dodělám ten hash :)
Jen tam máš takovou chybku :) Neukončil jsi PHP :P

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 14:20
od nejento
On ti udělá takovouhle skvělou výpomoc a ty jsi ještě drzej...

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 15:35
od Mysteria
To bindování je jenom součást MySQLi prepared statements, tedy toho, co zabraňuje SQL injection bez nutnosti používat nějaký escapovací funkce, o všechno se to postará 'samo'.
Co se týká neukončenýho PHPka, tak to není chyba, nýbrž doporučovaná věc, správně by se pokud za tím nenásleduje ještě nějaký HTMLko, by se ukončovací značka psát neměla. :)

nejento: Já mu oplácím to, jak kritizuje všechny ostatní, ať si taky užije. :P

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 17:15
od zdenda204
Já nikoho nekritizuju :D
Ukaž pět příspěvků, kde tedy někoho kritizuju :D
Ale tak, já jsem za to vděčnej, aspoň se zase něco přiučím :P Jen to nemusel dávat veřejně :D

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 19:32
od Mysteria
Právě že musel, jenom počkej, až se zejtra ráno podívám na ten login, to bude určitě ještě větší trapas, jako bych to už viděl. :P :mrgreen:

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 23:11
od nejento
zdendo taky pak budu hledat, ano? :D

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 22 črc 2013, 23:32
od zdenda204
Hoši, vy mě tak štvete :D
Radši pochvalu kdyby jste napsali, nebo v čem se zlepšit a tak :) (Mysty už má splněno :))

Re: [PHP] AuthMe - WebRegistrace a WebLogin

Napsal: 04 srp 2013, 18:02
od Dawe5
Dočkáme se ? :D