Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
É 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?
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?
posta ai o script
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](http://www.jruiz.com.br/ie_port/imoveis/apts.php) Casa:include "[http://www.jruiz.com.br/ie_port/imoveis/casas.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/casas.php) C_cond:include "[http://www.jruiz.com.br/ie_port/imoveis/c_cond.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/c_cond.php) Rural:include "[http://www.jruiz.com.br/ie_port/imoveis/rural.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/rural.php) Galpao:include "[http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/comercial.php) Loja:include "[http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/comercial.php) Predio:include "[http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/comercial.php) Sala:include "[http://www.jruiz.com.br/ie_port/imoveis/comercial.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/comercial.php) Terreno:include "[http://www.jruiz.com.br/ie_port/imoveis/terrenos.php";break;case](http://www.jruiz.com.br/ie_port/imoveis/terrenos.php) Todos:include "[http://www.jruiz.com.br/ie_port/imoveis/imoveis.php";break;}?>](http://www.jruiz.com.br/ie_port/imoveis/imoveis.php)
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");}?>](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).
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,Rodolfojruiz
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().
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
:( 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??
use urlencode() e urldecode()
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!!
coloque as aspas exemplo:
$_SESSION["tipo"];