Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

abobre

Integrar dois sistemas ( Cadastro de usuario e upload de foto) ?

Recommended Posts

Boa noite,

 

estou com grande dificuldade para integrar duas sistemas, um de cadastro e outro de upload com redimensionamento da foto.

 

eu preciso que o novo usuario informe uma imagem e na hora do cadastro o sistema ja faz o upload da foto redimensionada e cadastro o nome da foto no banco de dados.

vale lembrar que os sistemas funcionam perfeitamente quando estão separados.

 

vou postar os script e gostaria que obter uma ajuda.

Sistema de cadastro

 

<?php

include "config.php";

$nome = trim($_POST['nome']);
$sobrenome  = trim($_POST['sobrenome']);
$email = trim($_POST['email']);
$usuario = trim($_POST['usuario']);
$info = trim($_POST['info']);

/* Vamos checar algum erro nos campos */

if ((!$nome) || (!$sobrenome) || (!$email) || (!$usuario)){

   echo "ERRO: <br /><br />";

   if (!$nome){

       echo "Nome é requerido.<br />";

   }

   if (!$sobrenome){

       echo "Sobrenome é requerido.<br /> <br />";

   }

   if (!$email){

       echo "Email é um campo requerido.<br /><br />";

   }

   if (!$usuario){

       echo "Nome de Usuário é requerido.<br /><br />";

   }

   echo "Preencha os campos abaixo: <br /><br />";

   include "formulario_cadastro.php";

}else{

   /* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */

   $sql_email_check = mysql_query(

       "SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'"

       );

   $sql_usuario_check = mysql_query(

       "SELECT COUNT(usuario_id) FROM usuarios WHERE usuario='{$usuario}'"

       );

   $eReg = mysql_fetch_array($sql_email_check);
   $uReg = mysql_fetch_array($sql_usuario_check);

   $email_check = $eReg[0];
   $usuario_check = $uReg[0];

   if (($email_check > 0) || ($usuario_check > 0)){

       echo "<strong>ERRO</strong>: <br /><br />";

       if ($email_check > 0){

           echo "Este email já está sendo utilizado.<br /><br />";

           unset($email);

       }

       if ($usuario_check > 0){

           echo "Este nome de usuário já está sendo
                utilizado.<br /><br />";

           unset($usuario);

       }

       include "formulario_cadastro.php";

   }else{

       /* Se passarmos por esta verificação ilesos é hora de
       finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de
       forma randômica*/

       function makeRandomPassword(){

           $salt = "abchefghjkmnpqrstuvwxyz0123456789";
           srand((double)microtime()*1000000);
           $i = 0;

           while ($i <= 7){

               $num = rand() % 33;
               $tmp = substr($salt, $num, 1);
               $pass = $pass . $tmp;
               $i++;

           }

           return $pass;

       }

       $senha_randomica   =  makeRandomPassword();
       $senha = md5($senha_randomica);

       // Inserindo os dados no banco de dados

       $info = htmlspecialchars($info);

       $sql = mysql_query(

               "INSERT INTO usuarios
               (nome, sobrenome, email, usuario, senha, info, data_cadastro)

               VALUES
               ('$nome', '$sobrenome', '$email', '$usuario', '$senha', '$info', now())")

               or die( mysql_error()

               );

       if (!$sql){

           echo "Ocorreu um erro ao criar sua conta, entre em contato.";

       }else{

           $usuario_id = mysql_insert_id();

           // Enviar um email ao usuário para confirmação e ativar o cadastro!

           $headers = "MIME-Version: 1.0\n";
           $headers .= "Content-type: text/html; charset=iso-8859-1\n";
           $headers .= "From: Teu Domínio - Webmaster<email@teusite.com.br>";

           $subject = "Confirmação de cadastro - teusite.com.br";
           $mensagem  = "Prezado  {$nome} {$sobrenome},<br />
           Obrigado pelo seu cadastro em nosso site, <a href='http://www.teusite.com.br'>
http://www.teusite.com.br</a>!<br /> <br />

           Para confirmar seu cadastro e ativar sua conta em nosso site, podendo acessar à
           áreas exclusivas, por favor clique no link abaixo ou copie e cole na barra de
           endereço do seu navegador.<br /> <br />

           <a href='http://www.teusite.com.br/ativar.php?id={$usuario_id}&code={$senha}'>

http://www.teusite.com.br/ativar.php?id={$usuario_id}&code={$senha}

           </a>

           <br /> <br />
           Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo
           efetuado o login com os seguintes dados abaixo:<br > <br />

           <strong>Usuario</strong>: {$usuario}<br />
           <strong>Senha</strong>: {$senha_randomica}<br /> <br />

           Obrigado!<br /> <br />

           Webmaster<br /> <br /> <br />
           Esta é uma mensagem automática, por favor não responda!";

           mail($email, $subject, $mensagem, $headers);

           echo "Foi enviado para seu email - ( ".$email." ) um pedido de
           confirmação de cadastro, por favor verifique e sigas as instruções!";

       }

   }

}

?>

 

Sistema de upload

 

<?php
class Redimensiona{

public function Redimensionar($imagem, $largura, $pasta){

	$name = md5(uniqid(rand(),true));

	if ($imagem['type']=="image/jpeg"){
		$img = imagecreatefromjpeg($imagem['tmp_name']);
	}else if ($imagem['type']=="image/gif"){
		$img = imagecreatefromgif($imagem['tmp_name']);
	}else if ($imagem['type']=="image/png"){
		$img = imagecreatefrompng($imagem['tmp_name']);
	}
	$x   = imagesx($img);
	$y   = imagesy($img);
	$autura = ($largura * $y)/$x;

	$nova = imagecreatetruecolor($largura, $autura);
	imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $autura, $x, $y);

	if ($imagem['type']=="image/jpeg"){
		$local="$pasta/$name".".jpg";
		imagejpeg($nova, $local);
	}else if ($imagem['type']=="image/gif"){
		$local="$pasta/$name".".gif";
		imagejpeg($nova, $local);
	}else if ($imagem['type']=="image/png"){
		$local="$pasta/$name".".png";
		imagejpeg($nova, $local);
	}		

	imagedestroy($img);
	imagedestroy($nova);	

	return $local;
}
}
?>

 

Chamando a função

 

 

$foto = $_FILES['foto'];	
$redim = new Redimensiona();
$src=$redim->Redimensionar($foto, 150, "images");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Andrey Knupp,

 

eu preciso juntar esses dois scripts em um unico script.

 

exemplo

 

o usuario vai preencher um formulário de cadastro com algumas informações sobre ele e depois ele escolhe um imagem que vai ser o seu avatar.

 

no sistema de cadastro eu consigo cadastrar os dados do usuario, mais não consigo cadastrar um avatar para ele, por isso preciso unir esses dois scripts.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm. Eu ACHO que entendi o que tu quis dizer. Voocê quer chamar a class que você setou com as configurações do avatar para o usuario cadastrar, mas se não salva a foto... Pode ser pelo fato de você não ter reservado um campo na tabela do BD ou porque você chamou a class no lugar errado.

Qual dos dois problemas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que isso cara?

    }else{

       /* Se passarmos por esta verificação ilesos é hora de
       finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de
       forma randômica*/

       function makeRandomPassword(){

você só define a função se cair na condição else ?

oque é isso ? pra que isso ?

 

olha a confusão de conceitos ai!

 

antes de 'unir' os scripts, divida-os.

"Dividir para conquistar", lembra ?

 

o teu código pode e precisa ser melhorado.

Olha isso aqui por exemplo:

class Redimensiona{

       public function Redimensionar($imagem, $largura, $pasta){

mas pq usar o construtor?

 

se eu tiver que enviar 3 imagens, terei que instanciar 3 vezes a mesma classe. Alocar 3 lugares diferentes na memória para o mesmo objeto, desnecessariamente!

 

 

Entendeu o problema ? existem erros graves de conceitos. Erros básicos de programação!

Ou você dá um stop agora, e corrige, ou vai levando, e construindo gambiarra em cima de gambiarra. "Apenas para ver funcionando".

 

Olha o corpo do metodo:

                
               $name = md5(uniqid(rand(),true));

               if ($imagem['type']=="image/jpeg"){
                       $img = imagecreatefromjpeg($imagem['tmp_name']);
               }else if ($imagem['type']=="image/gif"){
                       $img = imagecreatefromgif($imagem['tmp_name']);
               }else if ($imagem['type']=="image/png"){
                       $img = imagecreatefrompng($imagem['tmp_name']);
               }
               $x   = imagesx($img);
               $y   = imagesy($img);
               $autura = ($largura * $y)/$x;

               $nova = imagecreatetruecolor($largura, $autura);
               imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $autura, $x, $y);

               if ($imagem['type']=="image/jpeg"){
                       $local="$pasta/$name".".jpg";
                       imagejpeg($nova, $local);
               }else if ($imagem['type']=="image/gif"){
                       $local="$pasta/$name".".gif";
                       imagejpeg($nova, $local);
               }else if ($imagem['type']=="image/png"){
                       $local="$pasta/$name".".png";
                       imagejpeg($nova, $local);
               }               

               imagedestroy($img);
               imagedestroy($nova);    

               return $local;
       }

caraca!!! qntas linhas!

Você chamou ele de Redimensiona, mas é só isso que ele faz?

Resposta: não.

 

Ele também: pega o tipo da imagem(2 vezes inclusive, perceba oque deveria ser evidente, que é essa duplicação de condicionais), chama uma função especifica para criação da imagem dependendo do tipo, depois realmente redimensiona, baseado nesse algoritmo, e depois ele atribui uma extensão.

 

Enfim, viu qntas coisas você fez ? você não redimensionou somente. Você fez uma série de outras coisas antes, no meio e depois.

Nesse ponto, deve ficar claro que o pobre do teu metodo, implora por uma divisão. Existem outros métodos embutidos ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra coisa, note que aqui:

if ($imagem['type']=="image/jpeg"){
                       $local="$pasta/$name".".jpg";
                       imagejpeg($nova, $local);
               }else if ($imagem['type']=="image/gif"){
                       $local="$pasta/$name".".gif";
                       imagejpeg($nova, $local);
               }else if ($imagem['type']=="image/png"){
                       $local="$pasta/$name".".png";
                       imagejpeg($nova, $local);
               }            

você gera imagens do tipo jpg mesmo se a original for gif ou png...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera obrigado pela resposta, vou tentar melhorar esses scripts, mais meu conhecimento é bem baixo ainda em php e esses scrips foram retirados da internet.

 

de qualquer forma agradeço o auxilio de vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera obrigado pela resposta, vou tentar melhorar esses scripts

hum..

, mais meu conhecimento é bem baixo ainda em php

então cara, vale mais a pena você tirar 2~3 dias para estudar, doq ficar se matando em cima de scripts que você não entende direito.

e esses scrips foram retirados da internet.

não faça isso.

Não use coisas que você não sabe oque fazem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.