[Linpha-cvs] SF.net SVN: linpha: [4484] trunk/linpha2
Status: Inactive
Brought to you by:
bzrudi
From: <fan...@us...> - 2006-04-06 21:37:33
|
Revision: 4484 Author: fangehrn Date: 2006-04-06 14:37:14 -0700 (Thu, 06 Apr 2006) ViewCVS: http://svn.sourceforge.net/linpha/?rev=4484&view=rev Log Message: ----------- * added user login system Modified Paths: -------------- trunk/linpha2/ChangeLog trunk/linpha2/install/sql/sql.mysql.php trunk/linpha2/install/sql/sql.tables.php trunk/linpha2/install/step11_finish.php trunk/linpha2/lib/classes/linpha.functions.php trunk/linpha2/lib/classes/linpha.sql.class.php trunk/linpha2/templates/default/global.html.php Modified: trunk/linpha2/ChangeLog =================================================================== --- trunk/linpha2/ChangeLog 2006-04-04 21:03:53 UTC (rev 4483) +++ trunk/linpha2/ChangeLog 2006-04-06 21:37:14 UTC (rev 4484) @@ -1,3 +1,6 @@ +2006-04-06 flo + * added user login system + 2006-04-04 flo * improving some templates Modified: trunk/linpha2/install/sql/sql.mysql.php =================================================================== --- trunk/linpha2/install/sql/sql.mysql.php 2006-04-04 21:03:53 UTC (rev 4483) +++ trunk/linpha2/install/sql/sql.mysql.php 2006-04-06 21:37:14 UTC (rev 4484) @@ -23,88 +23,99 @@ $sql_tables = array( "CREATE TABLE ".$linpha_tables['config']." ( ". - "`id` smallint(5) unsigned NOT NULL auto_increment, " . - "`option_name` varchar(50) NOT NULL default '', " . - "`option_value` varchar(100) NOT NULL default '', " . - "`userid` mediumint(8) unsigned default '0', " . - "PRIMARY KEY (`id`) " . + "id INT NOT NULL AUTO_INCREMENT, " . + "option_name VARCHAR(255) NOT NULL default '', " . + "option_value VARCHAR(255) NOT NULL default '', " . + "userid INT default '0', " . + "override INT default '0', " . + "PRIMARY KEY (id) " . ")", + "CREATE TABLE ".$linpha_tables['users']." ( ". + "id INT NOT NULL AUTO_INCREMENT , " . + "username VARCHAR(255) NOT NULL , " . + "password VARCHAR(32) NOT NULL , " . + "email VARCHAR(255) NOT NULL , " . + "display_name VARCHAR(255) NOT NULL , " . + "stats_downloads INT NOT NULL , " . + "stats_downloads_size INT NOT NULL, " . + "PRIMARY KEY (id) " . + ")", "CREATE TABLE ".$linpha_tables['groups']." ( ". - "`id` int(11) NOT NULL auto_increment, " . - "`name` varchar(100) NOT NULL default '', " . - "PRIMARY KEY (`id`) " . + "id INT NOT NULL AUTO_INCREMENT, " . + "name VARCHAR(100) NOT NULL default '', " . + "PRIMARY KEY (id) " . ")", "CREATE TABLE ".$linpha_tables['permissions']." ( ". - "`id` int(11) NOT NULL auto_increment, " . - "`photos_id` int(11) NOT NULL default '0', " . - "`perm_type` varchar(255) NOT NULL default '0', " . - "`permission` varchar(255) NOT NULL default '', " . - "PRIMARY KEY (`id`) " . + "id INT NOT NULL AUTO_INCREMENT, " . + "photos_id INT NOT NULL default '0', " . + "perm_type VARCHAR(255) NOT NULL default '0', " . + "permission VARCHAR(255) NOT NULL default '', " . + "PRIMARY KEY (id) " . ")", "CREATE TABLE ".$linpha_tables['photos']." ( ". - "`id` int(11) NOT NULL auto_increment, " . - "`parent_id` int(11) NOT NULL default '0', " . - "`img_type` int(11) NOT NULL default '0', " . - "`name` text NOT NULL, " . - "`md5sum` varchar(40) NOT NULL default '', " . - "`time_add` int(11) NOT NULL default '0', " . - "`time_mod` int(11) NOT NULL default '0', " . - "`time_exif` int(11) NOT NULL default '0', " . - "`stats_numbers` int(11) NOT NULL default '0', " . - "`stats_views` int(11) NOT NULL default '0', " . - "`stats_downloads` int(11) NOT NULL default '0', " . - "PRIMARY KEY (`id`) " . + "id INT NOT NULL AUTO_INCREMENT, " . + "parent_id INT NOT NULL default '0', " . + "img_type INT NOT NULL default '0', " . + "name text NOT NULL, " . + "md5sum VARCHAR(40) NOT NULL default '', " . + "time_add INT NOT NULL default '0', " . + "time_mod INT NOT NULL default '0', " . + "time_exif INT NOT NULL default '0', " . + "stats_numbers INT NOT NULL default '0', " . + "stats_views INT NOT NULL default '0', " . + "stats_downloads INT NOT NULL default '0', " . + "PRIMARY KEY (id) " . ")", "CREATE TABLE ".$linpha_tables['meta_fields']." ( ". - "id int(11) NOT NULL auto_increment, " . - "name varchar(255) NOT NULL default '', " . - "field_type int(11) NOT NULL default '0', " . - "flags int(11) NOT NULL default '0', " . - "PRIMARY KEY (id) " . + "id INT NOT NULL AUTO_INCREMENT, " . + "name VARCHAR(255) NOT NULL default '', " . + "field_type INT NOT NULL default '0', " . + "flags INT NOT NULL default '0', " . + "PRIMARY KEY (id) " . ")", "CREATE TABLE ".$linpha_tables['meta_category']." ( ". - "id int(11) NOT NULL auto_increment, " . - "field_id int(11) NOT NULL default '0', " . - "name varchar(255) NOT NULL default '', " . - "isprivate int(11) default NULL, " . - "PRIMARY KEY (id) " . + "id INT NOT NULL AUTO_INCREMENT, " . + "field_id INT NOT NULL default '0', " . + "name VARCHAR(255) NOT NULL default '', " . + "isprivate INT default NULL, " . + "PRIMARY KEY (id) " . ")", "CREATE TABLE ".$linpha_tables['meta_exif']." ( ". - "md5sum varchar(32) NOT NULL default '', " . - "datetimeoriginal varchar(255) default NULL, " . - "make varchar(255) default NULL, " . - "model varchar(255) default NULL, " . - "artist varchar(255) default NULL, " . - "copyright varchar(255) default NULL, " . - "aperturevalue varchar(255) default NULL, " . - "shutterspeedvalue varchar(255) default NULL, " . - "exposuretime varchar(255) default NULL, " . - "isospeedratings varchar(255) default NULL, " . - "flash varchar(255) default NULL, " . - "focallength varchar(255) default NULL, " . - "fnumber varchar(255) default NULL, " . + "md5sum VARCHAR(32) NOT NULL default '', " . + "datetimeoriginal VARCHAR(255) default NULL, " . + "make VARCHAR(255) default NULL, " . + "model VARCHAR(255) default NULL, " . + "artist VARCHAR(255) default NULL, " . + "copyright VARCHAR(255) default NULL, " . + "aperturevalue VARCHAR(255) default NULL, " . + "shutterspeedvalue VARCHAR(255) default NULL, " . + "exposuretime VARCHAR(255) default NULL, " . + "isospeedratings VARCHAR(255) default NULL, " . + "flash VARCHAR(255) default NULL, " . + "focallength VARCHAR(255) default NULL, " . + "fnumber VARCHAR(255) default NULL, " . "jpegcomment VARCHAR(255) default NULL, " . - "PRIMARY KEY (md5sum), " . + "PRIMARY KEY (md5sum), " . "KEY md5sum (md5sum) " . ")", "CREATE TABLE ".$linpha_tables['meta_iptc']." ( ". - "md5sum varchar(32) NOT NULL default '', " . - "PRIMARY KEY (md5sum), " . + "md5sum VARCHAR(32) NOT NULL default '', " . + "PRIMARY KEY (md5sum), " . "KEY md5sum (md5sum) " . ")", "CREATE TABLE ".$linpha_tables['meta_comments']." ( ". - "id int(11) NOT NULL auto_increment, " . - "`time` int(11) NOT NULL default '0', " . - "md5sum varchar(32) NOT NULL default '', " . - "author varchar(255) NOT NULL default '', " . - "`comment` text NOT NULL, " . - " PRIMARY KEY (id) " . + "id INT NOT NULL AUTO_INCREMENT, " . + "time INT NOT NULL default '0', " . + "md5sum VARCHAR(32) NOT NULL default '', " . + "author VARCHAR(255) NOT NULL default '', " . + "comment text NOT NULL, " . + " PRIMARY KEY (id) " . ")", "CREATE TABLE ".$linpha_tables['meta_data']." ( ". - "id int(11) NOT NULL auto_increment, " . - "field_id int(11) NOT NULL default '0', " . - "md5sum varchar(32) NOT NULL default '', " . - "meta_data varchar(255) NOT NULL default '', " . + "id INT NOT NULL AUTO_INCREMENT, " . + "field_id INT NOT NULL default '0', " . + "md5sum VARCHAR(32) NOT NULL default '', " . + "meta_data VARCHAR(255) NOT NULL default '', " . "PRIMARY KEY (id) " . ")" ); Modified: trunk/linpha2/install/sql/sql.tables.php =================================================================== --- trunk/linpha2/install/sql/sql.tables.php 2006-04-04 21:03:53 UTC (rev 4483) +++ trunk/linpha2/install/sql/sql.tables.php 2006-04-06 21:37:14 UTC (rev 4484) @@ -23,6 +23,7 @@ $linpha_tables = Array( "config" => "config", + "users" => "users", "groups" => "groups", "permissions" => "permissions", "photos" => "photos", Modified: trunk/linpha2/install/step11_finish.php =================================================================== --- trunk/linpha2/install/step11_finish.php 2006-04-04 21:03:53 UTC (rev 4483) +++ trunk/linpha2/install/step11_finish.php 2006-04-06 21:37:14 UTC (rev 4484) @@ -54,16 +54,18 @@ exit(1); } - /*echo "Adding linpha admin user... "; - //$result = $linpha->db->Execute("INSERT INTO ".PREFIX."users (nickname, password, email, lang, level, groups, fullname) " . - // "VALUES('".$linpha->sql->linAddslashes($_POST['admin_name'])."','".md5($_POST['admin_pass'])."','".$linpha->sql->linAddslashes($_POST['admin_email'])."','',10, ';1;','')"); + echo "Adding linpha admin user... "; + $result = $linpha->db->Execute("INSERT INTO ".PREFIX."users (username, password, email) VALUES (" . + "'".LinSql::linAddslashes($_POST['admin_name'])."', " . + "'".md5($_POST['admin_pass'])."', " . + "'".LinSql::linAddslashes($_POST['admin_email'])."')"); + if(!$result) { echo failed_msg(); } else { echo success_msg(); } - */ /** * save thumbnails default size Modified: trunk/linpha2/lib/classes/linpha.functions.php =================================================================== --- trunk/linpha2/lib/classes/linpha.functions.php 2006-04-04 21:03:53 UTC (rev 4483) +++ trunk/linpha2/lib/classes/linpha.functions.php 2006-04-06 21:37:14 UTC (rev 4484) @@ -224,4 +224,65 @@ } return $str; } + +/** +* Set autologin-cookie +* +* can only be set once per request +* must be set before a header is already sent +* +* @uses LinSql::startSession +*/ +function set_linpha_cookie($userid, $md5pw) +{ + /** + * calculate correct path for cookie + * needs always to be the linpha root folder + * for example: http://localhost/linpha/index.php -> must be /linpha/ + */ + /** + * get directory and append needed ending slash + */ + $php_self_dir = dirname($_SERVER['PHP_SELF']); + $php_self_dir .= '/'; + + if(LINPHA_DIR != '.') + { + if(LINPHA_DIR == '..') + { + $num = 1; + } + else + { + $num = 1 + substr_count(TOP_DIR, '/'); + } + + /** + * remove directories + */ + for( ; $num > 0 ; $num--) + { + /** + * remove last slash + */ + $php_self_dir = substr($php_self_dir,0,strlen($php_self_dir)-1); + + /** + * get last slash + */ + $pos = strrpos($php_self_dir,'/'); + + /** + * remove last directory + */ + $php_self_dir = substr($php_self_dir,0,$pos+1); + } + } + + /** + * set the cookie + */ + setcookie("linpha_userid", $userid, (time() + 60 * 60 * 24 * 31), $php_self_dir); + setcookie("linpha_password", $md5pw, (time() + 60 * 60 * 24 * 31), $php_self_dir); +} ?> Modified: trunk/linpha2/lib/classes/linpha.sql.class.php =================================================================== --- trunk/linpha2/lib/classes/linpha.sql.class.php 2006-04-04 21:03:53 UTC (rev 4483) +++ trunk/linpha2/lib/classes/linpha.sql.class.php 2006-04-06 21:37:14 UTC (rev 4484) @@ -168,23 +168,31 @@ /** * read cookie - */ + */ if($this->config->value['sys_user_autologin']) { if(!isset($_SESSION['user_name']) && isset($_COOKIE["linpha_userid"])&&$_COOKIE["linpha_userid"]!=""&& isset($_COOKIE["linpha_password"])&&$_COOKIE["linpha_password"]!="") { - $query_username = $GLOBALS['linpha']->db->Execute("SELECT nickname, level, groups, fullname FROM ".PREFIX."users ". - "WHERE ID = '".linSql::linAddslashes($_COOKIE["linpha_userid"])."' ". - "AND password = '".linSql::linAddslashes($_COOKIE["linpha_password"])."'"); - if($row = $query_username->FetchRow()) + $query = $GLOBALS['linpha']->db->Execute("SELECT username, display_name FROM ".PREFIX."users ". + "WHERE id = '".LinSql::linAddslashes($_COOKIE["linpha_userid"])."' ". + "AND password = '".LinSql::linAddslashes($_COOKIE["linpha_password"])."'"); + if($data = $query->FetchRow()) { - $_SESSION["REMOTE_ADDR"] = @$_SERVER["REMOTE_ADDR"]; - $_SESSION["user_name"] = $row[0]; - $_SESSION["user_pass"] = $_COOKIE["linpha_password"]; - //$_SESSION["user_level"] = $row[1]; // Store user level - $_SESSION["user_groups"] = $row[2]; // Store user group membership - $_SESSION["user_fullname"] = (empty($row[3])) ? $row[0] : $row[3]; // Store user fullname + //linpha_log('login','notice','User '.$_POST['user_name'].": successfully logged in."); + linSysLog(i18n("Successfully Logged In!<br />")); + + /** + * store user stuff + */ + $_SESSION['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR']; + $_SESSION['user_name'] = $data['username']; + $_SESSION['user_id'] = $_COOKIE["linpha_userid"]; + + /** + * Store users display name. If display name is blank - store username. + */ + $_SESSION['user_displayname'] = (empty($data['display_name'])) ? $_SESSION['user_name'] : $data['display_name']; } else // wrong cookie { @@ -195,21 +203,107 @@ } /** - * check login + * check login and fill session */ - if(isset($_SESSION['user_name']) && isset($_SESSION['user_pass'])) + if( isset($_POST['cmd']) ) { - $this->passed=true; - if (@$_SESSION["REMOTE_ADDR"]!=@$_SERVER["REMOTE_ADDR"]) + if($_POST['cmd']=='logout') { - // ip check wrong! + /** + * @todo + */ + //linpha_log('login','notice','User '.@$_SESSION['user_name'].": logged out"); + //$this->passed=false; + $_SESSION = array(); // delete all session data + session_destroy(); // destroy session + + if(isset($_COOKIE["linpha_userid"])) { + setcookie("linpha_userid"); // delete cookie linpha_userid + setcookie("linpha_password"); // delete cookie linpha_password + } + } + elseif($_POST['cmd']=='login') + { + if( !isset($_POST['username']) OR !isset($_POST['password']) OR empty($_POST['username']) OR empty($_POST['password'])) + { + linSysLog(i18n("Please Fill In All Fields!")); + } + else + { + /** + * get user from DB + */ + $data = $GLOBALS['linpha']->db->GetRow("SELECT id, username, password, id, display_name FROM ".PREFIX."users ". + "WHERE username='".LinSql::linAddslashes($_POST['username'])."'"); + + if( $_POST['username'] == $data['username'] && md5($_POST['password']) == $data['password']) + { + /** + * Log sucessfull login + * @todo + */ + //linpha_log('login','notice','User '.$_POST['user_name'].": successfully logged in."); + linSysLog(i18n("Successfully Logged In!<br />")); + + /** + * store user stuff + */ + $_SESSION['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR']; + $_SESSION['user_name'] = $_POST['username']; + $_SESSION['user_id'] = $data['id']; + + /** + * Store users display name. If display name is blank - store username. + */ + $_SESSION['user_displayname'] = (empty($data['display_name'])) ? $_SESSION['user_name'] : $data['display_name']; + + if(isset($_POST['rememberme'])) { + set_linpha_cookie($data['id'], md5($_POST['password'])); + } + + /** + * some security stuff + */ + unset($_POST['password']); + unset($_REQUEST['password']); + } + else + { + /** + * Log failed login + * @todo + */ + //linpha_log('login','error','User '.$_POST['user_name'].": login failed!"); + + linSysLog(i18n("Login Failed!<br />")); + } + } + } + } + + /** + * set passed + * check remote_addr + */ + if(isset($_SESSION['user_id']) && isset($_SESSION['user_name']) && !empty($_SESSION['user_id']) && !empty($_SESSION['user_name']) ) + { + if( isset($_SERVER['REMOTE_ADDR']) && ($_SESSION["REMOTE_ADDR"] != $_SERVER["REMOTE_ADDR"]) ) + { + /** + * ip check wrong! + */ $this->passed=false; - unset($_SESSION['user_name'], $_SESSION['user_pass'], $_SESSION['user_groups'], $_SESSION['user_fullname']); + $_SESSION = array(); session_destroy(); } - - } else { + else + { + $this->passed=true; + } + } + else + { $this->passed=false; } Modified: trunk/linpha2/templates/default/global.html.php =================================================================== --- trunk/linpha2/templates/default/global.html.php 2006-04-04 21:03:53 UTC (rev 4483) +++ trunk/linpha2/templates/default/global.html.php 2006-04-06 21:37:14 UTC (rev 4484) @@ -93,9 +93,21 @@ <ul> <li> <div> - <?php echo i18n("Username"); ?>: <input type="text" name="username" value="" /><br /> - <?php echo i18n("Password"); ?>: <input type="password" name="password" value="" /><br /> - <input type="submit" name="submit" value="<?php echo i18n("Login"); ?>" /> + <form action="<?php echo $GLOBALS['linpha']->template->URL_full; ?>" method="POST"> + <?php if($GLOBALS['linpha']->sql->passed) { ?> + <!-- logout infos --> + <?php echo i18n("You Are Currently Logged In As:").' '.$_SESSION['user_name'].' ('.$_SESSION['user_displayname'].')<br />'; ?> + <input type="hidden" name="cmd" value="logout" /> + <input type="submit" name="submit" value="<?php echo i18n("Logout"); ?>" /> + <?php } else { ?> + <!-- login infos --> + <?php echo i18n("Username"); ?>: <input type="text" name="username" value="" /><br /> + <?php echo i18n("Password"); ?>: <input type="password" name="password" value="" /><br /> + <?php if($GLOBALS['linpha']->sql->config->value['sys_user_autologin']) { ?><input type="checkbox" name="rememberme" value="true" id="checkbox_remember" /><label for="checkbox_remember"><?php echo i18n("Remember Me"); ?></label><?php } ?> + <input type="hidden" name="cmd" value="login" /> + <input type="submit" name="submit" value="<?php echo i18n("Login"); ?>" /> + <?php } ?> + </form> </div> </li> </ul> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |