Jump to content
joaocasta

Perfil

Recommended Posts

joaocasta

Boas tardes, tenho aqui este código que mostra os dados de cada membro do meu site

perfil.php

<?php
require_once "funcoes.php";
require_once "template.php";
if(!(isset($_GET['id']) || isset($_SESSION["id"]))) {
header("Location: index.php");
exit();
}
$userid = !empty($_GET['id']) ? $_GET['id'] : $_SESSION["id"];
$result = mysql_query("SELECT 1 FROM users WHERE `id` = '".$userid."' AND DATE_SUB(NOW(), INTERVAL 10 MINUTE) < ultima_visita") or die(mysql_error());
$userISonline = mysql_num_rows($result);
if($userISonline) {
echo "<img title='O membro está online' src='online.png'/>";
}
else {
echo "<img title='O membro está offline' src='offline.png'/>";
}
$sql = mysql_query( "SELECT * FROM users WHERE `id`='".$userid."'" );  // call the $_SESSION['id'] which stores the user id, we've set from log-in
echo "<h2>Profile</h2>
<div align='center'>
<form method='post' action='editprofile.php'>
<table border='1'>";
$row=mysql_fetch_array($sql);

$query = "select username, tipo from users
inner join users_cargo on users.id_usertipo = users_cargo.id
WHERE users.id = '$userid'";
$result = mysql_query($query);
$usertipo = mysql_fetch_array($result);
echo "<tr><td>Name: </th><td>".$row['username']."</td></tr>
<tr><td>Email: </th><td>".$row['email']."</td></tr>
<tr><td>Data de Registo: </th><td>".$row['data_de_registo']."</td></tr>
<tr><td>Ultima vez visto: </th><td>".$row['ultima_visita']."</td></tr>
<tr><td>Uploads: </th><td>" . $row['downloads'] . "</td></tr>
<tr><td>Classe: </th><td>" . $usertipo['tipo'] . "</td></tr>";

if($row['avatar'] !='')
  $thumb = $row['avatar'];
else
  $thumb = 'ava.png';
echo "<tr><td>Avatar</td><td><img src='avatars/".$thumb."'></td></tr>";

echo "</table>";
if($_SESSION['id'] == $userid)
echo "<input type='submit' value='Editar Perfil' />";
echo "</form></div>";
?>

só que o meu problema está, em que eu quero mostrar a pagina de diferentes maneiras.

Passo a explicar. Quero implementar o seguinte código no código da pagina de perfil, de modo a que possa mostrar o perfil quando escrevesse no link "perfil.php?id=" ou "perfil.php". Mas não sei como o implementar no meu codigo....:

<?php
if(isset($_GET['id']))
{
//display the profile for user where id = $_GET['id']
}
elseif(isset($_SESSION['id']))
{
//display the profile for the logged in user
}
else
{
//no user logged in or $_GET['id'] doesnt exist
}
?>

Agradecia uma dica....

Share this post


Link to post
Share on other sites
MoshMage

será que o que tu queres é um include?

<?php
if ((isset($_GET['id'])) || (isset($_SESSION['id']))) {
   include 'profile.php';
}
else
{
   echo 'You must be <a href="index.php?login=true">logged</a> in to see this area';
   include 'not-online.php';
}
?>


If all Else fails, use Else If;

Share this post


Link to post
Share on other sites
joaocasta

talvez funcione vou testar....

EDIT: testei mas nao deu porque eu quando meto no link por exemplo um id que nao existe aparece os dados e queria que retornasse para a pagina de perfil da pessoa ou pra index.php

Edited by joaocasta

Share this post


Link to post
Share on other sites
HappyHippyHippo

if ((isset($_GET['id'])) || (isset($_SESSION['id']))) {
 header("Location: index.php");
 die();
}

ajuda ?

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
MoshMage

Terás que fazer qualquer coisa deste género - e eu nao testei este codigo. [a nao ser a função, que uso]

function getLastId($tbl) {
$q = 'SELECT MAX(id) FROM '.$tbl;
$result = to_db($q);
$row = mysql_fetch_array($result);
return $row['0'];
}

utiliza esta função para saber qual o ultimo ID,

<?php
if ((isset($_GET['id'])) || (isset($_SESSION['id']))) {
if (!empty($_GET['id'])) $id = getLastId('tabela_que_queres_saber_o_ultimo_id');
if ((!empty($id)) && ($_GET['id'] <= $id)) include 'profile.php';
elseif ((!empty($id)) && ($_GET['id'] > $id)) header('Location: index.php');
else {
	//se GET_id estiver vazio ou errado, então SESSION_id existe, inclui o profile do utilizador
	include 'profile.php';
}
}
else
{
echo 'You must be <a href="index.php?login=true">logged</a> in to see this area';
include 'not-online.php';
}
?>

Edited by MoshMage

If all Else fails, use Else If;

Share this post


Link to post
Share on other sites
joaocasta

HappyHippyHippo nao ajudou...

Eu queria que quando o user entrasse na conta dele e se quisesse entrar na pagina de perfil dele fazia. perfil.php,

mas se quisesse entrar no perfil de outro membro escrevia perfil.php?id=(aqui fica o id).... e se esse tal id nao existisse voltava para o perfil dele...

E MoshMage isso tb nao ajuda

Edited by joaocasta

Share this post


Link to post
Share on other sites
HappyHippyHippo

HappyHippyHippo nao ajudou...

Eu queria que quando o user entrasse na conta dele e se quisesse entrar na pagina de perfil dele fazia. perfil.php,

mas se quisesse entrar no perfil de outro membro escrevia perfil.php?id=(aqui fica o id).... e se esse tal id nao existisse voltava para o perfil dele...

E MoshMage isso tb nao ajuda

olha bem para o que tens logo no início do código

// se não existir i parâmetro "id" ou existir um parâmetros "session" "id"
//  para ser redirecionado para o "index.php"
if(!(isset($_GET['id']) || isset($_SESSION["id"]))) {
header("Location: index.php");
exit();
}

isto contradiz o que pretendes de só colocar o login.php

o que pretendes será algo do genero

$user_id = 0;
// se existir o parâmetro "id" então vamos tentar ver o perfil desse utilizador
if(isset($_GET['id']))
 $user_id = (int)$_GET['id'];
// caso contrario vamos ver o perfil da pessoa autenticada (se existir a info de autenticacao)
else if (isset($_SESSION['id']))
 $user_id = (int)$_SESSION['id'];

// caso nao exista informacao do utilizador a ser apresentado
// entao sim, vais para o index.php
if ($user_id == 0)
{
 header("Location: index.php");
 die();
}

// ler a informacao do utilizador a ser apresentado
$sql = "QUERY DE PESQUISA PELO UTILIZADOR COM O ID PRETENDIDO";
$rs = mysql_query($sql);

// verificar se o utilizador a ser apresentado existe na base de dados
if (mysql_num_rows($rs) == 0)
{
 header("Location: index.php");
 exit();
}

agora, não sei se existe algum tipo de restrição na visualização de perfis por parte de pessoas não autenticadas

para isso seria necessário verificar também se existe informação de autenticação à cabeça

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
joaocasta

<?php
require_once "funcoes.php";
require_once "template.php";
$user_id = 0;
// se existir o parâmetro "id" então vamos tentar ver o perfil desse utilizador
if(isset($_GET['id']))
$user_id = (int)$_GET['id'];
// caso contrario vamos ver o perfil da pessoa autenticada (se existir a info de autenticacao)

$userid = !empty($_GET['id']) ? $_GET['id'] : $_SESSION["id"];
$result = mysql_query("SELECT 1 FROM users WHERE `id` = '".$userid."' AND DATE_SUB(NOW(), INTERVAL 10 MINUTE) < ultima_visita") or die(mysql_error());
$userISonline = mysql_num_rows($result);
if($userISonline) {
echo "<img title='O membro está online' src='online.png'/>";
}
else {
echo "<img title='O membro está offline' src='offline.png'/>";
}
$sql = mysql_query( "SELECT * FROM users WHERE `id`='".$userid."'" ); // call the $_SESSION['id'] which stores the user id, we've set from log-in
echo "<h2>Profile</h2>
<div align='center'>
<form method='post' action='editprofile.php'>
<table border='1'>";
$row=mysql_fetch_array($sql);
$query = "select username, tipo from users
inner join users_cargo on users.id_usertipo = users_cargo.id
WHERE users.id = '$userid'";
$result = mysql_query($query);
$usertipo = mysql_fetch_array($result);
echo "<tr><td>Name: </th><td>".$row['username']."</td></tr>
<tr><td>Email: </th><td>".$row['email']."</td></tr>
<tr><td>Data de Registo: </th><td>".$row['data_de_registo']."</td></tr>
<tr><td>Ultima vez visto: </th><td>".$row['ultima_visita']."</td></tr>
<tr><td>Uploads: </th><td>" . $row['downloads'] . "</td></tr>
<tr><td>Classe: </th><td>" . $usertipo['tipo'] . "</td></tr>";

if($row['avatar'] !='')
$thumb = $row['avatar'];
else
$thumb = 'ava.png';
echo "<tr><td>Avatar</td><td><img src='avatars/".$thumb."'></td></tr>";

echo "</table>";
if($_SESSION['id'] == $userid)
echo "<input type='submit' value='Editar Perfil' />";
echo "</form></div>";
else if (isset($_SESSION['id']))
$user_id = (int)$_SESSION['id'];
header("Location: perfil.php");
?>

Fiz assim porque aquela parte do

