jruiz 0 Denunciar post Postado Fevereiro 24, 2005 É muito provável que a solução para esse caso seja muito simples, mas, como não estou conseguindo, lá vai... Tenho uma página (P1) que recebe dados de um formulário (F1), grava variáveis em sessions e depois dá um switch em uma das variáveis e manda para as respectivas páginas de processamento (P2, P3, ...). Eu tenho certeza de que as sessions estão sendo gravadas em P1, pois eu dou um echo nas sessions em P1 e os dados aparecem. Assim: echo $_SESSION[tipo]; echo $_SESSION[operacao]; echo $_SESSION[bairro]; echo $_SESSION[v_min]; echo $_SESSION[v_max]; sem problema (os valores aparecem direitinho). Mas aí, quando o switch redireciona para a página P2, por exemplo, eu tenho no início do código desta página o seguinte script: <?php session_start(); if( (!isset($_SESSION[tipo])) AND (!isset($_SESSION[operacao])) AND (!isset($_SESSION[bairro])) AND (!isset($_SESSION[v_min])) AND (!isset($_SESSION[v_max]))) { Header("Location: http://www.jruiz.com.br/erro.php"); } Vai para a página erro.php, como se as sessions não estivessem gravadas?? Você pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 24, 2005 coloque as aspas exemplo: $_SESSION["tipo"]; Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Fevereiro 24, 2005 Não adiantou, e o que eu notei é que o comando para gravar sessions não funciona dentro do switch (tentei gravar as variáveis dentro de cada case, mas não grava). Será melhor passar essas variáveis por URL? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 24, 2005 posta ai o script Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Fevereiro 24, 2005 A página que recebe os dados e grava as sessions é essa aí: <?phpsession_start();// apaga variáveis antigasunset ($tipo, $operacao, $bairro, $v_min, $v_max);//pega novas variáveis$tipo=$_POST ['tipo'];$operacao= $_POST ['operacao'];$bairro= $_POST ['bairro'];$v_min= $_POST ['v_min'];$v_max= $_POST ['v_max']; if ($v_max==''){ $v_max=999999999; } if ($v_min==''){ $v_min=0; } if ($operacao=='Todos' || $operacao==''){ $operacao='%'; } if ($bairro=='Todos' || $bairro==''){ $bairro='%'; }session_start();//GRAVA AS VARIÁVEIS NA SESSÃO$_SESSION['tipo'] = $tipo;$_SESSION['operacao'] = $operacao;$_SESSION['bairro'] = $bairro;$_SESSION['v_min'] = $v_min;$_SESSION['v_max'] = $v_max;//testa tipo switch($tipo){case Apartamento:include "http://www.jruiz.com.br/ie_port/imoveis/apts.php";break;case Casa:include "http://www.jruiz.com.br/ie_port/imoveis/casas.php";break;case C_cond:include "http://www.jruiz.com.br/ie_port/imoveis/c_cond.php";break;case Rural:include "http://www.jruiz.com.br/ie_port/imoveis/rural.php";break;case Galpao:include "http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case Loja:include "http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case Predio:include "http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case Sala:include "http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case Terreno:include "http://www.jruiz.com.br/ie_port/imoveis/terrenos.php";break;case Todos:include "http://www.jruiz.com.br/ie_port/imoveis/imoveis.php";break;}?> Se $tipo=Todos, o switch encaminha para a página imoveis.php. Chegando lá, temos o seguinte: <?phpsession_start();if( (!isset($_SESSION[tipo])) AND (!isset($_SESSION[operacao])) AND (!isset($_SESSION[bairro])) AND (!isset($_SESSION[v_min])) AND (!isset($_SESSION[v_max]))){Header("Location: http://www.jruiz.com.br/erro.php");}?> Como eu disse anteriormente, o script grava as sessions no primeiro código (basta dar um echo para checar isso), mas quando chega na página imoveis.php não tem mais nada gravado (como se o switch tivesse funcionado como um unset). Compartilhar este post Link para o post Compartilhar em outros sites
fenks 0 Denunciar post Postado Fevereiro 24, 2005 Bom dia, eu estou tento o mesmo problema, vou enviar o código... vou destaca a variavel que esta saindo valor errado... index.php<?session_start("usuarios"); //Inicializa a sessão //Conectando a base de dados. $conexao = mysql_connect( '127.0.0.1', 'asdasd', 'asdasd' )or die(mysql_error()); mysql_select_db( "trtool", $conexao )or die(mysql_error()); //Consulta PW do ID inserido. $consulta = "select Pw from tb_pw where ID='".$_POST['txt_id']."'"; $resultado = mysql_query( $consulta, $conexao ) or die (mysql_error()); //Consulta o código do recurso. $id = $_POST['txt_id']; $cd_rec = mysql_query("select cd_rec from tb_rec where id='".$id."'", $conexao) or die(mysql_error()); $cd_rec = mysql_fetch_array($cd_rec); $recordset = mysql_query("select * from tb_recativ where cd_rec='".$cd_rec[0]."'", $conexao) or die(mysql_error()); //Consulta o tipo de acesso do usuário. $cd_access = mysql_query("select cd_access from tb_pw where id='".$id."'", $conexao) or die(mysql_error()); $cd_access = mysql_fetch_array($cd_access); $pwd = $_POST['txt_pw']; if(!(empty($id) AND empty($pwd))) { session_register(txt_id,txt_pw); if(mysql_num_rows($resultado) == 1){ $pwd = $_POST['txt_pw']; $campos = mysql_fetch_array($resultado); if(strcmp($pwd,$campos[0])==0){ switch ($cd_access[0]){ case 0: header("Location: admin.php"); break; case 1: header("Location: instr.php"); break; case 2: header("Location: ger.php"); break; case 3: header("Location: finan.php"); break; } }else{ header("Location: indexerror.php"); session_destroy(); } }else{ header("Location: indexerror.php"); session_destroy(); } } ...?>no script da página seguinte...<?//Connecção BD$conexao = mysql_connect( '127.0.0.1', 'asdasd', 'asdasd' )or die(mysql_error());mysql_select_db( "trtool", $conexao )or die(mysql_error());echo "AKIIIIIIIIIIIIIi... " . [SIZE=12][U][I][B]$_session["txt_id"];[/B][/I][/U][/SIZE]...?>Obrigado,Rodolfo Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 24, 2005 jruiz você iniciou o session_start() 2 vezes nao precisa disso e na pagina que você pega as session use as aspas " " fenks manual do php: Cuidado Se você quer que seu script funcione independentemente do uso de register_globals, você precisa usar a matriz $_SESSION já que $_SESSION é automaticamente registrada. Se o seu script usa session_register(), ele não irá funcionar em ambientes onde a diretiva de configuração register_globals esteja desabilitada. Nota importante sobre register_globals:: Desde o PHP 4.2.0, o valor padrão para a diretiva register_globals é off. Cuidado Se você esta usando $_SESSION , não use session_register(), session_is_registered() e session_unregister(). Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Fevereiro 24, 2005 Eu usei o session_start() 2 vezes porque são duas páginas diferentes. Para cada página eu preciso colocar essa declaração, não é isso? De qualquer forma, mesmo usando aspas não deu certo. O interessante é que eu tenho uma área restrita no meu site e uso as sessions numa boa. Não deu certo com o switch... Como eu tinha que resolver o problema, optei por levar as variáveis via URL. Então para cada case do meu switch eu coloquei algo assim include "http://www.seusite.com.br/suapage.php?condicao1=$var1&condicao2=var2&condicao3=$var3..." Na página destino eu usei um $var1= $_GET["var1"]; $var2= $_GET["var2"]; $var3= $_GET["var3"]; ... E pronto. De qualquer forma, obrigado pelo apoio. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Fevereiro 26, 2005 :( Pronto nada ...Agora estou com o seguinte problema:Eu mando as variáveis pela URL, conforme postado anteriormente. Entretanto, só funciona se a variável tiver apenas 1 palavra. Por exemplo, no caso de bairro (é uma das variáveis que eu preciso), se o conteúdo for "MORUMBI", beleza, funciona numa boa, mas se for "SANTO AMARO", já era, dá um erro federal, assim:Warning: main(http://www.jruiz.com.br/dulce/casas.php?tipo=Casa&operacao=%&bairro=CONJ.P.CASTELO BRANCO&v_min=0&v_max=999999999): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/jruiz/public_html/dulce/select.php on line 30Warning: main(http://www.jruiz.com.br/dulce/casas.php?tipo=Casa&operacao=%&bairro=CONJ.P.CASTELO BRANCO&v_min=0&v_max=999999999): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/jruiz/public_html/dulce/select.php on line 30Warning: main(): Failed opening 'http://www.jruiz.com.br/dulce/casas.php?tipo=Casa&operacao=%&bairro=CONJ.P.CASTELO BRANCO&v_min=0&v_max=999999999' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/jruiz/public_html/dulce/select.php on line 30Ki diacho!! Você pode me ajudar?? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 26, 2005 use urlencode() e urldecode() Compartilhar este post Link para o post Compartilhar em outros sites
jruiz 0 Denunciar post Postado Fevereiro 26, 2005 Mandou bem demais!!!E foi feito.De um lado: $bairro= urlencode($_POST ['bairro']); (esse vem do formulário e vai para uma página com uma switch)e do outro: $bairro = urldecode($_GET["bairro"]); (esse é o que está na página que deverá mostrar os resultados)Valeu!! Compartilhar este post Link para o post Compartilhar em outros sites