• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Jedi Gu@rdi@n

Ajuda upload img

14 mensagens neste tópico

Boas.

Estou a elaborar um projecto k tenho k entregar no fim do mes.

P tal decidi fazer um exame de codigo de conduçao.

P inserir dados no exame, k e feito pelo administrador, e necessario o msm fazer login.

Tenho o seguinte codigo p fazer o upload de uma img:

<?php
include('functions.php');

if (isset($_POST['enviar']))
{
$imagem=$_POST['img'];
$pergunta=$_POST['pergunta'];
$certa=$_POST['certa'];
$pos1=$_POST['pos1'];
$pos2=$_POST['pos2'];

	if (!($pergunta && $certa && $pos1 && $pos2))
	{
		$erro='É obrigatório preencher todos os campos.';
	}
	else
	{		
		$img = $_FILES['img']['name'];
		$path= $_SERVER['DOCUMENT_ROOT']."/imgs/";
		if (empty($_FILES['img']));

			//verificar se o ficheiro é uma imagem

			list($n_imagem,$ext) = split(".", $img);

			if ($ext = "jpg" || $ext="JPG" || $ext="png" || $ext="PNG" || $ext="bmp" || $ext="BMP")
			{
				if(move_uploaded_file($_FILES['img']['tmp_name'],$path))
				{
					if (!(inserir_dados($img, $pergunta, $certa, $pos1, $pos2)))
					{
					$erro='Ocorreu um erro na inserção dos dados.Por favor tente de novo.';
					}	

					else
					$erro='Dados inseridos com sucesso.';
					}
				else
				$erro='Falhou o upload da imagem. Tente de novo.';
			}
			else
			$erro='Tem de escolher uma imagem.';
	}
}
?>

Na parte em k indico o caminho p onde vao as imgs:

($img =$_FILES['img']['name'];

$path= $_SERVER['DOCUMENT_ROOT']."/imgs/":D

Em vez de me meter a img dentro da pasta "imgs", da-me erro de permissoes de escrita.

Se apagar a pasta "imgs", é feito o upload da imagem sendo o nome da msm substituido po "imgs", sem extensao nem nd.

Pic:

semttulohs5.jpg

Preciso de ajuda p saber como fazer a img ir p dentro da pasta com o nome e extensao td direito.

Obg e fikem bem :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema de modos de escrita diria que terias de colocar o CHMOD a 0777 mas como vejo pela screen que estas em Windows é suposto nao se fazer isso.

mas tens aki um erro no codigo:

if(move_uploaded_file($_FILES['img']['tmp_name'],$path))

Terás de colocar

if(move_uploaded_file($_FILES['img']['tmp_name'],$path . $img))

Qualquer das maneiras tens no codigo algumas falhas:

list($n_imagem,$ext) = split(".", $img);

Imaginando que o file é drone.mekie.jpg isso nao vai obter a extensão.

Podes poupar codigo utilizando o strtolower()

if ($ext = "jpg" || $ext="JPG" || $ext="png" || $ext="PNG" || $ext="bmp" || $ext="BMP")

$ext = strtolower($ext);
if ($ext = "jpg" || $ext="png" || $ext="bmp")

PS: coloca o teu codigo  em Geshi [ code=php ]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema de modos de escrita diria que terias de colocar o CHMOD a 0777 mas como vejo pela screen que estas em Windows é suposto nao se fazer isso.

mas tens aki um erro no codigo:

if(move_uploaded_file($_FILES['img']['tmp_name'],$path))

Terás de colocar

if(move_uploaded_file($_FILES['img']['tmp_name'],$path . $img))

Qualquer das maneiras tens no codigo algumas falhas:

list($n_imagem,$ext) = split(".", $img);

Imaginando que o file é drone.mekie.jpg isso nao vai obter a extensão.

Podes poupar codigo utilizando o strtolower()

if ($ext = "jpg" || $ext="JPG" || $ext="png" || $ext="PNG" || $ext="bmp" || $ext="BMP")

$ext = strtolower($ext);
if ($ext = "jpg" || $ext="png" || $ext="bmp")

PS: coloca o teu codigo  em Geshi [ code=php ]

Obg pelas dicas.

Quanto a verificaçao da extensao, como sou o administrador nunca vou usar um nome k tenha um "." antes do da extensao, por isso da p ver kual é a extensao.

N sei é porke é k em vez de a img ficar na pasta "imgs" é-lhe modificado o nome p "imgs".

Se eu quiser k a img vá p a pasta "imgs" k esta na msm pasta do codigo como devo indicar o caminho? N é só meter o nome da pasta?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As imgs ja dao :D.

Ja n e modificado o nome, aparecem exactamente como deviam...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bool move_uploaded_file ( string $filename, string $destination )

Tu estas a definir o destino com isto:

$path= $_SERVER['DOCUMENT_ROOT']."/imgs/";

Mas  o destino necessita da pasta para onde vem e tambem o nome do ficheiro.

Neste caso seria:

$path= $_SERVER['DOCUMENT_ROOT']."/imgs/ficheiro_imagem.jpg";

Mas assim todos os ficheiros que enviasses iria ter esse nome (ia smp substituir a imagem q la ta pela nova)

Para tal colocavas

$path= $_SERVER['DOCUMENT_ROOT']."/imgs/" . $img;

assim o destino seria algo do genero /pasta/para/onde/vai/imgs/nome_da_imagem_nova_que_fizeste_upload.extensao

por isso colocas como eu disse:

if(move_uploaded_file($_FILES['img']['tmp_name'],$path . $img))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E deixa-me te dizer k já vi esse projecto e tá muito bom

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bool move_uploaded_file ( string $filename, string $destination )

Tu estas a definir o destino com isto:

$path= $_SERVER['DOCUMENT_ROOT']."/imgs/";

Mas  o destino necessita da pasta para onde vem e tambem o nome do ficheiro.

Neste caso seria:

$path= $_SERVER['DOCUMENT_ROOT']."/imgs/ficheiro_imagem.jpg";

Mas assim todos os ficheiros que enviasses iria ter esse nome (ia smp substituir a imagem q la ta pela nova)

Para tal colocavas

$path= $_SERVER['DOCUMENT_ROOT']."/imgs/" . $img;

assim o destino seria algo do genero /pasta/para/onde/vai/imgs/nome_da_imagem_nova_que_fizeste_upload.extensao

por isso colocas como eu disse:

if(move_uploaded_file($_FILES['img']['tmp_name'],$path . $img))

Ok.

Exacto agora as imgs aparecem tds na pasta especificada.

Mt obg.

Gostaria k me ajudasses aki com outra cena se n fosse mt incomodo.

Tenho uma pagina inicial, em k um utilizador faz o login, e keria k o butao de login mudasse p logout dps de um user ter entrado.

P tal elaborei o seguinte codigo:

<?php
   		if(isset($_SESSION['user'])){
   		?>
   		<a href="../Principal/login.php" onMouseOver="logout.src=logoutglow.src; window.status='';return true" onMouseOut="logout.src='logout.jpg'">   
		<img name="logout" src="logout.jpg" width="200" height="46" border="0" id="logout" alt="" />		</a>	
   		<?php
   		} else {
   		?>
   		<a href="../Principal/login.php" onMouseOver="login.src=loginglow.src; window.status='';return true" onMouseOut="login.src='login.jpg'">   
		<img name="login" src="login.jpg" width="200" height="46" border="0" id="login" alt="" />		</a>	
	<?php
	}
	?>

Tenho no inicio a seguir ao head codigo em javascript p dar um glow nos butoes. E como funcionou tentei usar tb p mudar a imagem do botao k diz login p logout.

<script type="text/javascript">

<!--Registar-->
registarglow = new Image();
	registarglow.src = "../efeitos/registarglow.jpg";
	registar = new Image();
	registar.src = "registar.jpg";

<!--Login-->
loginglow = new Image();
loginglow.src = "../efeitos/loginglow.jpg";
login = new Image();
login.src = "login.jpg";

<!--Logout-->
logoutglow = new Image();
logoutglow.src = "../efeitos/logoutglow.jpg";
logout = new Image();
logout.src = "logout.jpg";

<!--Fazer exame-->
exameglow = new Image();
	exameglow.src = "../efeitos/exameglow.jpg";
	exame = new Image();
	exame.src = "exame.jpg";

<!--Ver correco-->
correccaoglow = new Image();
	correccaoglow.src = "../efeitos/correccaoglow.jpg";
	correccao = new Image();
	correccao.src = "correccao.jpg";

	<!--Logo-->
logoglow = new Image();
	logoglow.src = "../efeitos/logoglow.jpg";
	logo = new Image();
	logo.src = "logo.jpg";



</script>

N sei se me fiz entender...

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no href do logut metes: href="../Principal/logout.php"

e no logout.php metes:

Qualquer coisa do genero

<?
unset($_SESSION['user']);
header('Location: url_para_voltar_para_a_apgina_inicial.php');
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O melhor ainda e mesmo:

<?
session_start();
session_destroy();
Header("Location: login.php");
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas imaginando q ele tem otras sessoes para outras coisas isso destri todas as sessoes!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sr.Jedi podias me pedir a min k'eu tinha ixo do Logout

Mas prontos

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas imaginando q ele tem otras sessoes para outras coisas isso destri todas as sessoes!

Pois, isso depende dos objectivos dele, mas assim tens a certeza que e tudo eliminado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas imaginando q ele tem otras sessoes para outras coisas isso destri todas as sessoes!

Pois, isso depende dos objectivos dele, mas assim tens a certeza que e tudo eliminado.

Para ter mesmo mesmo tudo apagado, antes do session_destroy, já vi usarem $_SESSION=array(); :D
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora