1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP - variável perde valor

Discussão em 'Web Development' iniciada por tonebiclas, 28 de Maio de 2008. (Respostas: 11; Visualizações: 3306)

  1. tonebiclas

    tonebiclas Power Member

    Boas a todos.
    Estudo php á pouco tempo e estou a fazer um projecto de iniciativa própria, e estou com um problema...

    Antes de mais vou indicar o conteudo dos ficheiros:


    O problema é o seguinte:

    Abro a página index.php e introduzo um valor na caixa de texto, sou reedireccionado para a página chat.php e a variável $user assume o valor introduzido em index.php com sucesso, mas quando carrego em Enviar (já na página chat.php) o valor de $user perde-se.

    tambem pesquizei um pouco sobre variáveis de sessão, mas não consegui utiliza-las...será que alguem me pode ajudar a implementar isso no código ?

    Desde já obrigado.
     
  2. MPalhas

    MPalhas Power Member

    as variáveis em PHP não são passadas de ficheiro para ficheiros, a não ser as de sessão.

    para as usar, tens que por no inicio de cada ficheiro isto:

    Código:
    <?php
    session_start();
    ?>
    atenção: isto tem que ser mesmo no ínicio do ficheiro. basta um espaço ou uma linha em branco antes da tag <?php e já estraga tudo

    depois já podes usar as sessões com a variável $_SESSION como uma variável normal. claro que terás que usar sempre como um array senão apenas podes guardar um valor de cada vez
     
  3. tonebiclas

    tonebiclas Power Member

    desde já obrigado pela resposta, mas não estou a entender muito bem como empregar isto no código.

    isto:

    $_SESSION=$_POST["user"];

    vai ter o valor daqui:

    $user=$_POST["user"];

    ?
     
  4. Warlord

    Warlord [email protected] Member

    $abrire;
    $escrever;
    $fechare;

    isto nao esta la a fazer nada.

    $_SESSION['batatas']=$_POST['batatas'].

    Nunca passes todo o $_POST para $_SESSION senao alguem mal intencionado consegue subscrever todas as tuas variaveis de sessao.
     
  5. hostmake

    hostmake Power Member

    Se queres passar o valor de volta sem sessões, mete como um input hidden na form.
     
  6. tonebiclas

    tonebiclas Power Member

    está-me a dar um erro logo quando introduzo um valor no index.php

    "Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\tomessenger\tome.php:1) in C:\xampp\htdocs\tomessenger\tome.php on line 2"
     
  7. MPalhas

    MPalhas Power Member

    o mais provavel e ser isto:


    eu bem que avisei não foi? :007:
     
  8. tonebiclas

    tonebiclas Power Member

    eu fiz como tu disseste...
     
  9. MPalhas

    MPalhas Power Member

    mostra a parte inicial do index.php. não estou a ver outro motivo para esse erro aparecer a não ser o que eu disse
     
  10. tonebiclas

    tonebiclas Power Member

    afinal já não dá esse erro.estava a fazer uma coisa mal.

    mas acontece o mesmo.quando carrego em "Enviar" o conteúdo da variável perde-se.

    actualmente estou com este código:

    index.php

    Código:
    <?php
    session_start();
    ?>
    <html>
    <body>
    <div align=center method=GET>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <form action=chat.php method="POST">
    Utilizador : <input type=txt name=user>
    <br>
    <br>
    <input type=submit value="Enviar">
    </form>
    
    chat.php:

    Código:
    <?php
    session_start();
    ?>
    <title>Chat</title>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <div align="center">
    <h2>Chat do tomé</h2>
    
    <form action="chat.php" method="POST">
    Mensagem:<input type=txt name=mesage><br>
    <br>
    <input type=submit value="Enviar">
    </form>
    
    <?
    $user=$_POST["user"];
    $mesage=$_POST["mesage"];
    $_SESSION["user"]=$_POST["user"];
    
    $tome=$_SESSION["user"];
    echo "Utilizador: ";
    echo $_SESSION["user"]=$_POST["user"];
    ?>
    
    </div>
    <?
    $abrire=fopen("tome.txt","a+");
    $escrever=fputs($abrire,"<font color=red><b>$tome</b></font> diz: <font color=blue>$mesage</font>\n");
    $fechare=fclose($abrire);
    ?>
    
    <?
    if (!$abrir=fopen("tome.txt","r+"))
    {
    echo "impossovel abrir o ficheiro";
    } else {
    for($valor>=1;$valor<=500;$valor++)
    {
    $formula=$valor*1024;
    echo @fgets($abrir,$formula);
    ?>
    <br>
    <?
    }
    }
    fclose($abrir); 
    ?>
    
    <?
    echo $_SESSION["user"];
    echo "EM CIMA";
    ?>
    
    desde já obrigado a todos again!
     
    Última edição pelo moderador: 29 de Maio de 2008
  11. MPalhas

    MPalhas Power Member

    o utilizador preenche o nome no index.php e envia
    no chat.php tens $_SESSIO["user"]=$_POST["user"], que vai passar o nome para a sessão.

    mas se reparares, quando preencher o formulário da mensagem, volta ao chat.php e vai tentar procurar outra vez o $_POST["user"] só que dessa vez ele não existe, e vai atribuir null, ou seja nada

    podes trocar essa parte por exemplo por:


    if (isset($_POST["user"])
    $_SESSION["user"]=$_POST["user"];

    assim só atribui se esse valor existir
     
  12. tonebiclas

    tonebiclas Power Member

    já consegui, muito obrigado pela ajuda!
     
    Última edição: 28 de Maio de 2008

Partilhar esta Página