Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lemandrake

[Resolvido] Cadastro com login com página personalizada para cada

Recommended Posts

Boa tarde a todos, gostaria de saber como faço um sistema de cadastro com login para multiusuário que quando cadastrado o usuário, ele acesse a página restrita com seus dados, onde poderá alterá-los, tipo do orkut, caso alguém tenha o script, agradeço.

 

 

Se estiverem lendo agradeço, caso me ajudem agradeço duas vezes.

 

Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual que eh a dificuldade em implementar?

Tentou fazer ?

 

Nao tenho, e nem conheco algum script pronto disso.

Sabe trabalhar com banco de dados ? conhece query string ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a atenção antes de mais nada, comecei a mexer com php agora, aprendi com tutoriais, até já tenho algumas coisas prontas, sistema de login com alteração e exclusão de usuários, porém ele é apenas para uma página restrita, posso cadastrar vários usuários para acessarem a mesma página, gostaria de cadastrar e que cada usuário acessasse sua própria conta e página, podendo ter acesso a algumas alterações, resumindo, entendo bem pouco de php, tenho um aprendizado bem iniciante, valeuuuu.

 

Qual que eh a dificuldade em implementar?

Tentou fazer ?

 

Nao tenho, e nem conheco algum script pronto disso.

Sabe trabalhar com banco de dados ? conhece query string ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você vai ter que fazer... ?

Para saber se ele está logado, você vai fazer uma consulta no BD, certo? Para testar se ele está logado você deve usar session, certo? Grave nesta session o id do usuário. Na hora de exibir a página dele, pegue as informações do banco de acordo com o id gravado na session.

 

A lógica é mais ou menos esta.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a atenção, sem querer abusar, mas baseado nesse script como ficaria:

 

Tabela:

CREATE TABLE `Sis_login` (
 `id` int(3) NOT NULL auto_increment,
 `login` varchar(8) default NULL,
 `senha` varchar(8) default NULL,
 PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ; 

 

 

 

login.php

<?
session_name("MeuLogin");
session_start();
session_destroy();

if($_GET['login'] == "falhou") {
   print $_GET['causa'];
}
?>
<form name="form1" method="post" action="loga.php?acao=logar">
Login: <input type="text" name="nome"><BR>
Senha: <input type="password" name="pwd"><BR>
<input type="submit">
</form>

 

loga.php

<HTML>
<HEAD>
<TITLE>Documento PHP</TITLE>
</HEAD>
<BODY>
<?
session_name("MeuLogin");
session_start();

if($_GET['acao'] == "logar") {
   $conn = mysql_connect("localhost","teste","123456"); //configure os dados do seu MySQL
   $banco = mysql_select_db("teste"); //coloque o nome do seu banco de dados

   $nome = $_POST['nome'];
   $q_user = mysql_query("SELECT * FROM Sis_login WHERE login='$nome'");

   if(mysql_num_rows($q_user) == 1) {

       $query = mysql_query("SELECT * FROM Sis_login WHERE login='$nome'");
       $dados = mysql_fetch_array($query);
       if($_POST['pwd'] == $dados['senha']) {
           session_register("nome");
           header("Location: page.php");
           exit;
       } else {
           header("Location: login.php?login=falhou&causa=".urlencode('Senha Incorreta'));
           exit;
       }
   } else {
       header("Location: login.php?login=falhou&causa=".urlencode('Campos Inválidos'));
       exit;
   }
}

//agora a parte que verifica se o login já foi feito
if(session_is_registered("nome") == false) {
   header("Location: login.php");
}
?>
</BODY>
</HTML>

page.php

<HTML>
<HEAD>
<TITLE>Documento PHP</TITLE>
</HEAD>
<BODY>
<?
require("loga.php");
?>
Olá <B><? print $_SESSION["nome"]; ?></B>,<BR>
Aqui vem qualquer coisa, inclusive um link para outras páginas.<BR><BR>
<?
echo "<a href=\"logout.php\">Sair</a>";
?>
</br>
<a href="page2.php">Link</a>
</BODY>
</HTML>

logout.php

<?php

session_start();

if(!isset($_REQUEST['logmeout'])){

echo "Você realmente deseja sair da área restrita?<br />";
echo "<a href=\"logout.php?logmeout\">Sim</a> | <a href=\"javascript:history.go(-1)\">Não</a>";

}
else{

session_destroy();

if(!session_is_registered('nome')){

	echo "<strong>Você não está mais logado em nosso site!</strong><br /><br />";
	echo "<strong>Login:</strong><br /><br />";

	include "login.php";

}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá... Mais ou menos isto..

 

Troque isto...

 session_register("nome");

Por isto

$_SESSION['id'] = $dados['id'];

 

Daí na página page.php, você faz uma consulta usando este id e joga os dados dentro de inputs. Para jogar dentro de input, você usa...

<input type="text" name="nome" id="nome" value="<?php echo VARIÁVEL_COM_O_NOME_DA_FIGURA ?>" />

 

A lógica é esta.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a paciência, valeu mesmo..

Trocando o que falou não faz o login, a minha page.php ficou assim:

 

<?
require("loga.php");
?>
Olá <B><? print $_SESSION["nome"]; ?></B>,<BR>
Aqui vem qualquer coisa, inclusive um link para outras páginas.<BR><BR>
<?
echo "<a href=\"logout.php\">Sair</a>";
?>
<style type="text/css">
.cinza{
background:#f0f0f0;
height:20px;
}
.claro{
background:#f9f9f9;
height:20px;
}
.fonte{
color:#FFFFFF;
font-weight:bold;
height:25px;
}
</style>
	<div style="margin:10px auto; width:90%; padding:5px 0px 5px 0px;">
<?php
include "loga.php";
 include "sql.php";
$max = 10;

$pagina = $_GET['pagina'];
if(!$pagina){
	$inicio = 0;
	$pagina = 1;
}else{
$inicio = ($pagina - 1) * $max;
}

$sqln = mysql_query("SELECT * FROM Sis_login ORDER BY id DESC");
$num = mysql_num_rows($sqln);

if($num == 0){
print " No momento não temos dados cadastrados";
}else{

$total_paginas = ceil($num/$max);

//print  "<B>Temos ".$num." <b> usuários(s) cadastrado(s).<br>";
print "Listando página(s) ".$pagina." de ".$total_paginas."!";

$sqln = mysql_query("SELECT * FROM Sis_login ORDER BY id DESC LIMIT ".$inicio.",".$max."");
$num = mysql_num_rows($sqln);
}
?>
	 </div>
<fieldset style="width:90%; margin:0 auto;">
<legend>Dados de Cadastro</legend>

  <?php
  print '<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="10%" align="center" bgcolor="#202020" class="fonte"><b>.::Nº::.</td>
    <td align="left" bgcolor="#202020" class="fonte"><b>|login|</td>
    <td align="left" bgcolor="#202020" class="fonte"><b>|Senha|</td>

    <td colspan="2" align="center" bgcolor="#202020" class="fonte" width="15%">.:: Funções ::.</td>
  </tr>';

  for($i = 0; $i < $num; $i++){
  $login = @mysql_result($sqln, $i, "login");
  $id = @mysql_result($sqln, $i, "id");
  $senha = @mysql_result($sqln, $i, "senha");

  $n = $i + 1;
  $d = $i % 2;
  if($d == 0){$cor = "cinza";}else{$cor = "claro"; }
  print '<tr class='.$cor.'>';
  print '<td align="center">'.$n.'</td>';
  print '<td>'.$login.'</td>';
  print '<td>'.$senha.'</td>';



  print '<td align="center"><a href="atualogin.php?id='.$id.'"><b>|Alterar|</a></td>';
  print '<td align="center"><a href="deletlogin.php?id='.$id.'"><b>|Excluir|</a></td>';
  print '</tr>';
  }

  print '</table>';
 print '<div style="text-align:center; margin-top: 30px;">';
if($pagina != 1){
print '<a href="page.php?'. $_SERVER['QUERY_STRING']. "&pagina=".($pagina - 1).'"><< anterior</a>';
}else{
    print '<span style="color: #ccc;"><< anterior </span>';
}
if ($total_paginas > 1){
    for ($i=1; $i <= $total_paginas; $i++){
       if ($pagina == $i){
          echo "<span class='al'> [".$pagina."] </span>";
       }else{
          echo "<a href=\"page.php?" . $_SERVER['QUERY_STRING']."&pagina=".$i."\"> ".$i." </a> ";
		  }
    }
}
if($pagina < $total_paginas){
print '<a href="page.php?'. $_SERVER['QUERY_STRING']. "&pagina=".($pagina + 1).'">próxima >></a>';
}else{
    print '<span style="color: #ccc;"> próxima >></span>';
}
print '</div>';

  ?>

 

 

Mas ela mostra todos os usuários cadastrados com a possibilidade de alterá-los, será que tem como exibir os dados apenas do usuário que logou, pois se consigo dar um print no nome dele, como eu exibiria apenas seus dados, tudo começa no loga.php né?

tenho que registrar a id do usário para que liste apenas o usuário logado, como faço isso?

 

Valeu, desculpe a alopração e a ignorância, abraço.

Vamos lá... Mais ou menos isto..

 

Troque isto...

 session_register("nome");

Por isto

$_SESSION['id'] = $dados['id'];

 

Daí na página page.php, você faz uma consulta usando este id e joga os dados dentro de inputs. Para jogar dentro de input, você usa...

<input type="text" name="nome" id="nome" value="<?php echo VARIÁVEL_COM_O_NOME_DA_FIGURA ?>" />

 

A lógica é esta.

 

Carlos Eduardo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui entender o teu código, mas a lógica é esta.

 

- Página de conferência de login você testa se o usuário e senha que o cara colocou estão corretos. Se tiver, grava o nome e o id dele em $_SESSION['nome'] e $_SESSION['id'].

 

- Na página que você quer exibir os dados dele para alterar, faça a consulta usando o id cadastrado na $_SESSION[''] como cláusula WHERE. Vai trazer somente os dados do usuário que está logado.

 

- Depois disto, você joga os dados dele dentro de inputs como eu falei anteriormente.

 

A lógica é esta.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com um problema estranho aqui no meu "sistema de cadastro", cadastro o usuário e cadastro a imagem que é listada quando o mesmo se loga, criei uma página onde ele atualiza seus dados, para alterar a imagem criei uma segunda página onde faz o upload da imagem e envia para a mesma pasta que estava a outra imagem, bom em localhost essa atualização da imagem funciona perfeitamente, a imagem é copiada para a pasta e substitui a imagem antiga, mas no quando postei no servidor, a imagem é copiada na pasta mas não é atualizada no cadastro, os outros dados da página de atualização de dados funciona, só a página de imagem que não está funcionando, por que será que está acontecendo isso?agradeço a atenção, valeu....

 

Segue o script que fiz:

A página restrita que lista os dados:

page.php

<?
require("loga.php");
?>
<html>
<head>
<title>|Login clientes |</title>
</head>
<link href="stl_ind.css" rel="stylesheet" type="text/css">
<BODY bgColor=black background=bcgrd.gif text="#000000" link="#000000" leftMargin=0 topMargin=0 MARGINWIDTH="0" MARGINHEIGHT="0">
<div align=center><font color=white size=4>|Bem Vindo(a) <B><? print $_SESSION["nome"]; ?></b> à Área Restrita |</font></B><BR></div>
<BR><BR>

<style type="text/css">
.cinza{
background:#f0f0f0;
height:20px;
}
.claro{
background:#f9f9f9;
height:20px;
}
.fonte{
color:#FFFFFF;
font-weight:bold;
height:25px;
}
</style>
<div style="margin:10px auto; width:100%; padding:5px 0px 5px 0px;">
<?php
include "sql.php";
$max = 10;

$pagina = $_GET['pagina'];
if(!$pagina){
$inicio = 0;
$pagina = 1;
}else{
$inicio = ($pagina - 1) * $max;
}
//Acrescentei no sistema padrão de login esta listagem conforme a id de sessão do usuário
$sqln = mysql_query("SELECT * FROM user_login where id = '$_SESSION[id]'");
$num = mysql_num_rows($sqln);

if($num == 0){
print " No momento não temos dados cadastrados";
}else{

$total_paginas = ceil($num/$max);



//Acrescentei no sistema padrão de login esta listagem conforme a id de sessão do usuário
$sqln = mysql_query("SELECT * FROM user_login where id = '$_SESSION[id]'");
$num = mysql_num_rows($sqln);
}
?>
</div>
<fieldset style="width:90%; margin:0 auto;">
<legend><b><font color="white">Dados de Cadastro</font></legend>

<?php
print '<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="10%" align="center" bgcolor="#202020" class="fonte"><b>|Imagem|</td>
<td align="center" bgcolor="#202020" class="fonte"><b>|Nome|</td>
<td align="center" bgcolor="#202020" class="fonte"><b>|Login|</td>
<td align="center" bgcolor="#202020" class="fonte"><b>|Senha|</td>

<td colspan="2" align="center" bgcolor="#202020" class="fonte" width="15%">.:: Funções ::.</td>
</tr>';

for($i = 0; $i < $num; $i++){
$_SESSION["id"] = @mysql_result($sqln, $i, "id");
$imagem = @mysql_result($sqln, $i, "imagem");
$nome = @mysql_result($sqln, $i, "nome");
$login = @mysql_result($sqln, $i, "login");
$senha = @mysql_result($sqln, $i, "senha");

$n = $i + 1;
$d = $i % 2;
if($d == 0){$cor = "cinza";}else{$cor = "claro"; }
print '<tr class='.$cor.'>';
print("<td width='5%' valign='top'><div align='center'><img src='admin/fotos/$imagem' alt='sem imagem' width='184' height='194'></div></td>");
print '<td align="center" bgcolor=silver><font color=red size=5>'.$nome.'</font></td>';
print '<td align="center" bgcolor=white><font color=red size=5>'.$login.'</font></td>';
print '<td align="center" bgcolor=silver><font color=red size=5>'.$senha.'</font></td>';


//link para alterar cadastro do usuário
print '<td align="center" bgcolor=white><a href="atualogin.php?id='.$_SESSION["id"].'"><b><font color=black>Dados|</font></a></td>';

//Aqui é onde altero a imagem, lembrando que em localhost funciona e a outra página de atualização de dados funciona nas duas formas, localhost e servidor.

print '<td align="center" bgcolor=white><a href="alt_img.php?id='.$_SESSION["id"].'"><b><font color=black>|Alterar Img</font></a></td>';
print '</tr>';
}

print '</table>';


?>
</br>
<?
echo "<div align=center><a href=\"logout.php\"><font color=white><b>Sair</font></a></div>";
?>
</body>
</html>

O formulário de alteração é este:

atual_form.php

<html>
<head>
</head>
<link href="../stl_ind.css" rel="stylesheet" type="text/css">
<BODY bgColor=black background=bcgrd.gif text="#000000" link="#000000" leftMargin=0 topMargin=0 MARGINWIDTH="0" MARGINHEIGHT="0">
<form name='frm_files' method='post' enctype='multipart/form-data' action='atual_envia.php'>

<table border="0" width="90%" bgcolor="silver" style="border:3px solid #f0f0f0; margin:0 auto; position:relative;" align="center">

<thead>
<tr>
<th colspan="2"><b>|Alterar Imagem|</th>
</tr>
</thead>
<tbody>
<tr>
<tr>
<td width="14%"><b>Imagem:</td>
<td width="86%"><input type="file" name="imagem" value="<?php echo $imagem; ?>" class="formpreto" size="35" /></td>
</tr>

<tr>
<td></td>
<td><input type="submit" value="Atualizar" class="formpreto" />
<input type="button" name="button" id="button" onclick="java script:location.href='page.php';" value="Voltar" class="formpreto"/>
<input type="hidden" name="done" value="" /><input name="id" type="hidden" value="<?php echo $id; ?>" />
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

Este é o arquivo que recebe as informações e envia normalmente em localhost, porém quando posto os arquivos apenas copia para a pasta ams altera nada na tabela.

 

atual_envia.php

<html>
<head>
</head>
<link href="../stl_ind.css" rel="stylesheet" type="text/css">
<BODY bgColor=black background=bcgrd.gif text="#000000" link="#000000" leftMargin=0 topMargin=0 MARGINWIDTH="0" MARGINHEIGHT="0">

<?
include "sql.php";




if(isset($_POST['done'])){

$id = $_POST['id'];
$foto_temp = $_FILES["imagem"]["tmp_name"]; //CAMINHO TEMPORÁRIO
$foto_name = $_FILES["imagem"]["name"]; //NOME DO ARQUIVO



if(!copy($foto_temp, "admin/fotos/$foto_name")) {
echo "Aconteceu algum erro !!!";
}

else {

$x = mysql_query("UPDATE user_login SET imagem='$foto_name' WHERE id='$id'");
if(!$x){
echo "Erro ao tentar incluir registro: ".mysql_error();
}
else{
echo "<div align=center><font color=orange size=4><b>Alterado com Sucesso!</font></div>";
echo "<meta http-equiv='refresh' content='4;URL=page.php'>";
}


}
}
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

De onde vem esta $imagem?

 

<td width="86%"><input type="file" name="imagem" value="<?php echo $imagem; ?>" class="formpreto" size="35" /></td>

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a atenção Carlos, esta $imagem é o campo da tabela que estou listando, isso está funcionando normal, está listando direitinho, o problema é a quando o usuário tenta alterar a imagem, ela é copiada para a pasta mas não é alterada a tabela, logo não é listada, porém em localhost, essa alteração funciona perfeitamente, por que será?

 

Resumindo:

Cadastro de dados e imagem=OK

Listar dados e alterá-los, exclusão e atualização =ok

Listar imagem cadastrada=OK

Alterar imagem cadastrada=funciona localhost, mas não funciona no servidor.

 

 

 

De onde vem esta $imagem?

 

<td width="86%"><input type="file" name="imagem" value="<?php echo $imagem; ?>" class="formpreto" size="35" /></td>

Carlos Eduardo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não entendeu a minha pergunta... O valor desta variável vem de onde? Qual o código que gera?

 

Explico o porque da pergunta... Veja que normalmente quando uma coisa funciona em localhost e não funciona no servidor, é problema de register_global ON em localhost e OFF no servidor (recomendado OFF). Se o valor desta $imagem vem de um formulário, use $_POST['imagem'] ou $_GET['imagem'] ou $_SESSION['imagem'] ou $_COOKIE['imagem'] ou $_FILES['imagem'].

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui agora está atualizando, segue abaixo as mudanças que fiz:

 

No form inclui este código onde seleciono qualquer campo da tabela:

 

atual_form.php

//aqui inclui
<?
include "sql.php";
$id = $_GET['id'];
$x = mysql_query("SELECT * FROM user_login WHERE id = '$id'");
$id = @mysql_result($x, 0, "id");
?>
<html>
<head>
</head>
<link href="../stl_ind.css" rel="stylesheet" type="text/css">
<BODY bgColor=black background=bcgrd.gif text="#000000" link="#000000" leftMargin=0 topMargin=0 MARGINWIDTH="0" MARGINHEIGHT="0">
<form name='frm_files' method='post' enctype='multipart/form-data' action='atual_envia.php'>

<table border="0" width="90%"  bgcolor="silver" style="border:3px solid #f0f0f0; margin:0 auto; position:relative;" align="center">

<thead>
<tr>
<th colspan="2"><b>|Alterar Imagem|</th>
</tr>
</thead>
<tbody>
<tr>
<tr>
<td width="14%"><b>Imagem:</td>
<td width="86%"><input type="file" name="imagem" value="<?php echo $imagem; ?>" class="formpreto" size="35" /></td>
</tr>

<tr>
<td></td>
<td><input type="submit" value="Atualizar" class="formpreto" />
 <input type="button" name="button" id="button" onclick="javascript:location.href='page.php';" value="Voltar" class="formpreto"/>
 <input type="hidden" name="done" value="" /><input name="id" type="hidden" value="<?php echo $id; ?>" />
  </td>
</tr>
</tbody>
</table>
</form>

No atual_envia.php

<?
include "sql.php";




if(isset($_POST['done'])){

   $id = $_POST['id'];
   $foto_temp = $_FILES["imagem"]["tmp_name"]; //CAMINHO TEMPORÁRIO
   //alterei aqui, deixei direto com o nome do campo da tabela para facilitar
   $imagem = $_FILES["imagem"]["name"];  //NOME DO ARQUIVO



if(!copy($foto_temp, "admin/fotos/$imagem")) {
echo "Aconteceu algum erro !!!";
}

else {

$x = mysql_query("UPDATE user_login SET imagem='$imagem' WHERE id='$id'");
if(!$x){
echo "Erro ao tentar incluir registro: ".mysql_error();
}
else{
echo "<div align=center><font color=orange size=4><b>Alterado com Sucesso!</font></div>";
echo "<meta http-equiv='refresh' content='4;URL=page.php'>";
}


}
}
//Fiz a mesma listagem aqui...
$id = $_GET['id'];
$x = mysql_query("SELECT * FROM user_login WHERE id = '$id'");
$id = @mysql_result($x, 0, "id");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi o que quis dizer, agora deu certo, fiz no form uma consulta na tabela, agora deu certo, valeu, agradeço a atenção até a próxima...

Você não entendeu a minha pergunta... O valor desta variável vem de onde? Qual o código que gera?

 

Explico o porque da pergunta... Veja que normalmente quando uma coisa funciona em localhost e não funciona no servidor, é problema de register_global ON em localhost e OFF no servidor (recomendado OFF). Se o valor desta $imagem vem de um formulário, use $_POST['imagem'] ou $_GET['imagem'] ou $_SESSION['imagem'] ou $_COOKIE['imagem'] ou $_FILES['imagem'].

 

Carlos Eduardo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.