SQL-based authentication: Difference between revisions
Content added Content deleted
(Fixed Mathematica) |
m (Added Sidef) |
||
Line 863: | Line 863: | ||
"user successfully created and authenticated!\n" print</lang> |
"user successfully created and authenticated!\n" print</lang> |
||
=={{header|Sidef}}== |
|||
{{trans|Perl}} |
|||
<lang ruby>require('DBI') |
|||
# returns a database handle configured to throw an exception on query errors |
|||
func connect_db(dbname, host, user, pass) { |
|||
var db = %s<DBI>.connect("dbi:mysql:#{dbname}:#{host}", user, pass) |
|||
db || die (global DBI::errstr) |
|||
db{:RaiseError} = 1 |
|||
db |
|||
} |
|||
# if the user was successfully created, returns its user id. |
|||
# if the name was already in use, returns nil. |
|||
func create_user(db, user, pass) { |
|||
var salt = "C*".pack(16.of { 256.irand }...) |
|||
db.do( |
|||
"INSERT IGNORE INTO users (username, pass_salt, pass_md5) |
|||
VALUES (?, ?, unhex(md5(concat(pass_salt, ?))))", nil, user, salt, pass |
|||
) ? db{:mysql_insertid} : nil |
|||
} |
|||
# if the user is authentic, returns its user id. otherwise returns nil. |
|||
func authenticate_user(db, user, pass) { |
|||
db.selectrow_array("SELECT userid FROM users WHERE |
|||
username=? AND pass_md5=unhex(md5(concat(pass_salt, ?)))", |
|||
nil, user, pass |
|||
) |
|||
}</lang> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |