Zatím testovací příspěvek…
Takto nějak vypadá můj script pro registraci uživatelů napsaný ve frameworku NETTE a databázovou vrstvou dibi.
<?php require 'Nette.minified/loader.php'; require 'dibi/dibi.php'; // nastavime dibi dibi::connect(array( 'driver' => 'mysql', 'host' => 'localhost', 'username' => 'root', 'password' => '****', 'database' => 'db_name', 'charset' => 'utf8', )); function myValidator($item) { $result = dibi::query('SELECT [id] FROM [user] WHERE [nick]=%s', $item->getValue()); return (count($result) === 0); } $form = new Form; echo '<h1>Registrace</h1>'; $form->addText('nick', 'Nick (přihlašovací jméno):*') ->addRule(Form::FILLED, 'Zadejte prosím nick.') ->addRule('myValidator', 'Tento nick už má někdo registrován.'); $form->addPassword('pass', 'Heslo:*') ->addRule(Form::FILLED, 'Zadejte prosím heslo.') ->addRule(Form::MIN_LENGTH, 'Zadané heslo je příliš krátké, zvolte si heslo alespoň o %d znacích.', 5); $form->addPassword('pass2', 'Heslo (pro kontrolu):*') ->addRule(Form::FILLED, 'Zadejte heslo ještě jednou pro kontrolu.') ->addRule(Form::EQUAL, 'Zadané hesla se neshodují.', $form['pass']); $form->addText('email', 'E-mail:*') ->setEmptyValue('@') ->addRule(Form::EMAIL, 'Zadejte prosím platný e-mail.'); $form->addText('icq', 'ICQ:'); $form->addText('skype', 'Skype:'); $form->addRadioList('news', 'Odebírat novinky:', array('ano' => 'ano', 'ne' => 'ne')); $form->addText('link', 'Link:')->addCondition(Form::FILLED) ->addRule(Form::URL, 'Link nemá formát webové adresy.'); $form->addSubmit('send', 'Registrovat'); if ($form->isSubmitted()) { if ($form->isValid()) { $values = $form->getValues(); // vytvoření kontrolního hashe $kontrolni_link = sha1($values['nick'] . time() . 'e743dd075ff52c2'); unset($values['pass2']); // druhé heslo neukládáme $values['retik'] = $kontrolni_link; dibi::query('INSERT INTO [user]', $values); #mail pro kontrolu $mail = new Mail; $mail->setFrom('Registrace na webu xxx.com <info@xxx.com>'); $mail->addTo($values['email']); $mail->setSubject('Registrace na webu xxx.com'); $mail->setBody("Děkujeme za Váši registraci. Potvrďte prosím na adrese http://xxx.com/registrace.php?kontrola={$kontrolni_link}"); $mail->send(); echo 'registrace dokončena.'; } else { $form->setDefaults(); echo $form; } } else { $form->setDefaults(array('news' => 'ne')); echo $form; } ?> |