[AsteriskBrasil] Duvida no AGI

Jonas Roberto de Goes Filho (sysdebug) jonas em onda.com.br
Segunda Janeiro 29 11:51:38 BRST 2007


Olá,

André Gonçalves wrote:
> não sou muito bom php não, mas se não estou enganado o erro esta naquelas 
> aspas duplas onde vc ta fazendo a atribuição ou nas aspas dos ifs.
> tenta fazer a atribuição as aspas ou com aspas simples.

	Na verdade não é isso.

> 
> []'s
> André
> 
> 
> ----- Original Message ----- 
> From: "Fabiano Heringer (BiGuRoOt)" <bigu em grupoheringer.com.br>
> To: <asteriskbrasil em listas.asteriskbrasil.org>
> Sent: Thursday, January 25, 2007 11:12 AM
> Subject: [AsteriskBrasil] Duvida no AGI
> 
> 
> Oi galera, minha duvida é mais na linguagem PHP do que do proprio agi,
> quem puder me dar um help
> tenho o seguinte codigo:
> 
> $teste = "5";

	Até este ponto a variável $teste é construída no programa como um tipo
de dado string e recebe a seguinte string "5".

	Confira isso com a função gettype [1].

[1] http://br.php.net/manual/pt_BR/function.gettype.php

> 
> if ($teste = "1") {
>         WRITE("EXEC DIAL SIP/TELLFREE/" . $agi[extension] . "||tTM(grava)");
> }

	Neste ponto do programa, a condição if sempre será verdadeira, pois, a
variável $teste recebe agora o valor "1" e este valor é considerado
verdadeiro no PHP. Portando, o que estiver dentro de if, sempre será
executado.

> 
> elseif ($teste = "2") {
>         WRITE("EXEC DIAL SIP/DIRECTCALL/55" . substr($agi[extension],1)
> . "||tTM(grava)");
> }

	Este trecho jamais será executado pois está aninhado com a condição
acima if ($teste = "1"), que sempre será verdadeira. Portando, o
programa pula esta parte.

> 
> else {
>         WRITE("EXEC PLAYBACK acesso_negado");
>         break;
> }

	Este trecho jamais será executado pois está aninhado com a condição
acima if ($teste = "1"), que sempre será verdadeira. Portando, o
programa pula esta parte.

> 
> qualquer valor q eu colocar na variavel $teste , ele SEMPRE executa o
> primeiro IF...é como se estivesse ignorando o teste

	Exatamente.
> 
> Alguem tem ideia o que to fazendo errado ai?

	Eu acredito que a solução para o seu caso sejá utilizar um dos
operadores de comparação do PHP, o == ou o ===. Estes operadores
trabalham de forma diferentes, mas tem como objetivo fazer comparações
de valores. São operadores condicionais. O operador = é um operador de
atribuição. Confira [2].

[2] http://br.php.net/manual/pt_BR/language.operators.php

> 
> Obrigado
> ----------------------------------------

	valew!

-- 
Jonas Roberto de Goes Filho (sysdebug)


Mais detalhes sobre a lista de discussão AsteriskBrasil