Ir para conteúdo

POWERED BY:

Arquivado

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

natanrocha

Como passar id de usuario pela url e dados referente a ele?

Recommended Posts

Eae pessoal blz? tenho um projeto em que o cara loga na conta e vai para seu perfil, então queria fazer tipo um sistema de amigo, no qual o cara poderia entrar no perfil de outros usuarios cadastrados no site, sei que pra fazer isso tem que passar o id do usuario(extrangeiro) pela url, isso eu meio que consegui exibe o id e tudo do cara na url, mais não exibe o perfil referente a ele, exibe o meu perfil que sou o usuario logado, queria que exibisse os dados do usuario daquele id(daquela url), não sei como faço isso do que preciso e por onde começo?

 

PS: estou usando SESSION, e não estou usando PDO e sim mysql msm.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PS: estou usando SESSION, e não estou usando PDO e sim mysql msm.

 

PDO (PHP Data Objects) não é um banco de dados, ele é apenas um módulo para comunicação com bancos de dados relacional, como o MySql, você poderia dizer que não está usando "PDO" e sim a extensão "mysql_query".

 

Agora sobre a questão:

 

A: Como os dados do perfil logado são recuperados?

 

B: A ID do usuário logado está na sessão?

 

Localize a query (MySql) onde os dados são coletados.

 

<?php
class User
{
 static public function getUid($paramName = 'uid')
 {
  if(!isset($_REQUEST[$paramName]))
  {
   return $_SESSION['[...]'];
  }
  
  return $_REQUEST[$paramName];
 }
}

yoursite.com?uid=[...]

 

$query = mysql_query("SELECT * FROM `[...]` WHERE `[...]` = '". User::getUid() ."'");

Não se esqueça que é preciso verificar se o usuário está logado, se existe uma sessão ativa e muito mais,

veja se com este exemplo você consegue avançar.

 

[Caution!]

"mysql_query" será removida do PHP, mude o quanto antes para PDO ou outras opções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PDO (PHP Data Objects) não é um banco de dados, ele é apenas um módulo para comunicação com bancos de dados relacional, como o MySql, você poderia dizer que não está usando "PDO" e sim a extensão "mysql_query".

 

Agora sobre a questão:

 

A: Como os dados do perfil logado são recuperados?

 

B: A ID do usuário logado está na sessão?

 

Localize a query (MySql) onde os dados são coletados.

 

<?php
class User
{
 static public function getUid($paramName = 'uid')
 {
  if(!isset($_REQUEST[$paramName]))
  {
   return $_SESSION['[...]'];
  }
  
  return $_REQUEST[$paramName];
 }
}

yoursite.com?uid=[...]

 

$query = mysql_query("SELECT * FROM `[...]` WHERE `[...]` = '". User::getUid() ."'");

Não se esqueça que é preciso verificar se o usuário está logado, se existe uma sessão ativa e muito mais,

veja se com este exemplo você consegue avançar.

 

[Caution!]

"mysql_query" será removida do PHP, mude o quanto antes para PDO ou outras opções.

Sobre a questão A e B:

<?php 
include "config.php";

$login = $_POST['login'];
$senha = $_POST['senha'];

$sql_acesso = mysql_query("SELECT * FROM login_session WHERE login = '$login' AND senha = '$senha'");

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

$_SESSION['loginSession'] = $login;
$_SESSION['senhaSession'] = $senha;
include "pagina1.php";
}else{

unset($_SESSION['loginSession']);
unset($_SESSION['senhaSession']);
include "index.php";
}
?>

OU SEJA O ID NÃO ESTA ARMAZENADO NA SESSÃO!! COMO FAÇO PRA ISSO CONSEGUI ME INSTRUIR COM ESSE CODIGO AI?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse não é um método seguro para se fazer um login, mais vamos lá pra você ter uma idéia.

 

A lógica é você "trazer" os dados de acordo com o login e senha, nessa parte:

 

 

 

 

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



$dados=mysql_fetch_array($sql_acesso);