// caso nao exista informacao do utilizador a ser apresentado
// entao sim, vais para o index.php
if ($user_id == 0)
{
 header("Location: index.php");
 die();
}

não é precisa....

Mas continua a dar erro no else.

Edited by joaocasta

Share this post


Link to post
Share on other sites
HappyHippyHippo

não é precisa....

se está lá é porque é precisa caso exemplo : não tiver autenticação e não tiveres parâmetro "id" no pedido

Mas continua a dar erro no else.

isso não é post que mereça resposta, e a razão já te foi dita várias vezes ... não vou dizer novamente


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
joaocasta

pus todo o codigo q me deste, mas ainda nao percebi qual o erro do else....

Share this post


Link to post
Share on other sites
HappyHippyHippo

pus todo o codigo q me deste, mas ainda nao percebi qual o erro do else....

nem eu, sabes porque ? PORQUE NÃO SEI QUAL A MENSAGEM DE ERRO !!!!

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
joaocasta

HappyHippyHippo não precisas de gritar, ok? O erro é este

Parse error: syntax error, unexpected 'elseif' (T_ELSEIF) in C:\wamp\www\novo tema v1\perfil.php on line 66

linha 66:

elseif(isset($_SESSION['id'])) // LINHA 66
{
 $user_id = (int)$_SESSION['id'];
 header("Location: perfil.php");
}

Edited by joaocasta

Share this post


Link to post
Share on other sites
HappyHippyHippo

HappyHippyHippo não precisas de gritar, ok? O erro é este

quantas vezes já te disse para apresentares a mensagem de erro ????

basta ler a mensagem de erro que saberias qual é o erro

- "Parse error: " >> erro de leitura do script

- "syntax error, " >> erro de interpretação do script

- "unexpected 'elseif' (T_ELSEIF) in " >> o comando "elseif" é inesperado, isto implica que o "else/elseif" não deveria aparecer aqui porque a instrução anterior não é uma instrução do um "if"

if($_SESSION['id'] == $userid)
 echo "<input type='submit' value='Editar Perfil' />"; // instrução do IF
 echo "</form></div>";                                 // instrução fora do IF
else if (isset($_SESSION['id']))                        // erro : a instrução anterior não faz parte do bloco de instruções do IF
 $user_id = (int)$_SESSION['id'];

usa chavetas


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
joaocasta

tentei isto mas nao deu...

if($_SESSION['id'] == $userid) {
 echo "<input type='submit' value='Editar Perfil' />";
}
 echo "</form></div>";		  
elseif (isset($_SESSION['id'])) {
$user_id = (int)$_SESSION['id'];
header("Location: perfil.php");
}

Share this post


Link to post
Share on other sites
ruimcosta

O pessoal hoje em dia quer TAMBÉM tirar licenciaturas ao domingo, por fax, com equivalências so por saber pescar, etc...

Amigos: LEIAM e se não entenderem , perguntem. Agora perguntar sem fazer a menor ideia do que estão a perguntar.....


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
joaocasta

mas ainda nao vi qual foi o meu erro, coloquei as chavetas todas... nao sei mesmo

Share this post


Link to post
Share on other sites
MoshMage

nem eu, sabes porque ? PORQUE NÃO SEI QUAL A MENSAGEM DE ERRO !!!!

Trolololol xD Happy Hippo pwns

Edited by MoshMage

If all Else fails, use Else If;

Share this post


Link to post
Share on other sites
taviroquai

nem eu, sabes porque ? PORQUE NÃO SEI QUAL A MENSAGEM DE ERRO !!!!

lol

Outra forma...

$user_id = !empty($_GET['id']) ? (int) $_GET['id'] : $_SESSION['id'];
if (empty($user_id)) {
header("Location: index.php");
exit();
}

Share this post


Link to post
Share on other sites
HappyHippyHippo

Outra forma...

$user_id = !empty($_GET['id']) ? (int) $_GET['id'] : $_SESSION['id'];
if (empty($user_id)) {
   header("Location: index.php");
   exit();
}

epa ... se ele nem sabe por chavetas achas que vai perceber o operador ternário ???


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
joaocasta

Vou rever o codigo todo e ver se falta algo.... o operador ternario facilita e muito e nao preciso de else...

Edited by joaocasta

Share this post


Link to post
Share on other sites
ruimcosta

tentei isto mas nao deu...

if($_SESSION['id'] == $userid) {
 echo "<input type='submit' value='Editar Perfil' />";
}
 echo "</form></div>";		  
elseif (isset($_SESSION['id'])) {
$user_id = (int)$_SESSION['id'];
header("Location: perfil.php");
}

Vou dar-te uma dica por apenas pelo preço de um café! O erro está exactamente neste bloco.

Se tiveres 10 minutos para leres os 2 artigos que o Hippo te deu e mais 2 minutos para comparares a tua aprendizagem com o bloco que aqui tens....Tornas-te uma pessoa melhor!


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.