Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>if the only thing you want to do is user management then you may use some libraries ( classes ) instead of full framework, because there is nothing ( as far as I know ) called framework for user management only.. I'm working now to make a framework called aiki, and it's gpl, so here is the class I wrote for user management it may help you</p> <pre><code>&lt;?php class membership { var $permissions; var $full_name; var $username; var $group_level; function membership(){ session_start(); } function login ($username, $password){ global $db, $layout; $password = stripslashes($password); $password = md5(md5($password)); $get_user = $db-&gt;get_row("SELECT * FROM aiki_users where username='".$username."' and password='".$password."' limit 1"); if($get_user-&gt;username == $username and $get_user-&gt;password == $password){ $host_name = $_SERVER['HTTP_HOST']; $user_ip = $this-&gt;get_ip(); $usersession = $this-&gt;generate_session(100); $_SESSION['aiki'] = $usersession; $insert_session = $db-&gt;query("INSERT INTO aiki_users_sessions (`session_id`,`user_id`,`user_name`,`session_date`,`user_session`, `user_ip`) VALUES ('','$get_user-&gt;userid','$username',NOW(),'$usersession','$user_ip')"); $update_acces = $db-&gt;query("UPDATE `aiki_users` SET `last_login`= NOW(),`last_ip`='$user_ip', `logins_number`=`logins_number`+1 WHERE `userid`='$get_user-&gt;userid' LIMIT 1"); } else{ } } function isUserLogged ($userid){ global $db; $user_session = $db-&gt;get_var("SELECT user_id FROM aiki_users_sessions where user_session='$_SESSION[aiki]'"); if ($user_session == $userid){ return true; }else{ return false; } } function getUserPermissions ($user){ global $db; $user = mysql_escape_string($user); $user = $db-&gt;get_row("SELECT userid, usergroup, full_name, username FROM aiki_users where username='$user'"); if ($user-&gt;userid and $this-&gt;isUserLogged($user-&gt;userid)){ $group_permissions = $db-&gt;get_row("SELECT group_permissions, group_level FROM aiki_users_groups where id='$user-&gt;usergroup'"); $this-&gt;full_name = $user-&gt;full_name; $this-&gt;username = $user-&gt;username; $this-&gt;group_level= $group_permissions-&gt;group_level; }else{ $this-&gt;permissions = ""; } $this-&gt;permissions = $group_permissions-&gt;group_permissions; } //function from Membership V1.0 //http://AwesomePHP.com/gpl.txt function get_ip(){ $ipParts = explode(".", $_SERVER['REMOTE_ADDR']); if ($ipParts[0] == "165" &amp;&amp; $ipParts[1] == "21") { if (getenv("HTTP_CLIENT_IP")) { $ip = getenv("HTTP_CLIENT_IP"); } elseif (getenv("HTTP_X_FORWARDED_FOR")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("REMOTE_ADDR")) { $ip = getenv("REMOTE_ADDR"); } } else { return $_SERVER['REMOTE_ADDR']; } return $ip; } //Generate session function generate_session($strlen){ return substr(md5(uniqid(rand(),true)),1,$strlen); } function LogOut(){ global $db, $layout; $domain = $_SERVER['HTTP_HOST']; $path = $_SERVER['SCRIPT_NAME']; $queryString = $_SERVER['QUERY_STRING']; $thisurlnologout = "http://" . $domain . $path . "?" . $queryString; $thisurlnologout = str_replace("&amp;operators=logout", "", $thisurlnologout); $make_offline = $db-&gt;query("UPDATE `aiki_guests` SET `is_online`='0' WHERE `guest_session`='$_SESSION[aiki]' LIMIT 1"); $delete_session_data = $db-&gt;query("DELETE FROM aiki_users_sessions where user_session='$_SESSION[aiki]'"); unset($_SESSION['aiki']); session_destroy(); session_unset(); $layout-&gt;html_output .= '&lt;META HTTP-EQUIV="refresh" content="1;URL=http://'.$domain.$path.'"&gt;&lt;center&gt;&lt;b&gt;Logging out&lt;/b&gt;&lt;/center&gt;'; //die(); } } ?&gt; </code></pre> <p>and here is a simple sql dump for that</p> <pre><code>CREATE TABLE IF NOT EXISTS `aiki_guests` ( `userid` int(9) unsigned NOT NULL auto_increment, `first_login` datetime NOT NULL, `last_hit` datetime NOT NULL, `last_hit_unix` int(11) NOT NULL, `ip` varchar(40) NOT NULL, `last_ip` varchar(40) NOT NULL, `username` varchar(255) NOT NULL, `guest_session` varchar(255) NOT NULL, `hits` int(11) NOT NULL, `is_online` int(11) NOT NULL, PRIMARY KEY (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=54 ; -- -------------------------------------------------------- -- -- Table structure for table `aiki_users` -- CREATE TABLE IF NOT EXISTS `aiki_users` ( `userid` int(9) unsigned NOT NULL auto_increment, `username` varchar(100) NOT NULL default '', `full_name` varchar(255) NOT NULL, `country` varchar(255) NOT NULL, `sex` varchar(25) NOT NULL, `job` varchar(255) NOT NULL, `password` varchar(100) NOT NULL default '', `usergroup` int(10) NOT NULL default '0', `email` varchar(100) NOT NULL default '', `avatar` varchar(255) NOT NULL, `homepage` varchar(100) NOT NULL default '', `first_ip` varchar(40) NOT NULL default '0', `first_login` datetime NOT NULL, `last_login` datetime NOT NULL, `last_ip` varchar(40) NOT NULL, `user_permissions` text NOT NULL, `maillist` int(1) NOT NULL, `logins_number` int(11) NOT NULL, `randkey` varchar(255) NOT NULL, `is_active` int(5) NOT NULL, PRIMARY KEY (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; -- -------------------------------------------------------- -- -- Table structure for table `aiki_users_groups` -- CREATE TABLE IF NOT EXISTS `aiki_users_groups` ( `id` int(3) NOT NULL auto_increment, `app_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `group_permissions` varchar(255) NOT NULL, `group_level` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; -- -------------------------------------------------------- -- -- Table structure for table `aiki_users_sessions` -- CREATE TABLE IF NOT EXISTS `aiki_users_sessions` ( `session_id` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL, `user_name` varchar(255) NOT NULL, `session_date` datetime NOT NULL, `user_session` varchar(255) NOT NULL, `user_ip` varchar(100) NOT NULL, PRIMARY KEY (`session_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; </code></pre> <p>now all you need is to add the db and create users inside it remember that you will have to md5 the password twice, like:</p> <pre><code>$password = "what ever"; $password = md5(md5($password)); </code></pre> <p>and to use this class: build a form then</p> <p>$membership = new membership();</p> <p>Login: $membership->login($_POST['username'], $_POST['password']);</p> <p>and you can build groups inside the groups table then</p> <p>$membership->getUserPermissions($username);</p> <p>then you can do thing based on the returned $membership->permissions value like :</p> <p>switch ($membership->permissions){</p> <p>}</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload