Jump to content

Perfil


joaocasta

Recommended Posts

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....

Link to comment
Share on other sites

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;

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

<?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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

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

Link to comment
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.