Ir para conteúdo

POWERED BY:

Arquivado

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

helana_morais

Obtendo dados sobre uma sessão

Recommended Posts

Pessoal, eu tava estudando aki um código em php sobre sessão. Tem uma parte do código, que vcs certamente irão observar, que deveria incrementar o número de visitas realizadas. Só que não tá acontecendo isso. Será que alguém aí tá enxergando o problema?

E.. outra coisa... eu num entendi muto bem o uso desse $php_self. Quem puder explicar, eu agradeço.

 

Helana

 

 

<?phpsession_start();session_register('pagecount');session_register('username');if (IsSet($pagecount))  $pagecount++;else  $pagecount = 1;$pagecount_limit = 5;?><HTML><HEAD><TITLE>Session testing page</TITLE></HEAD><BODY><H3>Session testing</H3>Your session ID is <?php print(session_id());?><BR>There might be any number of other session IDs, butthis one is yours.<P>Don't bother writing your session ID down.<BR>It's really a behind-the-scenes kind of thing.<BR>PHP needs to know it but you probably don't.<BR><?php  if (IsSet($posted_username))    $username = $posted_username;if (IsSet($username))    {      print("<P>We know your name! It's $username<BR>");    }?><P>You have visited <?php print($pagecount);?>  page(s) this session.<BR><?php if ($pagecount == 1)        print("You must have just arrived!<BR>"); ?>You are only allowed <?php print($pagecount_limit);?>  pages per session.<BR><P>This is a link to<A HREF="<?php echo $PHP_SELF;?>">this very page</A>.<BR>Following it will increase the number of pages<BR>you have visited in your session, but won't do much else.<P>Here is a form you can use to tell us  your name if you feel like it.<BR>We won't sell it to anyone.<BR><P><FORM METHOD=POST ACTION="<?php echo $PHP_SELF;?>" >   My name is:   <INPUT TYPE=TEXT SIZE=20 NAME=posted_username><BR>   <INPUT TYPE=SUBMIT NAME=SUBMIT VALUE="Remember me!">   </FORM></BODY></HTML><?phpif ($pagecount >= $pagecount_limit)  session_destroy();?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente não está rodando em sua máquina porque você deve estar com register_globals = OFF. O script faz referência a sessão pelo nome $pagecount ao invés de $_SESSION['pagecount']. Em relação ao $PHP_SELF, ele faz referência ao próprio script. Exemplo:<form action=<?=$PHP_SELF;?> method=post name=formulario>Quando for enviado o formulário será chamado a mesma página (url).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, entendi sobre o $php_self.E dei uma olhada no php.ini e realmente está register_globals = OFF. Então, eu mudo pra ON ou uso $_SESSION['pagecount']? E eu coloco aonde? Nao sei usar isso nao.. tô começando agora. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo... e como eu faço entao pra mudar aí meu código de modo que eu possa contar qtas vezes a pessoa já entrou na página na mesma sessão? O Arthur falou ai sobre $_SESSION['pagecount'], mas nao sei usar.. serve pra q essa variável?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não sei se isso vai funcionar:$_SESSION['pagecount']++;Caso não funcione, jogue o valor numa variável, incremente-a e depois coloque na sessão novamente.$count = $_SESSION['pagecount'];$count++;$_SESSION['pagecount'] = $count;A variável $_SESSION['var'] serve para pegar o valor da sessão ou colocar. Não é necessário colocar essas duas linhas no seu código: session_register('pagecount');session_register('username');Você pode alterar por:$_SESSION['pagecount'] = 0;$_SESSION['username'] = 0;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ontem eu postei aki uma dúvida, mas ainda tô com um probleminha no meu código.

 

O que eu quero é que ao a pessoa entrar na página e inserir seu nome num formulário abaixo, que seu nome seja exibido ao entrar novamente naquela página.

 

Antes eu não estava usando $_SESSION, mas daí deu uma lida no que o pessoal aki andou indicando e deu pra entender legal. Mas não sei se estou usando o form direito, porque não consigo exibir o nome da pessoa.

Se pudessem dar uma olhadinha pra me dize onde que tá o erro? Deixei em negrito a parte que eu não sei se está certo. Vou aguardar respostas.

 

PHP

[*]

[*]<?php

[*]session_start();

[*]if (!IsSet($_SESSION['pagecount'])) {

[*]  $_SESSION['pagecount'] = 1;

[*]} else {

[*]  $_SESSION['pagecount']++;

[*]}

[*]$_SESSION['pagecount_limit'] = 5;

[*]?>

[*]

[*]<HTML><HEAD><TITLE>Página de Teste de Sessão</TITLE>

[*]</HEAD><BODY>

[*]<H3>Testando Sessão</H3>

[*]O seu ID de sessão é <?php print(session_id());?><BR>

[*]Deve haver vários numeros de outros IDs de sessão, mas este é seu.

[*]

[*]<P>Não preocupe-se em escrever o seu número de sessão.<BR>

[*]É algo que deve ficar escondido.<BR>

[*]PHP precisa saber de sua existência, mas voceê não.<BR>

[*]

[*]<?php

[*]if (IsSet($_POST['posted_username'])){

[*] $username = $_POST['posted_name'];

[*] $_SESSION['name'] = $username;

[*] echo "ok";

[*]}

[*]if (IsSet($_SESSION['name']))

[*] {

[*] print($_SESSION['name']);

[*] echo "ok";

[*] }

[*]?>

[*]

[*]<P>Você visitou <?php print($_SESSION['pagecount']);?>

[*] página(s) dessa sessão.<BR>

[*]<?php

[*]if ($_SESSION['pagecount'] == 1)

[*] print("You must have just arrived!<BR>")?>

[*]Você é permitido apenas<?php print($pagecount_limit);?>

[*] paginas por sessão.<BR>

[*]

[*]<P>Este é um link

[*]<A HREF="<?php echo $PHP_SELF;?>">para esta página</A>.<BR>

[*]Clicando nestr link você irá incrementar o número de paginas<BR>

[*]que você vistou na sua sessão.

[*]<P>Aqui está um formulário que você pode usar para nos dizer

[*]seu nome se você quiser.<BR>

[*]<P><FORM METHOD=POST ACTION="<?php echo $PHP_SELF;?>" >

[*]  My name is:

[*]  <INPUT TYPE=TEXT SIZE=20 NAME="_SESSION['posted_username']"><BR>

[*]  <INPUT TYPE=SUBMIT NAME=SUBMIT VALUE="Remember me!">

[*]  </FORM>

[*]</BODY></HTML>

[*]

[*]<?php

[*]if ($_SESSION['pagecount'] >= $_SESSION['pagecount_limit'])

[*] session_destroy();

[*]?>

[*]

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu código está com um erro de HTML:

 

PHP

[*]<P><FORM METHOD=POST ACTION="<?php echo $PHP_SELF;?>" >

[*]My name is:

[*]<INPUT TYPE=TEXT SIZE=20 NAME="posted_username"><BR>

[*]<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE="Remember me!">

[*]</FORM>

[*]</BODY></HTML>

 

Coloquei em itálico/sublinhado o erro no formulário. Para imprimir na tela você pode alterar o seu código:

PHP

[*]<?php

[*]if (isset($_POST['posted_username'])){

[*]  $_SESSION['name'] = $_POST['posted_name'];

[*]  echo $_POST['posted_name'];

[*]}

[*]?>

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.