Ir para conteúdo

POWERED BY:

Arquivado

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

x_confused

Upload só funciona localmente

Recommended Posts

Verifica se a pasta na qual você quer transferir o arquivo realmente existe, e se está informando o endereço dela corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhadinha nesse script, tem algum comando nele que não funciona no linux?

CODE
<?php

 

 

//FAZER UPLOAD DO BANNER (PARTE MAIS CHATA HEHEHE)

if ( (isset($HTTP_POST_FILES['banner']['name']) && is_uploaded_file($HTTP_POST_FILES['banner']['tmp_name']))) 

{

 

if (!isset($id_banner))

{

$id_banner = mysql_insert_id(); //Retorna o ID gerado da operação INSERT anterior 

}

 

$type = basename($HTTP_POST_FILES['banner']['type']); //Retorna extensão do nome do arquivo do caminho 'banner'

 

switch ($type) 

{

 

case 'jpeg':

case 'pjpeg':  $filename = "banners/$id_banner.jpg";

move_uploaded_file($HTTP_POST_FILES['banner']['tmp_name'], 

 $filename

);

$sql = "update tb_banner

set banner = '$filename'

where id = $id_banner"

;

$result = mysql_query($sql);

if (!$result) 

{

print "é jpg - Houve um erro ao executar <pre>$sql</pre>";

print mysql_error();

exit;

}

break;

 

case 'x-shockwave-flash':  $filename1 = "banners/$id_banner.swf";

move_uploaded_file($HTTP_POST_FILES['banner']['tmp_name'], 

 $filename1

);

$sql = "update tb_banner

set banner = '$filename1'

where id = $id_banner"

;

$result = mysql_query($sql);

if (!$result) 

{

print "é swf - Houve um erro ao executar <pre>$sql</pre>";

print mysql_error();

exit;

}

break;

 

 

default:

print '<script>alert("Formato do banner é inválido:")</script> '.

$HTTP_POST_FILES['banner']['type'];

}

}

 

?>

 

ps-----dei um print mysql_error(); e parece que ele não consegue pegar a variável $id_banner, pois no local dela fica um espaço. Note o erro retornado:

 

 

UPDATE tb_banner set banner='banners/ .jpg' WHERE id=

 

CHECK THE MANUAL THAT CORRESPONDS TO YOUR MYSQL SERVER VERSION FOR THE RIGHT SYNTAX TO USE NEAR " AT LINE 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal no meu servidor na net fiz comparações através do phpinfo() e pelo q eu notei a unica diferenca eh q na net allow_url_fopen está off enquanto no meu servidor local está on....será que este pode ser o problema? (os dois servidores são windows)grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser várias coisas você deve debugar para encontrar o problemaao que me parece, o servidor onde não está funcionando, talvez esteja com o php configurado com o register_globals = OFFo seu script está usando:"HTTP_POST_FILES"experimente trocar pra:"_FILES"você comentou que não consegue fazer a requisição da variável "$id_banner". Isso aumenta as suspeitas de que seja mesmo o register_globalspara fazer a requisição, faça assim:$id_banner = $_POST['id_banner'];se isso não resolver, verifique o caminho da pasta temporária para uploads.para implementar o seu script, tornando-o seguro e funcional, faça bastante testes de depuração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz essa modificações mas o erro ainda continua...no meu servidor na internet Register_Globals ta ON .... Tentem cadastrar um banner nesse sistema e vejam o erro que retorna...faz 1 semana q to tentando resolver... no meu servidor local funciona no servidor remoto não (os dois são windows) www.guiadaoferta.com.br/banner/adm --- user:adm, senha:adm ....... o script é esse:

 

ps:entrei em contato com o suporte do meu servidor o atendente disse que eu teria q rever meu código pois as versões MYSQL são diferentes....será q é verdade? Pois no servidor na internet a versão é 4.0.25 enquanto a versão que eu utilizo é 4.0.14.

 

CODE

<?

include ('conexao.php');

//PEGA DADOS

$cliente = $_POST['cliente'];

$url  = $_POST['url'];

$largura = $_POST['largura'];

$altura = $_POST['altura'];

 

 

//SE FOR UMA ATUALIZAÇÃO

if (isset($_POST['id_banner']) && $_POST['id_banner']!='') 

