abobre 0 Denunciar post Postado Julho 22, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Julho 22, 2011 Qual a dificuldade ? não entendi bem o que você quis dizer com Integrar dois sistemas. Compartilhar este post Link para o post Compartilhar em outros sites
abobre 0 Denunciar post Postado Julho 22, 2011 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
Dii 15 Denunciar post Postado Julho 22, 2011 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
William Bruno 1501 Denunciar post Postado Julho 22, 2011 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
Henrique Barcelos 290 Denunciar post Postado Julho 22, 2011 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
abobre 0 Denunciar post Postado Julho 22, 2011 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
William Bruno 1501 Denunciar post Postado Julho 22, 2011 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