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

Vnepomuceno

Novo link, nova página...automática

31 mensagens neste tópico

Boas, gostava que alguém me ajudasse com um problema que tenho.

Precisava de um guia ou um tutorial que me ajudasse a que, por exemplo, no meu site tivesse: http://website.net/?id=13, e a página fosse toda referente a um cliente com ID 13, ou seja, o link seria http://website.net/?id=$id, e depois toda a página rodaria em torno deste '$id'.

Percebem o que quero dizer? Podem ajudar?  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

os dados desse cliente 13 estão em bd?

se sim, é só criares o layout da página pretendida com os campos que queres mostrar e na conexão à bd colocares $query_Recordset1 = "SELECT * FROM clientes WHERE cliente_id=\"".$_GET['id']."\"";...

os campos a mostrar serão $query_Recordset1['nome_campo1'], $query_Recordset1['nome_campo2'], etc, em que nome_campo1 é o nome do 1º campo como está na bd, nome_campo2 é o do 2º campo, etc...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas isso pode ser um perigo, pois pode ser facilmente feita uma injeccao de sql

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes sempre tratar o resultado do $_GET['id'] e depois é que fazes a query :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas isso pode ser um perigo, pois pode ser facilmente feita uma injeccao de sql

para isso pode-se usar o addslashes...

$userid=addslashes($_GET['id']);
$query_Recordset1 = "SELECT * FROM clientes WHERE cliente_id=\"".$userid."\"";

E como é que "defino" que o ID está em http://website.net/?id=$id ?

É que de headers não percebo muito :P

suponho que a página seja chamada por uma listagem de clientes, por exemplo...

se a página com os detalhes se chamar detalhes.php e, na listagem, o campo do id do cliente seja $userid, por exemplo, é só chamar o link como

echo "<a href=detalhes.php?id=".$userid.">cliente ".$userid."</a>";

na página de detalhes, é fazeres como coloquei na resposta anterior...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que não respondeste a minha questão...

Perdoem a minha ignorância porque nestes campos do PHP não pesco nada.

Falando por miúdos, o que eu quero por exemplo é que na caixa de link da página, no link que seja por exemplo cliente.php?id=$id, esteja armazenado o $id de cada cliente.

E após o $id ter sido identificado no link, toda a página seja "construida" a partir da pesquisa de todos os dados referentes com o $id que está no link. A minha dúvida é como é que posso "retirar" o $id que está presente no link?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a página que abre quando carregas no link vai ler o id do endereço com o $_GET['id']

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por exemplo em teste.php, quando faço localhost/teste.php?id=3, e no teste.php está:

$ID = $_GET['ID'];
echo $ID;

Aparece-me a seguinte mensagem:

Notice: Undefined index: ID in d:\programas\easyphp1-8\www\teste.php on line 2

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já consegui  :D

Obrigado pela ajuda, nunca pensei que fosse tão fácil :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vnepomuceno

Atenção porque com este "esquema" de funcionamento qualquer pessoa que digite o endereço, consegue saber os dados sobre o cliente com esse ID... (ou seja, eu sei que me basta escrever o endereço qqcoisa.php?id=15 para obter os dados do cliente 15)

Mas para ultrapassar isto irias necessitar de um sistema de login com palavra-passe.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As frames apenas disfarçam o endereço... Basta um "view-source" para ver qual o endereço que está aberto na frame... Esse sistema não é seguro para utilizar com informação que não seja "pública".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sei, isto é para um backoffice que já está quase acabado, e como implementei um sistema de sessões, só quem crashar o sistema de sessões é que consegue ter acesso a essas páginas bla.php?id=x

Uma coisa, estou a implementar um sistema de upload de ficheiros, e adoptei um script no pixel2life e estou agora a alterá-lo às necessidades desse mesmo backoffice, e criei a seguinte função:

function upload($id) {
$ultimoID = mysql_fetch_array(mysql_query("SELECT * FROM projectos ORDER BY ID DESC LIMIT 0,1"));
$uploadpath = "../imagens/uploads/grandes/".$ultimoID['ID'];
$uploadpath = $uploadpath . basename( $_FILES['imagem{$id}']['name']); 
if(move_uploaded_file($_FILES['imagem{$id}']['tmp_name'], $uploadpath))
{ echo"This file: ".  basename( $_FILES['imagem{$id}']['name']). "has been uploaded"; } 
else { echo "There was an error uploading the file, please try again!"; }
}

Mas por exemplo no $uploadpath, em $_FILES['imagem{$id}']['name'] não reconhece o $id como o primeiro parâmetro inserido na função e aparece o erro:

Notice: Undefined index: imagem{$id} in d:\programas\...\criar_projecto.php on line 87
There was an error uploading the file, please try again!

Como posso fazer a coisa funcionar?  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu utilizaste  '  ' em vez de " " e a variavel $id não é reconhecida como uma variavel dentro de ' ' por isso é que da esse erro... troca ' ' por " "

$_FILES['imagem$id']['name']

para:

$_FILES["imagem$id"]['name']

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ARGH...que raiva. Devo ter andado aí uma hora à volta deste código só por causa disso.

Em indexs e essas coisas deve-se usar aspas duplas ou simples? Ou melhor? QUANDO é que se deve usar aspas duplas ou simples?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ARGH...que raiva. Devo ter andado aí uma hora à volta deste código só por causa disso.

Em indexs e essas coisas deve-se usar aspas duplas ou simples? Ou melhor? QUANDO é que se deve usar aspas duplas ou simples?

Deves usar aspas duplas sempre que quiseres usar variáveis (echo "X igual a $var") para o resto podes utilizar aspas simples. (echo 'bla bla bla')

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora... ainda da primeira página...

para evitar injecções via sql deves certeficar-te que é um inteiro

$ID = intval($_GET['ID']);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já estive à procura no pixel2life e tive a seguir todos os guias de fazer thumbnails, mas com nenhum consegui realizar o objectivo pretendido, que é de copiar uma imagem existente no servidor e mete-la nas medidas que estão em duas variáveis ($altura e $largura)

Alguém dá uma ajudinha? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho aqui uma função que me parece ser a indicada nestas coisas de copiar a imagem e redimensionar-lhe o tamanho, que é:

function resize_jpg($inputFilename, $new_side){
$imagedata = getimagesize($inputFilename);
$w = $imagedata[0];
$h = $imagedata[1];

if ($h > $w) {
	$new_w = ($new_side / $h) * $w;
	$new_h = $new_side;	
} else {
	$new_h = ($new_side / $w) * $h;
	$new_w = $new_side;
}

$im2 = ImageCreateTrueColor($new_w, $new_h);
$image = ImageCreateFromJpeg($inputFilename);
imagecopyResampled ($im2, $image, 0, 0, 0, 0, $new_w, $new_h, $imagedata[0], $imagedata[1]);
return $im2;
}

resize_jpg("teste.jpg", 320);

O problema é que me aparece o seguinte erro:

Fatal error: Call to undefined function: imagecreatetruecolor() in d:\programas\easyphp1-8\www\teste.php on
line 15

Sendo a linha 15:

$im2 = ImageCreateTrueColor($new_w, $new_h);

Porém, deu-me na cabeça meter a @ atrás da função como já tinha visto em alguns sítios (mas que NÃO sei o que significa) e o erro desaparece, mas o script também não funcionar.

Alguém me dá uma mãozinha? É que o cliente está à espera, e neste backoffice, foi a única coisa que não tinha experimentado (thumbnails)  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o @ é para executáres código sem haver interrupção nos erros...

quanto ao imagecreatetruecolor, informação de php.net:

"Depending on your PHP and GD versions this function is defined or not. With PHP 4.0.6 through 4.1.x this function always exists if the GD module is loaded, but calling it without GD2 being installed PHP will issue a fatal error and exit. With PHP 4.2.x this behaviour is different in issuing a warning instead of an error. Other versions only define this function, if the correct GD version is installed.

Note: This function requires GD 2.0.1 or later (2.0.28 or later is recommended)."

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas por exemplo, a minha versão de PHP em localhost é a 4.3.10, a partir do EasyPHP, logo deveria de dar.

Estou agora a tentar pela função que dão no http://pt.php.net/imagecopyResampled:

// The file
$filename = "teste.jpg";
$percent = 0.5;

// Content type
header("Content-type: image/jpeg");

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
imagejpeg($image_p, null, 100);

E o que me retorna ao ecrã é uma espécie de imagem em que só aparece o link da página actual: http://localhost/teste.php e no código de página:

<br />
<b>Fatal error</b>:  Call to undefined function:  imagecreatetruecolor() in <b>d:\programas\easyphp1-8\
www\teste.php</b> on line <b>15</b><br />

Podem me dar uma mãozinha? É que precisava disto feito com urgência  :thumbsup:

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