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

php

Discussão em 'Web Development' iniciada por Tyran, 18 de Setembro de 2008. (Respostas: 8; Visualizações: 850)

  1. Tyran

    Tyran Power Member

    Boas, tenho um form de onde envio dados para uma página em php, mas um dos dados vem sempre com o valor 1!!! Este facto prende-se ao fazer:

    Código:
    if ($pass=$_POST['pass'] && $user=$_POST['user'] && $cod=$_POST['cod']) 
    {
    ...
    }
    Se fizer em vez disso:

    Código:
    if ($_POST['pass'] && $_POST['user'] && $_POST['cod']) {
    
        $user = $_POST['user'];
        $pass = $_POST['pass'];
        $cod = $_POST['cod'];
    }
    Assim parece estar a funcionar!
    Sabem-me explicar o porquê??

    Estou a pensar para o login se manter guardar em sessão o user e a pass, é boa ideia? se calhar será melhor guardar a pass em md5.

    Obrigado e cumpzz ;)
     
  2. anjo2

    anjo2 Power Member

    Para que queres a password? E tens a password "livre"????

    O código correcto é:
    PHP:
    if (isset($_POST['pass']) && isset($_POST['user']) && isset($_POST['cod'])) {
        
    $user $_POST['user'];
        
    $pass $_POST['pass'];
        
    $cod $_POST['cod'];
    }
     
  3. AliFromCairo

    AliFromCairo Power Member

    No primeiro exemplo que aí colocaste estás a fazer atribuições dentro da cláusula if, logo, a expressão irá ser verdadeira.
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Seguindo o que o AliFromCairo disse, não te esqueças que
    = é uma atribuição
    == é uma comparação de valor ("2" é igual a 1+1)
    === é uma comparação de valor e tipo (apesar de o valor numérico de "2" ser igual ao de 1+1, "2" é string e 1+1 é integer).
    PHP:
    $a "2";
    $b "1";
    if(
    $a $b $b// $a passou a ter o valor contido em $b+$b. Isto é, $a = "1" + "1" = 2. A expressão retorna true, e entra sempre no if, qualquer que seja o valor de $b.
                     // não há nenhuma comparação no caso anterior.
    if($a == $b $b// compara $a com $b + $b. Como $a = "2" e $b+$b = 2, a comparação retorna true porque o valor numérico, independentemente do facto de $a ser string e $b + $b ser integer, é igual.
    if($a === $b $b// compara $a com $b + $b, juntamente com os tipos de cada parte. $a é "2" e $b+$b é 2. Apesar do valor numérico ser igual, os tipos são diferentes, pelo que este if retorna false.
    Explicação breve para algo que dá muito jeito (especialmente em casos como o strpos, em que uma comparação por ===FALSE faz toda a diferença contra um ==FALSE).

    Corrijam-me se estiver enganado em algum ponto. Falei de cabeça e posso ter tido algum "acidente" nos tipos.
     
    Última edição: 19 de Setembro de 2008
  5. ups

    ups Power Member

    Como o aliFromCairo disse, é por causa da atribuição que está a aparecer o 1.
    De resto, não guardes dados sensiveis na sessao. Verifica no inicio se é valida (utilizador e password correctas) e cria a sessao.
    O ideal seria ate arranjares um sistema já feito tipo a API do smf pois ha sempre alguma coisa que se esquece...
     
  6. MPalhas

    MPalhas Power Member

    se não me engano, se $b for igual a zero (o inteiro, não o caracter) o if retorna falso, porque o que se passa é que é feita a atribuição, e o que é avaliado é o valor final da variavel que o recebeu.
    daí coisas como
    PHP:
    while ( $row mysql_fetch_array($query) )
    ...
    quando a query chega ao fim, a função retorna zero (ou outro valor qualquer que seja avaliado como falso) e vai ser avaliado apenas o $row
     
  7. anjo2

    anjo2 Power Member

    session é mais temporário, cookies podes decidir o tempo, depende para o que for
     
  8. Tyran

    Tyran Power Member

    hmm, ok! Mas e as cookies não são perigosas? Lembro-me de um site na net de fazer dessas coisas (lol, não é aquele dos níveis até 20 ou não sei quê) em que uma missão era criar uma cookie.

    Obrigado e cumprimentos
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Cookies são ficheiros de texto minúsculos que são feitos unicamente para armazenar informações.
    Em si, eles não são perigosos. O problema reside nas informações que eles registam e em como estas são utilizadas.

    Tradução: tanto é possível um site (como os de publicidade) registar as tuas preferências e os sites que visitas para te mostrar os chamados "targeted ads" como é possível registarem informações pessoais tuas e usarem-nas para outros fins.

    Mas se é para te manteres logged in num sistema, tens de ter os cookies activados.
     

Partilhar esta Página