Registrace uživatelů pomocí NETTE a DIBI

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;
}
?>

10 komentářů u „Registrace uživatelů pomocí NETTE a DIBI

  1. Forkman

    Ahoj, jméno domény nemusíš mít v odesílání mailů natvrdo, stačí ho dynamycky vygenerovat pomocí $this->link() …

  2. admin Autor příspěvku

    Ahoj, zápis hesla?

    $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);
    ...
    dibi::query('INSERT INTO [user]', $values);
    

    Nebo přesně nechápu co myslíš?

  3. emanuel

    zdravim,
    chtel jsem se jenom zeptat jestli bys mohl postnout dokonceni registrace(ziskani parametr z linku atd).protoze jak se snazim tak jse snaznim porad nevim nato dojit…

  4. Pingback: Jak na potvrzení registrace v NETTE? | Jan Kocmánek bloguje !!!

  5. jackm

    Aha, tak ono se to neodeslalo kvůli odkazu, tak na to kašlu, máš ICQ, nebo Skype? Rád bych se stebou o jednom tutoriálu z zdrojak pobavil. Díky

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..