lucaswxp 22 Denunciar post Postado Abril 6, 2009 Primeiro tuto aqui http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Bom, acho que aqui é a seção certa ^^ O codigo vai meio que se auto explicando com comentarios entao vou ensinar como instalar... È um sistema de usuarios com direito a: Adicionar usuario; Editar proprio perfil; Suspender usuarios; Ativar usuarios; Deletar usuarios; Adicionar usuarios; Primeiramente vamos criar um db com o nome de 'login_sistema': CREATE DATABASE IF NOT EXISTS `login_sistema` Agora vamos criar a tabela 'usuarios': CREATE TABLE IF NOT EXISTS `usuarios` ( `id` int(6) NOT NULL auto_increment, `nome` varchar(62) NOT NULL, `login` varchar(12) NOT NULL, `senha` char(32) NOT NULL, `email` varchar(30) NOT NULL, `ativo` int(1) NOT NULL, PRIMARY KEY (`id`) ) Inserimos um usuario com o login de 'teste' e senha criptografada em md5 com o valor de 'teste': INSERT INTO `usuarios` VALUES (NULL,'besha','teste','698dc19d489c4e4db73e28a713eab07b ','asd@hota.com',1) No arquivo config.php altere o array $path['classes'] para o destino de onde esta a pasta classes Altere $path['caminhoraiz'] para o caminho raiz do sistema Altere $path['raiz'] para o nome do arquivo 'raiz' (exemplo, você colocou como nome a pasta que esta o script de users 'login' entao ficará assim: logain/index.php) Altere o array dados de acordo com seu user e senha do mysql o padrao esta como: servidor: localhost user: root senha: (vazia) config.php <?php /* * Sistema criado por 'Lucas Pelegrino' * Email: lucas_wxp@hotmail.com * Não conhece alguma função? http://br.php.net/ da uma pesquisadinha;D */ if (basename($_SERVER["PHP_SELF"]) == "config.php") header ("location: index.php"); $path = array(); // Caminho da pasta classes $path['classes'] = "D:/EasyPHP/www/sistema_login/classes/"; // Caminho da pasta raiz $path['caminhoraiz'] = "D:/EasyPHP/www/sistema_login"; // Nome do arquivo raiz $path['raiz'] = "sistema_login/index.php"; // AUTOLOAD inclui as funções na pasta classes/ sem precisar utilizar include manualmente function __autoload ($class){ global $path; require_once ($path['classes'] . $class . ".class.php"); } class mysql{ ########################### # Insera os dados do mysql# ########################### private $dados = array("servidor" => "localhost", "usuario" => "root", "senha" => "", "link_id" => NULL); function conecta (){ // Nos conectamos com o BD usando os dados da array $dados $this->dados["link_id"] = mysql_connect($this->dados["servidor"],$this->dados["usuario"],$this->dados["senha"]) or exit (mysql_error()); mysql_select_db("login_sistema") or exit (mysql_error()); } // Fechamos a conexão function desconecta (){ mysql_close($this->dados["link_id"]) or exit (mysql_error()); } } ?> index.php <?php define ("login_sis",1); include_once "config.php"; // Abre uma conexão com o banco de dados $mysql = new mysql(); $mysql->conecta(); $login = new login(); if (@$_GET['act'] == "loga"){ // Efetua login $login = new login(); $login->loga(); $mysql->desconecta(); } // Se ele ja tiver com as sessões registradas redireciona ele para o painel elseif ($login->logado() == true){ header ("location: admin/index.php"); } else { ?> <html> <head> <title>Sistema de Autenticação</title> </head> <body> <div style="width:400px;padding: 10px;border: 1px dotted #000;margin:0 auto;"> <h1>Administração</h1><br /> <form action="index.php?act=loga" method="POST"> Login: <input type="text" name="login" /><br /> Senha <input type="password" name="senha" /><br /> <input type="submit" value="Autenticar" /> </form> </div> </div> </body> </html> <?php } ?> loga.php <?php include_once "seguranca.php"; $mysql->conecta(); $login->loga(); $mysql->desconecta(); ?> seguranca.php <?php include_once "config.php"; // Abrimos uma conexão com o banco de dados $mysql = new mysql(); $mysql->conecta(); $login = new login(); // Se a função logado() retornar false oo "login_sis" não estiver definido (definimos no topo de cada pagina "index", isso ajuda a proteger as paginas já que só a queremos através de query-string) exibe mensagem de erro e encerra o script if ($login->logado() == false || !defined("login_sis")) exit("<strong style=\"color:red\";>Acesso restrito</strong>"); $mysql->desconecta(); ?> admin/index.php <?php define ("login_sis",1); // Arquivo protetor de pagina include_once "../seguranca.php"; include_once "../config.php"; if (@$_GET['act'] == "logout"){ $login = new login(); $login->logout(); } if (@$_GET['act'] == "editar" && @$_GET['act2'] == "perfil"){ include "perfil.php"; } if (@$_GET['act'] == "add" && @$_GET['act2'] == "users"){ include "usersadd.php"; } if (@$_GET['act'] == "editar" && @$_GET['act2'] == "users"){ include "users_edit.php"; } elseif (!isset($_GET['act'])) { ?> <html> <head> <title>Sistema de Autenticação</title> </head> <body> <div style="width:400px;padding: 10px;border: 1px dotted #000;margin:0 auto;"> <h1>Administração</h1><br /> <a href="index.php?act=editar&act2=perfil">Editar Perfil</a> | <a href="index.php?act=add&act2=users">Add usuarios</a> | <a href="index.php?act=editar&act2=users">Editar usuarios</a> | <a href="index.php?act=logout">Logout</a><br /> </div> </div> </body> </html> <?php } ?> admin/perfil.php <?php include_once "../seguranca.php"; include_once "../config.php"; $mysql->conecta(); $user = new user(); if (@$_GET['act'] == "editar" && @$_GET['act2'] == "perfil" && @$_GET['act3'] == "done"){ $user->alteraperfil(); } else { ?> <html> <head> <title>Sistema de Autenticação</title> </head> <body> <div style="width:400px;padding: 10px;border: 1px dotted #000;margin:0 auto;"> <h1>Administração</h1><br /> <a href="index.php?act=editar&act2=perfil">Editar Perfil</a> | <a href="index.php?act=add&act2=users">Add usuarios</a> | <a href="index.php?act=editar&act2=users">Editar usuarios</a> | <a href="index.php?act=logout">Logout</a><br /> <form action="index.php?act=editar&act2=perfil&act3=done" method="POST"> Nome: <input type="text" name="nome" value="<?php $user->pegaperfil("nome") ?>" /><br /> E-mail: <input type="text" name="email" value="<?php $user->pegaperfil("email") ?>" /><br /> Antiga senha (Opcional): <input type="password" name="senha" /><br /> Nova senha: <input type="password" name="newsenha" /><br /> <input type="submit" value="Alterar" /> </form> </div> </div> </body> </html> <?php } $mysql->desconecta(); ?> admin/users_edit.php <?php include_once "../seguranca.php"; include_once "../config.php"; $mysql->conecta(); $user = new user(); if (@$_GET['act'] == "editar" && @$_GET['act2'] == "users" && @$_GET['act3'] == "suspender"){ $user->suspender(); } elseif (@$_GET['act'] == "editar" && @$_GET['act2'] == "users" && @$_GET['act3'] == "ativar"){ $user->ativar(); } elseif (@$_GET['act'] == "editar" && @$_GET['act2'] == "users" && @$_GET['act3'] == "deletar"){ $user->deletar(); } else{ ?> <html> <head> <title>Sistema de Autenticação</title> </head> <body> <div style="width:400px;padding: 10px;border: 1px dotted #000;margin:0 auto;"> <h1>Administração</h1><br /> <a href="index.php?act=editar&act2=perfil">Editar Perfil</a> | <a href="index.php?act=add&act2=users">Add usuarios</a> | <a href="index.php?act=editar&act2=users">Editar usuarios</a> | <a href="index.php?act=logout">Logout</a><br /> <div style="margin-top: 10px;"> <?php echo $user->listar(); ?> </div> </div> </body> </html> <?php } $mysql->desconecta(); ?> admin/usersadd.php <?php include_once "../seguranca.php"; include_once "../config.php"; $mysql->conecta(); $user = new user(); if (@$_GET['act'] == "add" && @$_GET['act2'] == "users" && @$_GET['act3'] == "done"){ $user->adduser(); } else{ ?> <html> <head> <title>Sistema de Autenticação</title> </head> <body> <div style="width:400px;padding: 10px;border: 1px dotted #000;margin:0 auto;"> <h1>Administração</h1><br /> <a href="index.php?act=editar&act2=perfil">Editar Perfil</a> | <a href="index.php?act=add&act2=users">Add usuarios</a> | <a href="index.php?act=editar&act2=users">Editar usuarios</a> | <a href="index.php?act=logout">Logout</a><br /> <div style="margin-top: 10px;"> <form action="index.php?act=add&act2=users&act3=done" method="POST"> Nome: <input type="text" name="nome" /><br /> Login <input type="text" name="login" /><br /> E-mail: <input type="text" name="email" /><br /> Senha: <input type="password" name="senha" /><br /> Novamente: <input type="password" name="againsenha" /><br /> <input type="submit" value="Cadastrar" /> </form> </div> </div> </body> </html> <?php } $mysql->desconecta(); ?> classes/login.class.php <?php // Arquivo protetor de acesso direto ao arquivos de classe include "protetor_classes.class.php"; class login{ ## Loga function loga(){ // Remove magic quotes $security = new security();$security->remove_mq(); // Atribui array POST $login = addslashes($_POST['login']); $senha = md5(addslashes($_POST['senha'])); // Faz consulta no banco de dados $query = mysql_query("SELECT * FROM `usuarios` WHERE login='$login' AND senha='$senha' AND ativo='1'"); $fetch = mysql_fetch_row($query); $num_rows = mysql_num_rows($query); // Se o numero de resutados for diferente de 1 ou o resultado do campo "ativo" (do banco de dados) estiver com valor 0 exibe erro if ($num_rows != 1 || $fetch[5] == 0){ echo "<strong style=\"color:red;\">Usuario não encontrado</strong>"; } // Caso contrario registra a sessão e redireciona para o painel else{ session_start(); $_SESSION["login_sistema"] = 1; $_SESSION["id"] = $fetch[0]; $_SESSION["login"] = $login; $_SESSION["senha"] = $senha; header ("location: index.php"); } } ## Verifica se esta logado function logado(){ session_start(); if(isset($_SESSION['login_sistema'])){ $query = mysql_query("SELECT `ativo` FROM `usuarios` WHERE login='".$_SESSION['login']."' AND senha='".$_SESSION['senha']."'"); $result = mysql_fetch_row($query); return ($result[0] == 1) ? true : false; } else return false; } ## Seta a variavel $_SESSION como um array vazio, assim efetuando logout function logout(){ session_start(); $_SESSION = array(); header ("location: ../index.php"); } } ?> classes/users.class.php <?php // Arquivo protetor de acesso direto ao arquivos de classe include "protetor_classes.class.php"; class user{ ####################PERFIL#################### ## Loga function pegaperfil($dado){ // Seleciona os dados ($dado) do usuario com o id SESSION['id'] que foi coocado no server na hora do cadastro $query = mysql_query("SELECT `$dado` FROM `usuarios` WHERE id=".$_SESSION['id']); $fetch = mysql_fetch_row($query); // Exibe os dados echo ($dado == "nome" || $dado == "email") ? $fetch[0] : ""; } function alteraperfil(){ // Atribuição das variaveis POST $nome = $_POST['nome']; $email = $_POST['email']; $senha = $_POST['senha']; $newsenha = $_POST['newsenha']; // Se a senha não estiver vazia a nova senha estiver exibe mensagem de erro if (!empty ($senha) && empty ($newsenha)) { echo "<strong style=\"color:red;\">Você deve informar a nova senha</strong>"; } // Se a senha estiver vazia e a nova senha não estiver exibe erro elseif (empty ($senha) && !empty ($newsenha)) { echo "<strong style=\"color:red;\">Você deve informar a senha</strong>"; } #### Realiza alteração com senha informada // Se as duas senhas informadas conter algum dado realiza uma consulta elseif (!empty ($senha) || !empty ($newsenha)) { // Puxa do banco de dados a senha cadastrada para verificar com a informada no formulario $selectSenha = mysql_query ("SELECT `senha` FROM `usuarios` WHERE id={$_SESSION['id']}"); $result = mysql_fetch_array($selectSenha); // Caso sejam diferentes exibe erro if (md5($senha) != $result['senha']){ echo "<strong style=\"color:red;\">A senha que você informou não consta com a do banco de dados</strong>"; } // Caso contrario realiza as alterações else { $query = mysql_query ("UPDATE `usuarios` SET nome='$nome', email='$email', senha='".md5($newsenha)."' WHERE id={$_SESSION['id']}"); // Alteramos os dados da sessao atual $_SESSION['senha'] = md5($newsenha); echo "<strong style=\"color:red;\">Alterações efetuadas com sucesso!</strong>"; } } #### Realiza alteração sem senha informada else { $query = mysql_query ("UPDATE `usuarios` SET nome='$nome', email='$email' WHERE id={$_SESSION['id']}"); echo "<strong style=\"color:red;\">Alterações efetuadas com sucesso!</strong>"; } } ####################ADD USER#################### function adduser(){ // Atribuição das variaveis POST $nome = addslashes($_POST['nome']); $login = addslashes($_POST['login']); $email = addslashes($_POST['email']); $senha = addslashes($_POST['senha']); $againsenha = addslashes($_POST['againsenha']); // Se nome, login, email estiverem vazios exibe erro if (empty($nome) || empty($login) || empty($email)) exit ("<strong style=\"color:red;\">Todos os campos devem ser preenchidos!</strong>"); // Faz verificação com as senhas if ($senha != $againsenha || empty($senha) || empty($againsenha)) exit ("<strong style=\"color:red;\">Digite as senhas corretamente!</strong>"); // Verifica se o login ja não foi cadastrado antes no banco de dados $checa = mysql_query("SELECT `login` FROM `usuarios` WHERE login='$login'") or exit (mysql_error()); $num = mysql_num_rows($checa); if ($num >= 1) exit ("<strong style=\"color:red;\">Este login ja esta sendo utilizado por outra pessoa!</strong>"); // Insere o usuario $query = mysql_query ("INSERT INTO `usuarios` VALUES (NULL,'$nome','$login','".md5($senha)."','$email',1)"); echo "<strong style=\"color:red;\">Usuario adicionado com sucesso!</strong>"; } ####################EDITAR#################### function listar(){ // Seleciona nome, id, ativo da tabela usuarios $query = mysql_query("SELECT `nome`,`id`,`ativo` FROM `usuarios` ORDER BY `nome` ASC"); // Pega o numero de resultados para efetuar um loop $num = mysql_num_rows($query); // Se não houver usuarios exibe um erro if ($num == 1) exit ("<strong style=\"color:red;\">Não existem usuarios a serem listados!</strong>"); // Efetua o loop for ($i=0;$i<$num;$i++){ $fetch = mysql_fetch_row($query); // Faz uma condição para não mostrar o seu proprio nome no painel (para ele não poder se auto-excluir) if ($fetch[1] != $_SESSION['id']){ // Mostra nome echo ($fetch[0] . " | "); // Faz uma condição, caso ele esteja ativo exibe "Suspender", caso esteja inativo exibe "Ativar" echo ($fetch[2] == 1) ? ('<a href="index.php?act=editar&act2=users&act3=suspender&id='.$fetch[1].'">Suspender</a> | ') : '<a href="index.php?act=editar&act2=users&act3=ativar&id='.$fetch[1].'">Ativar</a> | '; // Mostra deletar echo '<a href="index.php?act=editar&act2=users&act3=deletar&id='.$fetch[1].'">Deletar</a><br />'; } } } function suspender (){ // Suspende um usuario setendo o campo 'ativo' do banco de dados como 0 utilizando como clausula WHERE o ID passado na query string (?id=) mysql_query ("UPDATE `usuarios` SET ativo=0 WHERE id={$_GET['id']}"); echo "<strong style=\"color:red;\">Usuario suspenso com sucesso!</strong>"; } function ativar (){ // Ativa um usuario setendo o campo 'ativo' como 1 utilizando como clausula WHERE o ID passado na query string (?id=) mysql_query ("UPDATE `usuarios` SET ativo=1 WHERE id={$_GET['id']}"); echo "<strong style=\"color:red;\">Usuario ativado com sucesso!</strong>"; } // Deleta um usuario utilizando como clausula WHERE o ID passado na query string (?id=) function deletar (){ mysql_query ("DELETE FROM `usuarios` WHERE id={$_GET['id']}"); echo "<strong style=\"color:red;\">Usuario deletado com sucesso!</strong>"; } } ?> classes/security.class.php <?php include "protetor_classes.class.php"; class security{ function remove_mq (){ if (get_magic_quotes_gpc()) { function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_REQUEST = array_map('stripslashes_deep', $_REQUEST); } } } ?> classes/protetor_classes.class.php <?php if (basename(getcwd()) == "classes") header ("location: ../index.php"); ?> Bom, ai esta http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Só configurar o arquivo config.php como falei la em cima e tudo certo ^^ Criticas construtivas são bem-vindas :rolleyes: DOWNLOAD DO SCRIPT COMPLETO AQUI Compartilhar este post Link para o post Compartilhar em outros sites
Sature 0 Denunciar post Postado Abril 6, 2009 ;O muito bom cara!!! merece pinned! ja baixei :]~ Compartilhar este post Link para o post Compartilhar em outros sites
Smr 0 Denunciar post Postado Abril 6, 2009 Parece ser legal hein, vo baixa e da uma olhada, depois comento de novo..,^^ Compartilhar este post Link para o post Compartilhar em outros sites
Felipe Scalice 0 Denunciar post Postado Abril 7, 2009 De mais cara, to um tempo procurando algo assim... Sou designer, e gosto de fuçar bastante com php e mysql... e estou estudando classes... e esse tuto tah me tirando várias duvidas... Valew!!! Compartilhar este post Link para o post Compartilhar em outros sites
Batata 0 Denunciar post Postado Abril 8, 2009 parabéns pelo tutorial! ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
†RaFaLiNkInBoY† 0 Denunciar post Postado Abril 8, 2009 ae amigo eu estou tentando usar seu sistema de login mas infelizmente eu estou me deparando com um erro na pagina que nao estou entendendo o pq dele se puder me dar uma mãosinha eu agradeço! Fatal error: Class 'mysql' not found in C:\xampp\htdocs\sistema_login\seguranca.php on line 4 configurei o arquivo config.php como você informou e mesmo assim continua dando esse erro após me logar! seguranca.php <?php include_once "config.php"; // Abrimos uma conexão com o banco de dados $mysql = new mysql(); $mysql->conecta(); $login = new login(); // Se a função logado() retornar false oo "login_sis" não estiver definido (definimos no topo de cada pagina "index", isso ajuda a proteger as paginas já que só a queremos através de query-string) exibe mensagem de erro e encerra o script if ($login->logado() == false || !defined("login_sis")) exit("<strong style=\"color:red\";>Acesso restrito</strong>"); $mysql->desconecta(); ?> Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Abril 8, 2009 Posta o arquivo config ai para ver Compartilhar este post Link para o post Compartilhar em outros sites
_mandrake_ 0 Denunciar post Postado Abril 9, 2009 eu achei esse erro: Warning: require_once(C:/server/htdocs/news/cad_user/classes/user.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\server\htdocs\news\cad_user\config.php on line 24 Fatal error: require_once() [function.require]: Failed opening required 'C:/server/htdocs/news/cad_user/classes/user.class.php' (include_path='.;C:\php5\pear') in C:\server\htdocs\news\cad_user\config.php on line 24 $path = array(); // Caminho da pasta classes $path['classes'] = "C:/server/htdocs/news/cad_user/classes/"; // Caminho da pasta raiz $path['caminhoraiz'] = "C:/server/htdocs/news/cad_user/"; // Nome do arquivo raiz $path['raiz'] = "news/cad_user/index.php"; // AUTOLOAD inclui as funções na pasta classes/ sem precisar utilizar include manualmente function __autoload ($class){ global $path; require_once ($path['classes'] . $class . ".class.php"); } Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Abril 11, 2009 Cara, ele nao achou os caminhos das pastas o.O tenta mudar: $path['caminhoraiz'] = "C:/server/htdocs/news/cad_user/"; para: $path['caminhoraiz'] = "C:/server/htdocs/news/cad_user"; Compartilhar este post Link para o post Compartilhar em outros sites
Felipe Scalice 0 Denunciar post Postado Abril 28, 2009 Lucas! Estava verificando na parte de usuários, e apenas o primeiro usuario selecionado, eu consigo editar! Cadastrei uns 3 novos usuarios, e to quebrando a cabeça para mudar o script para editar esses novos! Teria como me ajudar com isso? Valew Compartilhar este post Link para o post Compartilhar em outros sites
Web 24 Hrs 0 Denunciar post Postado Maio 21, 2009 Legal. Mas tem como alguem posta o arquivo compactado ai, pq aqui ta dificil copiar e colar todo esse código, trava toda hora =/ Compartilhar este post Link para o post Compartilhar em outros sites
Crash® 0 Denunciar post Postado Novembro 17, 2009 Salve amigo tentei baixar o arquivo mas no site rapidshare informa erro pode postar novo link.. estou a procura de algo assim para colocar em meu site ,, se possivel gostaria de usar o pot que deixou aqui .. Compartilhar este post Link para o post Compartilhar em outros sites
Brayan Rastelli 2 Denunciar post Postado Novembro 18, 2009 bacana.. me ajudou a entender mais POO :D nao uma critica, mas sim uma sugestao: só axei q o uso do '@' nos if's ta errado você poderia usar o isset() pra verificar se está setado ^^ mas ficou show. . parabens Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Novembro 19, 2009 @Crash® Então cara, este script já é um pouco antigo, tem + de 6 meses que postei, eu ja formatei meu PC, não tenho mais =/. @Imao Bom poder ajudar, e obrigado pela sugestão :P. Como eu disse é meio antigo, e acho que eu tinha acabado de aprender OO, então eu não empreguei o uso de OO e código tem alguns erros xD Acho que farei outro, com um código mais sofisticado :) aí eu posto aqui Compartilhar este post Link para o post Compartilhar em outros sites
Paulo Ralha 0 Denunciar post Postado Novembro 19, 2009 oi tou com este problema podem-m a judar??? Fatal error: Class 'mysql' not found in C:\xampp\htdocs\testes_ralha\sessoes\seguranca.php on line 4 será por usar uma versao mais actualizada do php? cumprimentos Compartilhar este post Link para o post Compartilhar em outros sites
LZLOKO 0 Denunciar post Postado Novembro 19, 2009 Bem-Legal =D Gostei! Compartilhar este post Link para o post Compartilhar em outros sites
MarcosMelo 0 Denunciar post Postado Dezembro 8, 2009 Opa, tudo bom? Seguinte, eu sou iniciante em PHP e mySQL.. E estou fuçando bastante com isso ultimamente.. No momento estou com um sisteminha praticamente igual ao criado ai.. O que ta pegando agora é como eu poderia criar uma relação de "amigos" de usuário.. Por exemplo, em um site de relacionamento.. O usuário tem sua página de perfil e nessa página tem uma área que mostra outros usuários ligados ao primeiro.. Numa relação de "amigos". Enfim, minha dúvida é como que eu indicaria essa relação no mySQL.. Para que eu pudesse listá-los. Poderia me dar uma luz?? Não precisa criar o sistema.. Mas só indicar como poderia ser feito... Eu ficaria muito agradecido! Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Dezembro 8, 2009 Isso depende. Eles irão adicionar amigos ou irão aparecer amigos aleatoriamente (que o sistema definiu que, suspostamente, seja seu amigo), caso seja o primeiro você terá que fazer uma tabela extra em sua tabela para guardar o ID dos amigos, é o que chamamos de Has And Belongs To Many (Tem e Pertence a Muitos), é muito comum em framework. De uma olhada num rascunho de tabela: ### TABELA amigos AQUI CREATE TABLE usuarios_amigos ( id INT NOT NULL auto_increment, usuario_id INT NOT NULL, amigo_id INT NOT NULL, PRIMARY KEY(`id`) ) Esta é a tabela HABTM, vamos inserir um registro para ter uma ideia melhor: INSERT INTO usuarios_amigos VALUES (1, 15, 2);Assim, o usuario com ID 15 seria amigo do usuario com ID 2, ou seja, usuario_id e amigo_id apontam para outra tabela (foreign Key).Aí para selecionar bastaria relacionar as três tabelas (usuarios, amigos e usuarios_amigos) Pode parecer meio complicado, ainda mais quando a pessoas não sabe explicar ashuhasu, mas é por ae :P Caso se a segunda basta fazer um LIKE baseado nos criterios :) Compartilhar este post Link para o post Compartilhar em outros sites
MarcosMelo 0 Denunciar post Postado Dezembro 8, 2009 To entendendo mais ou menos, essa idéia de criar essa tabela usuario_amigos já abriu uma visão nova que eu não tinha.. Mas eu ainda não entendi a idéia por inteira.. Essa tabela amigos vai ser populada pelo que? Porque no fundo são todos usuários.. "Amigo" seria só uma relação entre 2 usuários... Pelo que eu entendi, nesse meu caso eu invés de criar uma tabela amigos e referenciar o id na tabela usuario_amigos, eu faça uma segunda referência para id de usuário.. Tomando o mesmo exemplo dado por você: insert into usuario_amigos values (1, 15, 2); O usuário de id 15 é amigo do usuário id 2. Só que nesse caso o 2 estaria na própria tabela usuarios. E no final eu teria apenas as tabelas usuarios e usuario_amigos. Não sei se fui muito claro... hehe. Valew, abraços Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Dezembro 8, 2009 Está certo, foi erro meu :P Pensei em "amigos" como uma extensão de usuario só que nada ver xD Compartilhar este post Link para o post Compartilhar em outros sites