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

skcratch

[Resolvido] - Passar variáveis para outras páginas

26 mensagens neste tópico

Viva!

Neste momento, estou a desenvolver uma pequena aplicação em PHP. A referida aplicação tem dois formulários, cujo processamento é feito na própria página onde se encontram (action="<?php echo $_SERVER['PHP_SELF']; ?>" ). No entanto, quando processo o formulário depois deste ser submetido, invoco funções que estão definidas em ficheiros externos. Na maior parte dos casos, pretendo obter mais do que um valor, não me podendo limitar a um valor de retorno único da invocação de uma função. Sendo assim, gostaria de saber como posso/devo retornar os valores para a página inicial, depois de tratada a submissão do formulário?

Grato desde já pela ajuda,

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pelo metodo post, get, cookie ou session não tou a bver outro metodo de passar valores de página para página

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pelo metodo post, get, cookie ou session não tou a bver outro metodo de passar valores de página para página

Pois já somos 2, a não ser que no PHP6 tenham implemento mais alguma maneira

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Antes demais, obrigado pelas sugestões. Sendo assim, posso armazenar em variáveis de sessão os dados que pretendo, sendo estas declaradas no ficheiro *.php onde a função que realiza o processamento do formulário está implementada e utilizar os valores armazenados nessas mesmas variáveis na página onde é invocada a referida função?

Grato desde já pela ajuda,

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim. Tens de fazer um session_start(); em todos os ficheiros que queres aceder/atribuir um valor à variável de sessão. Mas porque não usas o método Get? É bastante prático. B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Tenho tentado evitar passar variáveis na querystring. Consideram isso má prática? Existem algum inconveniente em guardar valores nas variáveis de sessão?

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que sei, não. A não ser que se alguém te conseguir meter um ficheiro .php no servidor, pode aceder às variáveis.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Embora na aplicação que estou a desenvolver, as questões de segurança não sejam críticas, estou a tentar seguir boas práticas (as poucas que tenho conhecimento...  B)) para projectos futuros. Sendo assim, caso o utilizador decida alterar os valores que são passados na querystring, não pode comprometer de alguma forma a segurança da aplicação, já que o código que estou a desenvolver, constrói HTML de forma dinâmica, consoante as respostas do servidor aos pedidos efectuados pelos clientes, com base nos referidos valores.

Grato desde já pela ajuda,

Cumps!

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Embora na aplicação que estou a desenvolver, as questões de segurança não sejam críticas, estou a tentar seguir boas práticas (as poucas que tenho conhecimento...  B)) para projectos futuros. Sendo assim, caso o utilizador decida alterar os valores que são passados na querystring, não pode comprometer de alguma forma a segurança da aplicação

Pode. Mas também há maneiras de parar isso. Eu, pessoalmente, não sei muito sobre assuntos de hackear um site, mas podes ler este artigo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Obrigado pelas dicas. Quanto à pergunta inicial do tópico, estou a pensar optar pelas variáveis de sessão. Entretanto, vou deixar o tópico aberto para mais sugestões (se existirem) ou se decidir mudar a forma de implementação que tenho prevista.

Grato a todos pelos comentários,

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Neste momento, estou com alguns problemas com as sessões. Tal como foi referido anteriormente, estou a invocar o session_start(); em todos os locais onde pretendo ler e/escrever valores na variável de sessão. Mais concretamente, a referida função é invocada no ficheiro onde está implementada a função que trata do pedido ao servidor, para armazenar os dados resultantes do pedido e na página que invoca a referida função para realizar a leitura dos valores previamente armazenados.

Neste momento, estou a receber o seguinte warning por parte do php:

Warning: session_start() [function.session-start]: Node no longer exists

Será que alguém pode dar uma ajuda?

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Código do ficheiro userNewLinkRequest.php:

function userNewLinkRequest() {
   	
   	// parse response to obtain title, description and path to the video
	foreach($xmlResponse->newlink[0]->attributes() as $attribute => $value) {
		if ($attribute == 'title') {
    		$videoTitle = $value;
    	} else if ($attribute == 'description') {
    		$videoDescription = $value;
    	} else if ($attribute == 'path') {
    		$videoPath = $value;
    	} 
    }

    // start a session in order to store variables in the php $_SESSION variable
	session_start();	

    // store variables values in php $_SESSION
    $_SESSION['videoTitle'] = $videoTitle;
    $_SESSION['videoDescription'] = $videoDescription;
    $_SESSION['videoPath'] = $videoPath;
    $_SESSION['username'] = "rui";
}

Código no ficheiro index.php, onde é invocada a função userNewLinkRequest():

<?php
session_start();

$validSession = true;
userNewLinkRequest();

 $title = $_SESSION['videoTitle'];
 $description = $_SESSION['videoDescription'];
 $videoPath = $_SESSION['videoPath'];
?>

Caso retire a instrução session_start() do ficheiro userNewLinkRequest.php, aparece o seguinte warning:

Warning: session_start() [function.session-start]: Node no longer exists in C:\wamp\www\IPTVClient\index.php on line 7

De notar que depois das mensagens relativas ao warning geradas pelo php, o código é correctamente executado, sendo o seu resultado apresentado no browser. Será que alguém pode dar uma ajuda?

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A função session_start(); tem de estar sempre no inicio do ficheiro.

<?php
session_start();
        function userNewLinkRequest() {
               
                // parse response to obtain title, description and path to the video
                foreach($xmlResponse->newlink[0]->attributes() as $attribute => $value) {
                        if ($attribute == 'title') {
                        $videoTitle = $value;
                } else if ($attribute == 'description') {
                        $videoDescription = $value;
                } else if ($attribute == 'path') {
                        $videoPath = $value;
                }
            }
                    
       
            // store variables values in php $_SESSION
            $_SESSION['videoTitle'] = $videoTitle;
            $_SESSION['videoDescription'] = $videoDescription;
            $_SESSION['videoPath'] = $videoPath;
            $_SESSION['username'] = "rui";
        }
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma nota, não envies dados sensíveis pela querystring porque há ferramentas que guardam tudo (inclusive querystrings) como uma extensão que havia do Google para o Firefox (acho que era o Sync, não me lembro).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Uma nota, não envies dados sensíveis pela querystring porque há ferramentas que guardam tudo (inclusive querystrings) como uma extensão que havia do Google para o Firefox (acho que era o Sync, não me lembro).

Era por motivos semelhantes ao referido que pretendia passar os dados na querystring.

Cumps!

B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Nos ficheiros que referi anteriormente, adicionei a seguinte entrada (inclusivamente antes do require):

session_start();

No entanto, o erro continua a persistir:

( ! ) Warning: session_start() [function.session-start]: Node no longer exists in C:\wamp\www\IPTVClient\index.php on line 4

Grato desde já pela ajuda,

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Sim, estou a usar o SimpleXML no código a seguir apresentado:

// load xml reponse to a SimpleXML object using SimpleXML 
   	$xmlResponse = simplexml_load_string($response);
   	
   	// parse response to obtain title, description and path to the video
	foreach($xmlResponse->newlink[0]->attributes() as $attribute => $value) {
		if ($attribute == 'title') {
    		$videoTitle = $value;
    	} else if ($attribute == 'description') {
    		$videoDescription = $value;
    	} else if ($attribute == 'path') {
    		$videoPath = $value;
    	} 
    }

    // store variables values in php $_SESSION
    $_SESSION['videoTitle'] = $videoTitle;
    $_SESSION['videoDescription'] = $videoDescription;
    $_SESSION['videoPath'] = $videoPath;
    $_SESSION['username'] = "rui";

Existe alguma forma de converter as variáveis que estão a ser armazenadas na variável de sessão num tipo de dados que não seja SimpleXML (estava convencido que estava a armazenar strings  :hmm:)!

Grato desde já pela ajuda,

Cumps!

;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Estás a referir-te a algo deste género?

$_SESSION['videoTitle'] = serialize($videoTitle);
$_SESSION['videoDescription'] = serialize($videoDescription);
$_SESSION['videoPath'] = serialize($videoPath)

Grato desde já pela ajuda,

Cumps!

:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Parece que o problema está parcialmente resolvido. Pelo que li em alguns fóruns, depois de se ter iniciado uma sessão, não se pode iniciar uma outra, quer seja no mesmo ficheiro ou em ficheiros que contenham funções que são invocadas a partir de um ficheiro que já possua uma directiva de início de sessão. Sendo assim, quando realizo o load da página pela primeira vez, tudo funciona na perfeição. No entanto, possuo um botão na minha página, cujo evento de click faz com que seja invocado o mesmo código PHP que foi executado anteriormente e que origina o erro que é apresentado a seguir:

session_start() [function.session-start]: Node no longer exists

Será que alguém pode dar uma ajuda?

Cumps!

: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