$_SESSION['ID'] = $dados['CAMPO_ID'];
$_SESSION['loginSession'] = $login;
$_SESSION['senhaSession'] = $senha;
include "pagina1.php";
}else{

Simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse não é um método seguro para se fazer um login, mais vamos lá pra você ter uma idéia.

 

A lógica é você "trazer" os dados de acordo com o login e senha, nessa parte:

 

 

 

 

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



$dados=mysql_fetch_array($sql_acesso);


$_SESSION['ID'] = $dados['CAMPO_ID'];
$_SESSION['loginSession'] = $login;
$_SESSION['senhaSession'] = $senha;
include "pagina1.php";
}else{

Simples.

Bem meu codigo ficou assim ta correto?

ele ta armazenando o id na sessão agora?

<?php 
include "config.php";

$login = $_POST['login'];
$senha = $_POST['senha'];

$sql_acesso = mysql_query("SELECT * FROM login_session WHERE login = '$login' AND senha = '$senha'");

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



$dados=mysql_fetch_array($sql_acesso);


$_SESSION['ID'] = $dados['id'];
$_SESSION['loginSession'] = $login;
$_SESSION['senhaSession'] = $senha;
include "pagina1.php";
}else{

unset($_SESSION['loginSession']);
unset($_SESSION['senhaSession']);
include "index.php";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, eu esqueci do session_start().

 

Ficará assim:

 

 

 

 

<?php
include "config.php";

$login = $_POST['login'];
$senha = $_POST['senha'];

$sql_acesso = mysql_query("SELECT * FROM login_session WHERE login = '$login' AND senha = '$senha'");

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

session_start();

$dados=mysql_fetch_array($sql_acesso);

$_SESSION['ID'] = $dados['id'];
$_SESSION['loginSession'] = $login;
$_SESSION['senhaSession'] = $senha;
include "pagina1.php";
}else{

unset($_SESSION['loginSession']);
unset($_SESSION['senhaSession']);
include "index.php";
}
?>

Em sua página1 você deverá iniciar a sessão com session_Start para poder manipular os dados armazenados nas sessões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse codigo que vc me passou ele ta na lagina logar.php está correto nhé? e na minha pagina 1 a sessão esta iniciada assim como o codigo abaixo, esta correto ou tenho que fazer alguma alteração?

<?php 
session_start(); // Inicia a sessão

if(!isset($_SESSION['loginSession']) AND !isset($_SESSION['senhaSession'])){
  header("Location: login.php");
  exit;
 }

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php 
include "config.php";
/*[...]*/
?>

 

Apenas nesse pedaço de código que você postou, daria para escrever um livro sobre "dicas de como programar corretamente".

 

Primeiro cuidar um pouquinho da segurança, se não, depois vão dizer que ninguém prestou atenção nisso.

 

Para que você ta matando $_SESSION['loginSession'], se ela apenas existiria se os dados estivessem corretos, você está usando unset em um offset de $_SESSION que não existe.

 

/* DESCUIDO TOTAL */
$login = $_POST['login'];
$senha = $_POST['senha'];
$sql_acesso = mysql_query("SELECT * FROM login_session WHERE login = '$login' AND senha = '$senha'");

Nunca confie no que vem do usuário, ou você deixa a porta da sua casa aberta para estranhos?

 

Filtre tudo, criptografe a senha, para que o usuário tenha liberdade de escolher uma senha com diversos caracteres.

 

<?php
//Imagine se o usuário criar uma senha como esta
$senha = "'''^!=$%___";

Ele nunca conseguirá logar porque vai dar erro, criptografe a senha e use strip_tags($_POST['login']) + extensões de escape, nunca use strip_tags em senhas, apenas criptografia.

 

Lembrando que "mysql_query" será removida do PHP, melhor mudar para PDO ou outros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais então quais destes codigos ai vc postou devo usar?

 

Na verdade, não é nem tanto para você usar, mas para servir como dicas. Se você for usar, seria algo assim:

 

<?php
include "config.php";

//O login é email? Se for, terá que validar o email antes
$login = strip_tags($_POST['login']); 

$login = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($login) : mysql_escape_string($login);

$senha = crypt($_POST['senha']);

/**
//Testando
if (crypt($_POST['senha'], $senha) == $senha)
{
   echo "Senha correta!";
}
*/

$sql_acesso = mysql_query("SELECT * FROM login_session WHERE login = '$login' AND senha = '$senha'");

//Não precisa de "mysql_num_rows($sql_acesso) == 1"
if( mysql_num_rows($sql_acesso) )
{
 session_start();

 $dados = mysql_fetch_array($sql_acesso);

 $_SESSION['id'] = $dados['id'];
 $_SESSION['loginSession'] = $login;
 $_SESSION['senhaSession'] = $senha;
 include "pagina1.php";

exit(0);
}

include "index.php";

Isso é apenas o login.

 

Uma outra dica: Escreva sempre os nomes em inglês, se não fica estranho

 

 

Agora use a classe User para obter a "ID" correta, lá na página onde contém as informações do usuário logado.

 

classUser.php

 

<?php
class User
{
 static public function getUid($paramName = 'uid')
 {
  if( ($isset_request = !isset($_REQUEST[$paramName]) ) && ($isset_session = !isset($_SESSION['id']) ) )
  {
   throw new Exception('Não existe uma sessão ativa!');
  }
 
  if(!$isset_request && $isset_session)
  {
   return $_SESSION['id'];
  }
  
  return $_REQUEST[$paramName];
 }
}

 

<?php
try{
 $uid = User::getUid();
 
} catch(Exception $e)
{
 echo $e->getMessage();
 exit(1);
}

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.