Foto de perfil de usuário!

20/08/2014

0

PHP

bom gente! vamos pensar juntos! tenho um sistema em que tenho 5 usuários cadastrados! eles entram na index e aparece uma página de login e apresentação do meu sistema! quando eles fazem o login eu me aproveito do seguinte código para trocar ele de tela!

<?php if (!isset($_SESSION['usuarioID'])){ ?>

<h1>Código da index</h1>

<?php }else{
	include "home.php";
} ?>


bom a função php verifica se o usuário está logado, se não estiver ele exibe o código da index, se por ventura o usuário vier logar, o código da index vai desaparecer e uma função else me permite chamar a home.php que trás algumas informações do usuário!

bom agora minha dúvida é a seguinte, digamos que em home eu tenha o código!

<div class="home">

			<div class="avatar_perfil">
					
		<img src="usuario_logado/10561697_574629705980813_3286886594384863998_n.jpg" title="Perfil" width="160px" height="200px">
			
			</div>
       </div>


o que eu quero é que o usuário possa alterar essa foto de perfil no painel dele, e seja tudo salvo em um banco de dados para que quando cada usuário entrar aparece a foto dele no lugar da foto de perfil!

acho que vai ser preciso usar um banco de dados pra fazer isso, mas não sei como!
Cleyton Caetano

Cleyton Caetano

Responder

Posts

20/08/2014

Ronaldo Lanhellas

Bom, primeiro você deve pensar no espaço que irá ocupar com as imagens, pois se forem imagens de boa resolução que tenham 1MB aproximadamente, é inviável colocar isso no banco, você poderia armazenar em uma pasta e apenas fazer o link no banco ( eu gosto de trabalhar assim), se forem imagens bem pequenas (3kb, por exemplo) você pode até salvar no banco, mas ainda assim eu optaria por salvar em uma pasta e apenas salvar o link no banco.
Responder

20/08/2014

Cleyton Caetano

Bom, primeiro você deve pensar no espaço que irá ocupar com as imagens, pois se forem imagens de boa resolução que tenham 1MB aproximadamente, é inviável colocar isso no banco, você poderia armazenar em uma pasta e apenas fazer o link no banco ( eu gosto de trabalhar assim), se forem imagens bem pequenas (3kb, por exemplo) você pode até salvar no banco, mas ainda assim eu optaria por salvar em uma pasta e apenas salvar o link no banco.


é este mesmo meu plano amigo, que a foto seja armazenada no meu servidor na pasta ...images/users/profile_photo e assim o banco de dados pegue o link de cada usuário e exiba no painel! agora isso esta em matando aqui! como é que o usuário vai enviar a foto pelo painel e o banco de dados vai pegar automático?
Responder

20/08/2014

Ronaldo Lanhellas

Vou ti passar o passo-a-passo e você começa o desenvolvimento a partir disso, surgindo dúvidas pode postar aqui:

1 - Você terá que colocar um componente para upload de arquivos (ex: uploadify), que seja capaz de enviar a foto do cliente para o servidor;
2 - Quando você pegar esta foto no servidor, você deve atribuir um nome pra ela (sugiro que seja o mesmo ID do cliente, pois assim você garante que nunca haverá conflitos entre os nomes das fotos);
3 - Crie uma coluna na tabela usuário, chamada 'caminho_foto' que terá o valor '/images/users/profile_photo/id_dousuario.jpg
4 - Quando o usuário logar no seu painel, você vai carregar a foto que está em 'caminho_foto';
Responder

20/08/2014

Cleyton Caetano

Vou ti passar o passo-a-passo e você começa o desenvolvimento a partir disso, surgindo dúvidas pode postar aqui:

1 - Você terá que colocar um componente para upload de arquivos (ex: uploadify), que seja capaz de enviar a foto do cliente para o servidor;
2 - Quando você pegar esta foto no servidor, você deve atribuir um nome pra ela (sugiro que seja o mesmo ID do cliente, pois assim você garante que nunca haverá conflitos entre os nomes das fotos);
3 - Crie uma coluna na tabela usuário, chamada 'caminho_foto' que terá o valor '/images/users/profile_photo/id_dousuario.jpg
4 - Quando o usuário logar no seu painel, você vai carregar a foto que está em 'caminho_foto';


entendi! vou tentar montar o projeto aqui! vlw!
Responder

20/08/2014

Ronaldo Lanhellas

Vou ti passar o passo-a-passo e você começa o desenvolvimento a partir disso, surgindo dúvidas pode postar aqui:

1 - Você terá que colocar um componente para upload de arquivos (ex: uploadify), que seja capaz de enviar a foto do cliente para o servidor;
2 - Quando você pegar esta foto no servidor, você deve atribuir um nome pra ela (sugiro que seja o mesmo ID do cliente, pois assim você garante que nunca haverá conflitos entre os nomes das fotos);
3 - Crie uma coluna na tabela usuário, chamada 'caminho_foto' que terá o valor '/images/users/profile_photo/id_dousuario.jpg
4 - Quando o usuário logar no seu painel, você vai carregar a foto que está em 'caminho_foto';


entendi! vou tentar montar o projeto aqui! vlw!


De nada, boa sorte.
Responder

20/08/2014

Cleyton Caetano

cara eu fiz o que pude kkkk

eu criei uma página pra fazer o upload da imagem e tals, esta dando um erro mais esta upando a imagem normal!

veja como ficou a estrutura.

change_profile_photo.php

<?php
    $PHP_SELF = "";
    //Diretório aonde ficará os arquivos
    $dir = "./image/users/profile_photo/";
     
    //Extensões permitidas
    $ext = array("gif","jpg","png");
     
    //Quant. de campos do tipo FILE
    $campos = 6;
     
    //Formulário
    echo '<form method="post" action="'.$PHP_SELF.'" enctype="multipart/form-data">
      <input type="file" name="file[]">
		<br />
		<br />
		<br />
     <input type="submit" name="submit" value=" OK ">
     </form>';
     
     
    //Se for enviado
    if (isset($_POST['submit'])) {
     
    //Obtendo info. dos arquivos
    $f_name = $_FILES['file']['name'];
    $f_tmp = $_FILES['file']['tmp_name'];
    $f_type = $_FILES['file']['type'];
     
     
    //Contar arquivos enviados
    $cont=0;
     
    //Repetindo de acordo com a quantidade de campos FILE
    for($i=0;$i<$campos;$i++){
     
    //Pegando o nome
    $name = $f_name[$i];
     
    //Verificando se o campo contem arquivo
      if ( ($name!="") and (is_file($f_tmp[$i])) and (in_array(substr($name, -3),$ext)) ) {
     
        if ($cont==0) {
          echo "<b>Arquivo(s) enviados:
    </b>";
        }
          echo $name." - ";
     
          //Movendo arquivo's do upload
          $up = move_uploaded_file($f_tmp[$i], $dir.$name);
     
            //Status
            if ($up==true):
                echo  "<i>Enviado!</i>";
                  $cont++;
            else:
                echo "<i>Falhou!</i>";
            endif;
     
          echo "
    ";
      }
     
    }
     
    echo ($cont!=0) ? "<i>Total de arquivos enviados: </i>".$cont : "Nenhum arquivo foi enviado!";
    }
    ?>


eu to fazendo o teste o com usuário dono do ID 1 a imagem vai ficar assim.

/image/users/profile_photo/1.jpg

agora o problema! como vou inserir esse endereço automático no banco de dados? e como renomear a imagem automaticamente de qualquer nome que ela tiver para o ID do usuário?
ou seja, meu problema está sendo, trocar o nome do arquivo e colocar o link atualizado no banco de dados!
Responder

21/08/2014

Cleyton Caetano

alguém???
Responder

21/08/2014

Ronaldo Lanhellas

Vamos lá,

Você deve mudar a variável $name para receber o novo nome da imagem (sendo o ID) e não o antigo, veja:

//Pegando o nome
    $name = id_do_usuario;
Responder

21/08/2014

Cleyton Caetano

Vamos lá,

Você deve mudar a variável $name para receber o novo nome da imagem (sendo o ID) e não o antigo, veja:

