Forum Pplware

Versão Completa: mudar esta sintaxe PDO para mysql...
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boa noite, obtive este script de codigo num video tutorial, que no fundo serve para saber se os dados se login estão corretos e se realmente tiverem,faz um inicio de sessão com o user e AVATAR...!
Oproblema é que no video tudo corre bem, nao aparece erros mas como mostro no script...NA ULTIMA LINHA , APRESENTA-ME UM ERRO....

COMO PODERIA FAZER UM INICIO DE SESSÃO COM UM AVATAR, UMA VEZ QUE É UM "OBJECTO "DIFERENTE?
INICIAR SESSAO USANDO A SINTAXE MYSQL, EU JÁ O FIZ....SÓ QUE NAO SEI COMO FAZER INICIAR A SESSAÕ DO AVATAR....ISTO FAZ PARTE DE UM PEQUENO FORUM QUE ESTOU CONSTRUINDO ONDE QUERO APRESENTAR ASSIM QUE ENTRO NA PAGINA FORUM.PHP , APRESETANDO O NOME DO UTILIZADOR E O AVATAR CORRESPONDENTE.... Sad

//variaveis da base de dados...
include 'config.php';

//ligação á base de dados...
$ligacao = new PDO("mysql: dbname=$base_dados;host=$host", $user ,$password);

//instrução sql...
$motor = $ligacao->prepare("SELECT * FROM users WHERE username = ? AND pass = ?");

//introduzir os parametros
$motor->bindParam(1,$utilizador, PDO::PARAM_STR);//PARAMETRO DE STRING
$motor->bindParam(2,$password_utilizador, PDO::PARAM_STR);

//executar
$motor->execute();

//fechar a ligação
$ligacao = null;

//verifica se os dados correspondem a valores da base de dados
if($motor->rowCount() == 0)
{
//ERRO - DADOS INVALIDOS
echo '<div class="erro">
 
dados de login invalidos. <br> <br>
<a href="index.php">tente novamente</a>
 
</div>';

exit;
}

else
{
//definir os dados da sessão...
$_SESSION['user'] = $utilizador ;


//ERRO FICA NESTA LINHA ABAIXO....

$_SESSION['avatar'] = $motor->fetch(PDO::FETCH_ASSOC)['avatar'];    
Já agora experimenta fazer isto:
$dados_user = $motor->fetch(PDO::FETCH_ASSOC);
[font=Verdana, Arial, sans-serif]$_SESSION['avatar'] = $dados_user['avatar'];  
[/font]



[font=Verdana, Arial, sans-serif]Se não resultar poderá ser por estares a por ligação como null?[/font]


E um pequeno aparte, se vai guardar passwords como texto...meu deus... isso não se faz, usa uma hash ao registrar, pelo menos ao registrar faz algo do genero:

//no topo 
define(SALT, "fdsklç3F#324=?3532k523?Dl2d"); // ou algo do genero, neste caso a SALT tem de se manter igual

....
$password = md5($password.SALT); // e guardas isto como password
....


quando o utilizador estiver a fazer login antes de colocares a password na query fazes o mesmo -> md5($password.SALT);
(24-01-2015 21:08)eSkiSo Escreveu: [ -> ]Já agora experimenta fazer isto:
$dados_user = $motor->fetch(PDO::FETCH_ASSOC);
[font=Verdana, Arial, sans-serif]$_SESSION['avatar'] = $dados_user['avatar'];  
[/font]



[font=Verdana, Arial, sans-serif]Se não resultar poderá ser por estares a por ligação como null?[/font]


E um pequeno aparte, se vai guardar passwords como texto...meu deus... isso não se faz, usa uma hash ao registrar, pelo menos ao registrar faz algo do genero:

//no topo 
define(SALT, "fdsklç3F#324=?3532k523?Dl2d"); // ou algo do genero, neste caso a SALT tem de se manter igual

....
$password = md5($password.SALT); // e guardas isto como password
....


quando o utilizador estiver a fazer login antes de colocares a password na query fazes o mesmo -> md5($password.SALT);
Hummmmm.... muito obrigado pela dica, eu ainda sou novato nisto, nem sequer me ensinaram php, so html....o php tem sido as minhas custas com a ajuda do google e do forum e de um livro tb , mais uma vez , muito obrigado , provavelmente ainda terei mais algumas duvidas Smile
Devias investir um tempinho a aprender uma framework php, eu uso o Codeigniter ( http://www.codeigniter.com/ ) é  relativamente facil de aprender e a documentação ajuda-te bastante. E tens varios videos no Youtube a explicar como trabalhar com o codeigniter do principio ao fim.
(01-02-2015 13:19)eSkiSo Escreveu: [ -> ]Devias investir um tempinho a aprender uma framework php, eu uso o Codeigniter ( http://www.codeigniter.com/ ) é  relativamente facil de aprender e a documentação ajuda-te bastante. E tens varios videos no Youtube a explicar como trabalhar com o codeigniter do principio ao fim.
muito obg pela resposta,Smile vou ver !!
URL's de Referência