Knickers has a built-in login managment mechanism called LoginManager. If you'd like to use it, you will need some form of users table and a corresponding Thing class. A sample users table structure looks like this for PostgreSQL, but you can use any table that has, at a minimum, an id field, a login field (usually EMAIL or USERNAME), and a password field.
create table users ( user_id serial, user_class int, user_perm int, user_status int, email varchar, password varchar, first_name varchar, last_name varchar, locale varchar, updated timestamp, last_login timestamp, prev_login timestamp, created timestamp, primary key(user_id), unique(email) );
Or if you prefer MySQL:
create table users ( user_id int auto_increment, user_class int, user_perm int, user_status int, email varchar(64), password varchar(32), first_name varchar(32), last_name varchar(32), locale varchar(8), updated timestamp, last_login timestamp, prev_login timestamp, created timestamp, primary key(user_id), unique(email) );
You will also need to define the LOGINMANAGER constants in your knickers_app.cfg.php file.
Now it's easy to make your application able to accept logins. Add this to your template:
{LOGINMANAGER.VIEWER_LOGGED_IN.BOOL?|VANISH|}
<form method='POST' action='{PHP_SELF}' name='login'>
<p>
{LOGINMANAGER.LOGINFIELD.ERROR} email: {LOGINMANAGER.LOGINFIELD.INPUT}
{LOGINMANAGER.PASSWORD.ERROR} password: {LOGINMANAGER.PASSWORD.INPUT}
<input type='submit' value='login'>
</p>
</form>
{/LOGINMANAGER.VIEWER_LOGGED_IN.BOOL?|VANISH|}
{LOGINMANAGER.VIEWER_LOGGED_IN.BOOL?:|VANISH|}
<p>
Welcome <strong>{VIEWER.FIRST_NAME} {VIEWER.LAST_NAME}</strong>
<a href='/page/Logout/page'>Logout</a>
</p>
{/LOGINMANAGER.VIEWER_LOGGED_IN.BOOL?:|VANISH|}
Assuming you've created some entries in your user table, those users should now be able to "log in" to your site.