{  

$id_banner = $_POST['id_banner'];

 

$sql = "update tb_banner

 

set cliente = '$cliente',

url  = '$url', 

largura = '$largura',

altura = '$altura'  

 

where id = $id_banner";

}

 

//SE FOR UM NOVO BANNER

else

{

$sql = "insert into tb_banner 

(cliente, url, largura, altura)

values 

('$cliente', '$url', '$largura', '$altura')";

}

 

$result = mysql_query($sql);

 

//SE DER ALGUM ERRO

if (!$result) 

{

print "Houve um erro ao executar <pre>$sql</pre>";

print mysql_error();

exit;

}

 

//FAZER UPLOAD DO BANNER (PARTE MAIS CHATA HEHEHE)

if ( (isset($_FILES['banner']['name']) && is_uploaded_file($_FILES['banner']['tmp_name']))) 

{

 

if (!isset($id_banner))

$id_banner = mysql_insert_id(); //Retorna o ID gerado da operação INSERT anterior 

 

 

$type = basename($_FILES['banner']['type']); //Retorna extensão do nome do arquivo do caminho 'banner'

 

switch ($type) 

{

 

case 'jpeg':

case 'pjpeg':  $filename = "banners/$id_banner.jpg";

move_uploaded_file($_FILES['banner']['tmp_name'], 

 $filename);

$sql = "update tb_banner

set banner = '$filename'

where id = $id_banner";

$result = mysql_query($sql);

if (!$result) 

{

print "é jpg - Houve um erro ao executar <pre>$sql</pre>";

print mysql_error();

exit;

}

break;

 

case 'x-shockwave-flash':  $filename1 = "banners/$id_banner.swf";

move_uploaded_file($_FILES['banner']['tmp_name'], 

 $filename1);

$sql = "update tb_banner

set banner = '$filename1'

where id = $id_banner";

$result = mysql_query($sql);

if (!$result) 

{

print "é swf - Houve um erro ao executar <pre>$sql</pre>";

print mysql_error();

exit;

}

break;

 

 

default: print '<script>alert("Formato do banner é inválido:")</script> '.

$_FILES['banner']['type'];

}

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal parece que o script não consegue pegar a variável id_banner na hora de inserir o valor do campo banner na tabela, pois o upload do aruivo é feito, mas o nome fica vazio.extensão ( .jpg) além de não inserir o campo banner na tabela.

 

Será que o erro está nessa linha:

CODE
<?php

 

 

if (!isset($id_banner))

$id_banner mysql_insert_id(); //Retorna o ID gerado da operação INSERT anterior 

 

 

 

?>

 

Estranho é que funciona em localhost mas no host da internet nao funciona. Meu MYSQL é versão 4.0.12, da internet é 4.0.25

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal, descobri o seguinte: o erro acontece pq meu servidor remoto REGISTER_GLOBALS ta ON e meu LOCALHOST REGISTER_GLOBALS ta OFF ... mudei pra ON aki e passou a acontecer o mesmo erro.... como eu faço pra resgatar a variável id_banner com REGISTER_GLOBALS ON?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o REGISTER_GLOBALS está off você não consegue resgatar os campos do form só chamando o nome do campo. Voce tem que colocar o $_POST['id_banner']. Então seu código ficaria:<?...$id_banner = $_POST['id_banner'];if (!isset ( $id_banner ) ) $id_banner = mysql_insert_id(); //Retorna o ID gerado da operação INSERT anterior ...<?Como o "hinom" já havia falado.Em seus scripts passe a usar assim para resgatar variaveis de forms:$_COOKIE[nome do cookie]$_FILES[nome do arquivo]$_GET[nome da variavel na url]$_SESSION[nome da sessã]Qualquer coisa manda aí. Falou

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá webruno, acrescentei a linha mas retorna o mesmo erro. Na verdade eu estou trabalhando com REGISTER_GLOBALS ON, não OFF. Quando trabalho com ele OFF o script funciona normalmente.Grato,

Compartilhar este post


Link para o post
Compartilhar em outros sites

eae webruno e uconsegui resolver aqui...primeiro ao invés de if (!isset($id_banner)) usei if (empty($id_banner))segundo ao invés de move_uploaded_file usei copy (Não sei porque mas funcionou o upload só com o copy)Obrigado!

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.