Jump to content
Sign in to follow this  
cryteck

Passar id por url

Recommended Posts

cryteck

Eu fiz um sistema de login usando sessões, mas agora não estou conseguindo fazer a página de editar utilizador .

Eu faço o login página login.php, depois se errar o login, vai para a página errar_login.php senão cria a sessão e vai para a página principal.php onde aparece logout e editar utilizador.

Ao clicar em editar utilizador vai para a página editar_utilizador.php onde tem um formulario para por nova password e novo email.

Eu consigo actualizar a base de dados, mas só com o id que eu puser ex:

$sql="UPDATE user SET password='$password', email='$email' WHERE id='1'";

$resultado = mysql_query($sql);

$exe_resultado = mysql_query($sql) or die (mysql_error());

O que eu queria é que só actualizasse a base de dados com o id do utilizador que fez login.

Podiam-me dar sugestões como proceder, é que eu não estou a conseguir.

Share this post


Link to post
Share on other sites
scorch

Quando o utilizador fizer login, guardas o id dele na sessão.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
cryteck

Sim, eu já fiz isso ao fazer login vai para a página errar_login.php se não cria a sessão e vai para a pagina principal.php.

Ora verifica

errar_login.php

<?php

include("config.php");

$login = $_POST['login'];

$id = $_POST['id'];

$password = md5($_POST['password']);

/* Verifica se existe utilizador e  procura  uma

linha que contenha o login e a senha digitada */

$sql_verificar = "SELECT * FROM user WHERE login = '$login' && password = '$password'";

$exe_verificar = mysql_query($sql_verificar) or die (mysql_error());

$fet_verificar = mysql_fetch_assoc($exe_verificar);

$num_verificar = mysql_num_rows($exe_verificar);

//Verifica se n existe uma linha com o login e a senha digitado

if ($num_verificar == 0){

  echo "Utilizador ou Password inválida.";

  echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para voltar.</a>"; 

}

else

{

  //Cria a sessão e manda pra pagina principal.php

  session_start();

  $_SESSION['id'] = $id;

  $_SESSION['login'] = $login;

  $_SESSION['password'] = $password;

  header("Location:principal.php");

}

 

?>

principal.php

<?php

include("config.php");

include("restrito.php");

$sql_pesquisa = "SELECT * FROM user WHERE login = '$login_utilizador'";

$exe_pesquisa = mysql_query($sql_pesquisa) or die (mysql_error());

$fet_pesquisa = mysql_fetch_assoc($exe_pesquisa);

?>

Olá <? echo $fet_pesquisa['login'];?>

<a href="logout.php">Logout</a>

<a href="editar_utilizador.php?id='.$id.'">Editar Utilizador</a>

Share this post


Link to post
Share on other sites
scorch

O id é mandado por POST? 😲


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
softklin

O teu código é um bocado grande, mas só de olhar assim rapidamente, tens um erro aí no teu 2º código, na tua query sql:

$sql_verificar = "SELECT * FROM user WHERE login = '$login' && password = '$password'";

devia ser

$sql_verificar = "SELECT * FROM user WHERE login = '$login' and password = '$password'";


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
The Loser

Sir, como o scorch disse, estás a obter o id por $_POST['id'], quando este está a ser passado por Query String (tendo que ser $_GET['id']).

Ah, e tem atenção também ao que o softclean disse.


I intend to live forever. So far so good.

Share this post


Link to post
Share on other sites
n3lThon

Quando trabalhas com logins é aconselhável que uses o método POST, por isso altera o método no form.

Tem atenção ao que scorch, softclean, The Loser disseram. :P


dreams.each do |dream|

   dream.make_it_happen

end

Share this post


Link to post
Share on other sites
The Loser

Completando o que o scorch disse (porque ele não explicou exactamente porquê),

Agora reparei. Ao fazer login, devias usar mysql_real_escape_string, porque senão é facili-mo penetrar na tua aplicação.

http://pt.php.net/manual/pt_BR/function.mysql-real-escape-string.php

Quando não escapas caracteres especiais (nomeadamente, o ' ), é possível explorar isso, procedendo à execução de um SQL Injection.

Basicamente, uma SQL Injection é, como o nome sugere, uma injecção de código SQL no teu query, permitindo assim a qualquer zé mané que saiba SQL manipular como quiser as tuas bases de dados.

Vejemos..

Supondo que tens o query:

SELECT id FROM toni where user='$user'

Sendo que estás a usar input feito pelo utilizador, $user pode ser qualquer coisa desde um utilizador válido a um Query.

Vamor supor que $user tem o seguinte valor:

'; UPDATE toni SET password='lulz' WHERE user='queroAtuaConta'

Desta forma, o query completo ficaria:

SELECT id FROM toni where user=''; UPDATE toni SET password='lulz' WHERE user='queroAtuaConta'

Ou seja, seriam executados esses 2 queries e a password do utilizador queroAtuaConta seria alterada para uma conhecida ao injecter..

Antes de inserires a $user no query, usarias a mysql_real_escape_string, de forma a escapar o ' com um \.

(fazendo assim o query pesquisar pelo utilizador inexistente \'; UPDATE toni SET password=\'lulz\' WHERE user=\'queroAtuaConta\').

Huge text is huge, apeteceu-me escrever. :P


I intend to live forever. So far so good.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

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