Ir para conteúdo

Arquivado

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

deehhalves

Cadastro de clientes com imagem (php+mysql)

Recommended Posts

Não estou conseguindo fazer um cadastro de clientes, cuja os campos são:

Nome, sobrenome, e-mail, senha e um upload com a foto do cliente (que retornará pra ele quando ele logar). Todas as informações estão corretamente sendo cadastradas corretamente no banco de dados, menos a imagem (lembrando, obviamente, que a imagem terá um diretório dentro do servidor);

 

<form name="login-form" class="login-form" action="cadastro_valid.php" enctype="multipart/form-data" method="POST">
<div class="header">
<center><img src="img/logo.png" style="width: 110px; margin-left: 20px; margin-top: 20px;"><center>
<h1>Cadastre-se em nossa loja</h1>
<span>Preencha o formulário corretamente para se cadastrar e adquirir nossos produtos.</span>
</div>


<div class="content">
<input name="nome"  required type="text" class="input name" placeholder="Nome"  />
<input name="sobrenome" required  type="text" class="input email" placeholder="Sobrenome"  />
<input name="email"  required type="email" onblur="validacaoEmail(login-form.usarname)" class="input login" placeholder="E-mail"  />
<input name="senha"  required type="password" maxlength="8" class="input senha" placeholder="Senha (Max 8 caracteres)"/>


<input type="file" name="upload_img"><!--input para upload-->
</div>


<div class="footer">
  <input style="margin-right: 48px;" type="submit" name="submit_cadastro" value="Cadastrar-se" class="button" />
</div>
</form>

E o que faz a validação (o código que é responsável por fazer o upload e cadastrar no banco eu, na verdade, peguei da internet e tentei edita-lo para se adequar ao meu projeto, porém, já mudei ele de todos os jeitos e não consegui. Estou enviando o arquivo como peguei pois já não sei o que tirar dele para q ele funcione legal):

 

<html>
<body>
<head>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
</head>
<div class="alert alert-success" role="alert"><strong>Pronto!!</strong> Seu cadastro foi realizado com <strong>sucesso</strong>. Você será redirecionado para a página de login em segundos.</div>
<center><img src="img/carregando-pacotes.gif" style="margin-top: 280px; width: 48px;"></center>
<style>
body {
}
p {
font-size: 16px; 
margin-left: 11px;
}
</style>
<br><center><p><strong>Aguarde...</strong></p></center>
<?php


include("conexao.php");


$nome = $_POST['nome'];
$sobrenome = $_POST['sobrenome'];
$email = $_POST['email'];
$senha = $_POST['senha'];


$sql = "insert into cadastro (nome, sobrenome, email, senha, tipo) values
(\"$nome\",\"$sobrenome\",\"$email\",\"$senha\",\"USER\");
";
mysql_query($sql);
header( "refresh:5;url=login.php" );




if(isset($_POST['submit_cadastro'])){
//INFO IMAGEM
$imagem = $_FILES['img'];
$nome = $imagem['name'];
$tmp = $imagem['tmp_name'];
$size = $imagem['size'];
$formato = end(explode('.',$nome));


//DEFINCOES DA IMAGEM
$pasta = 'fotos_usu';
$extesoes = array('jpg','jpeg','png');
$tamanho = 26214400;


if(empty($nome)){
echo '<script>alert("Selecione uma Imagem!");</script>';
}elseif($tamanho < $size){
echo '<script>alert("Imagem muito grande");</script>';
}elseif(!in_array($formato, $extesoes)){
echo '<script>alert("Imagem em Formato Inválido! Apenas em JPG ou PNG");</script>';
}else{
//CODEHTMLhghght76hgj.jpg
$nome = 'IMG'.uniqid().'.'.$formato;
$upload = move_uploaded_file($tmp, $pasta.'/'.$nome);


if($upload){
$sql = mysql_query("INSERT INTO cadastro (imagem) VALUES ('$nome')");
header("Location: index.php");
}else{
echo '<script>alert("Erro");</script>';
}
}
}


?>
</body>
</html>

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está forçando um refresh, usando header(), entre a consulta e o upload

o problema pode estar aí. retire o header e teste de novo.

 

Outras duas orientações

 

1. Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 2

 

2. funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Não, o problema não é o refresh pois todos os outros dados são cadastrados, menos a imagem.

Os erros que ele me retorna é esses: "Notice: Undefined index: img in C:\wamp\www\AIRPM\cadastro_valid.php on line 33"

 

"Strict standards: Only variables should be passed by reference in C:\wamp\www\AIRPM\cadastro_valid.php on line 37"

 

O segundo erro dá com bastante frequência e não sei o que eles querem dizer.

Tirei o refresh e o erro/não cadastramento no banco ainda continua.

 

2 - Não, não vou usar MySQLi ou PDO. Não entendo nem Mysql_* direito, quanto mais PDO. Estou estudando para pegar a lógica e depois sim usar coisas mais avançadas e recomendadas como MySQLi. Meu projeto é um projeto de escola, então não tem muita necessidade de usar essas funções agora. Obrigado pela dica

Compartilhar este post


Link para o post
Compartilhar em outros sites

No formulário está:

<input type="file" name="upload_img">

 

Mas na hora de resgatar você está procurando:

$imagem = $_FILES['img'];

 

Ou seja, se decida qual nome deseja utilizar e utilize o mesmo no input e no $_FILES...

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Não, o problema não é o refresh pois todos os outros dados são cadastrados, menos a imagem.

Exato... Você colocou o refresh exatamente depois de cadastrar no banco, mas antes do upload.

Faça o que o ESerra sugeriu, mas, se mantiver o refresh ali, o problema persistirá.

 

 

O segundo erro dá com bastante frequência e não sei o que eles querem dizer.

Tirei o refresh e o erro/não cadastramento no banco ainda continua.

Troque isto:

$formato = end(explode('.',$nome));

por isto:

$arr_nome = explode('.',$nome);
$formato = end($arr_nome);

O primeiro erro é o que o ESErra explicou.

 

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.