//Pegando o nome
    $name = id_do_usuario;


fiz isso mais da erro, a imagem não é upada!
Responder

21/08/2014

Ronaldo Lanhellas

Mostre o erro, sempre poste o erro, fica melhor de lhe ajudar.
Responder

21/08/2014

Cleyton Caetano

Mostre o erro, sempre poste o erro, fica melhor de lhe ajudar.


Bom, eu percebi duas coisas, se tento mudar a foto de perfil sem o include "seguranca.php"; ele da o seguinte erro!

Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\change_profile_photo.php on line 55

Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\change_profile_photo.php on line 55

Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\change_profile_photo.php on line 55

Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\change_profile_photo.php on line 55

Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\change_profile_photo.php on line 55

Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-DevServer-14.1VC11\data\localweb\SITE\change_profile_photo.php on line 55
Nenhum arquivo foi enviado!


do contrario se uso o o include "seguranca";

ele deixa de exibir o erro! creio que pq o ID do usuário passa a ser válido, que quando quando tento enviar a foto aparece uma mensagem dizendo
Nenhum arquivo foi enviado!


o código fica assim.

	   <?php
		include "seguranca.php";
	   
		$PHP_SELF = "";
		//Diretório aonde ficará os arquivos
		$dir = "./image/users/profile_photo/";
		 
		//Extensões permitidas
		$ext = array("gif","jpg","png");
		 
		//Quant. de campos do tipo FILE
		$campos = 6;
		 
		//Formulário
		echo '<form method="post" action="'.$PHP_SELF.'" enctype="multipart/form-data">
      <input type="file" name="file[]">
		<br />
		<br />
		<br />
     <input type="submit" name="submit" value=" OK ">
     </form>';
     
     
    //Se for enviado
    if (isset($_POST['submit'])) {
     
    //Obtendo info. dos arquivos
    $f_name = $_FILES['file']['name'];
    $f_tmp = $_FILES['file']['tmp_name'];
    $f_type = $_FILES['file']['type'];
     
     
    //Contar arquivos enviados
    $cont=0;
     
    //Repetindo de acordo com a quantidade de campos FILE
    for($i=0;$i<$campos;$i++){
     
    //Pegando o nome
    $name = $_SESSION['usuarioID'];
     
    //Verificando se o campo contem arquivo
      if ( ($name!="") and (is_file($f_tmp[$i])) and (in_array(substr($name, -3),$ext)) ) {
     
        if ($cont==0) {
          echo "<b>Arquivo(s) enviados:
    </b>";
        }
          echo $name." - ";
     
          //Movendo arquivo's do upload
          $up = move_uploaded_file($f_tmp[$i], $dir.$name);
     
            //Status
            if ($up==true):
                echo  "<i>Enviado!</i>";
                  $cont++;
            else:
                echo "<i>Falhou!</i>";
            endif;
     
          echo "
    ";
      }
     
    }
     
    echo ($cont!=0) ? "<i>Total de arquivos enviados: </i>".$cont : "Nenhum arquivo foi enviado!";
    }
    ?>
Responder

21/08/2014

Ronaldo Lanhellas

Deixa o include seguranca.php. O problema está aqui:

$up = move_uploaded_file($f_tmp[$i], $dir.$name);


Antes de executar o move_uploaded_file execute um echo em $f_tmp[$i] e outro echo em $dir.$name, vamos ver qual conteúdo aparece.
Responder

21/08/2014

Cleyton Caetano

Deixa o include seguranca.php. O problema está aqui:

$up = move_uploaded_file($f_tmp[$i], $dir.$name);


Antes de executar o move_uploaded_file execute um echo em $f_tmp[$i] e outro echo em $dir.$name, vamos ver qual conteúdo aparece.


não apareceu nada!
Responder

21/08/2014

Ronaldo Lanhellas

Pode ser que ele não esteja entrando no IF

  if ( ($name!="") and (is_file($f_tmp[$i])) and (in_array(substr($name, -3),$ext)) ) {


Execute var_dump em :

$f_tmp[$i]
Responder

21/08/2014

Cleyton Caetano

cara, to desistindo desse código, vou procurar outro aqui....
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar