falcao544 11 Denunciar post Postado Setembro 12, 2011 Eu não estou conseguindo criar duas sessions, sendo que estou tentando criá-las do mesmo modo como crio sessions em outras partes do código, mas apenas nessa parte que não vai: if($num2==1){ session_start(); $_SESSION["email"] = $email; $_SESSION["senha"] = $senha_md5; echo"<meta http-equiv='refresh' content='0;URL=http://www.site.com/t.php'>"; exit(); } Obs: Entra no IF sim, já que o redirecionamento acontece! Compartilhar este post Link para o post Compartilhar em outros sites
₢istiano 0 Denunciar post Postado Setembro 12, 2011 tente if($num2==1){ session_start(); $_SESSION["email"] = $email; $_SESSION["senha"] = $senha_md5; session_commit(); header("location: http://www.site.com/t.php"); exit; } Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 12, 2011 Não funcionou! Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 12, 2011 Sobre o redirecionamento, prefira usar header header( 'refresh:0; url=http://www.site.com/t.php' ); Compartilhar este post Link para o post Compartilhar em outros sites
₢istiano 0 Denunciar post Postado Setembro 12, 2011 coloque error_reporting(E_ALL); ini_set('display_errors','1') no inicio do script, post o que aparece Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 12, 2011 Eu já tinha tentado, mas tentei de novo e nada foi exibido! Não acusa nada! Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 12, 2011 Poste todo o script desta página Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 12, 2011 <?php error_reporting(E_ALL); ini_set('display_errors','1'); if($_SERVER["REQUEST_METHOD"]=="POST"){ function anti_injection($sql){ $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); $sql = trim($sql); $sql = strip_tags($sql); $sql = addslashes($sql); return $sql; } $mail = anti_injection($_POST["email"]); $senha = anti_injection($_POST["senha"]); if(empty($mail) || empty($senha)){ session_start(); $_SESSION["mailv"] = "erro"; echo"<script>history.go(-1)</script>"; exit(); } mysql_connect("HOST", "USER", "SENHA") or die(mysql_error()); mysql_select_db("BD") or die(mysql_error()); $query_mail = mysql_query("SELECT email FROM dados_usuarios WHERE email='$mail'"); $num = mysql_num_rows($query_mail); if($num==1){ $senha = $senha."2011"; $senha_md5 = sha1(md5($senha)); $query_senha = mysql_query("SELECT senha FROM dados_usuarios WHERE senha='$senha_md5'"); $num2 = mysql_num_rows($query_senha); mysql_close(); if($num2==1){ session_start(); $_SESSION["email"] = $email; $_SESSION["senha"] = $senha_md5; session_write_close(); header( 'refresh:0; url=http://www.site.com/t.php' ); //echo"<meta http-equiv='refresh' content='0;URL=http://www.site.com/t.php'>"; exit(); } elseif($num2==0 || $num==0){ session_start(); $_SESSION["mailv"]="c"; echo"<script>history.go(-1)</script>"; exit(); } } else{ mysql_close(); session_start(); $_SESSION["mailv"] = "nc"; echo"<script>history.go(-1)</script>"; exit(); } } else{ echo"<meta http-equiv='refresh' content='0;URL=http://www.site.com'>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
₢istiano 0 Denunciar post Postado Setembro 12, 2011 tem certeza que o redirecionamento não era por causa do echo"<meta http-equiv='refresh' content='0;URL=http://www.site.com'>"; la nas ultimas linhas? isso é para validação de user ? Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 12, 2011 Tenho sim! Sim, pra validação do usuário! Compartilhar este post Link para o post Compartilhar em outros sites
₢istiano 0 Denunciar post Postado Setembro 12, 2011 Então voce pode dar uma melhorada, como ver na hora de selecionar o user na database, invez de criar duas mysql_query, voce pode apenas por um AND e buscar o outro valor, tirar esses redirecionamento com js é bom tambem eu faria algo assim <?php error_reporting(E_ALL); ini_set('display_errors','1'); session_start(); if($_SERVER["REQUEST_METHOD"]=="POST"){ function anti_injection($sql){ $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql); $sql = trim($sql); $sql = strip_tags($sql); $sql = addslashes($sql); $sql = htmlspecialchars($sql); // contra inserção de js return $sql; } $mail = anti_injection($_POST["email"]); $senha = anti_injection($_POST["senha"]); $senha = $senha."2011"; $senha_md5 = sha1(md5($senha)); if((!$mail) || (!$senha)){ $_SESSION["mailv"] = "erro"; header("location: http://www.site.com"); }else{ mysql_connect("HOST", "USER", "SENHA") or die(mysql_error()); mysql_select_db("BD") or die(mysql_error()); $query_mail = mysql_query("SELECT email FROM dados_usuarios WHERE email=\"$mail\" AND senha=\"$senha_md5\""); $num = mysql_num_rows($query_mail); if($num != 0){ $_SESSION["email"] = $email; $_SESSION["senha"] = $senha_md5; session_write_close(); header( 'refresh:0; url=http://www.site.com/t.php' ); }else{ header("location: /index.php"); session_commit(); } mysql_close(); } }else{ header("location: http://www.site.com"); } ?> é apenas uma limpada em coisas inuteis e desnecessria, pode ficar bem melhor Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 12, 2011 Primeiro: Remova todos os session_start e coloque apenas um no início do script. Segundo: Dê um var_dump( $_SESSION ); no arquivo t.php, que é para onde você está redirecionando. <?php session_start( ); var_dump( $_SESSION ); exit; Terceiro: Poste o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 12, 2011 Resultado: array(0) { } Cristiano, testei mas não funcionou! Compartilhar este post Link para o post Compartilhar em outros sites
₢istiano 0 Denunciar post Postado Setembro 12, 2011 Cristiano, testei mas não funcionou! Aquilo são apenas dicas para melhorar o script... Tente ver se essas malditas sessions então sendo criadas if(isset($_SESSION['email']) && isset($_SESSION['senha'])){ header("location: http://google.com"); } Ah, certifique que tem session_start(); na pagina t.php Compartilhar este post Link para o post Compartilhar em outros sites
Michael.Dev 0 Denunciar post Postado Setembro 13, 2011 cara a session tem de ser startada antes de todo o script.... não sera a melhor forma mas use o javascript para retornar if($num2==1){ session_start(); $_SESSION["email"] = $email; $_SESSION["senha"] = $senha_md5; session_commit(); echo "<script> window.location = 'www.google.com.br' </script>"; exit; } se não funcionar manda uma mensagem.. e não esquece de remover todas as session_start, inicializa a session somente uma vez no começo do script Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Setembro 13, 2011 session_start apenas inicia a sessão e pode estar em qualquer parte do script desde que seja antes de qualquer envio de cabeçalho Dicas para uso de variáveis de sessão http://forum.imasters.com.br/topic/342563-dicas-para-uso-de-variaveis-de-sessao/ lembre-se de que para fazer testes desse tipo, sempre esvazie o cache do browser utilizado e sempre teste em browsers diferentes e se possível em PCs diferentes. as vezes pode ser apenas um estado do cache do browser.. tente também header('location: http://localhost', true); também faça um debug. um modo de testar é fazer o seguinte breakpoint: session_start(); $_SESSION["email"] = $email; $_SESSION["senha"] = $senha_md5; echo __FILE__ . ':' . __LINE__ . ' session_id ' . session_id(); exit; deve retornar o path completo do arquivo, a linha e o valor de session_id() numa outra página (usando outra aba) do navegador, abra a página seguinte diretamente e faça o mesmo para ver se session_id() é o mesmo. mas claro, antes de tudo rode o script exibindo todos os erros conforme mencionaram acima. Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 13, 2011 Cristiano ja fiz isso e sim, a página t.hp tem session_start(); logo no inicio! Michael.Dev vou testar hoje a tarde! Hinom vou testar hoje a tarde e posto o resultado! Obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 13, 2011 Agora funcionou! Cristiano obrigado ai pelo script, mas só uma observação, do modo como você fez, basta a senha ou o e-mail conferirem que já vai para a página seguinte e eu preciso que os dois confiram! Já to ajeitando aqui, mas obrigado! Obrigado também hinom, Michael.Dev e Carols Coelho! Compartilhar este post Link para o post Compartilhar em outros sites
₢istiano 0 Denunciar post Postado Setembro 13, 2011 na verdade é ele so seleciona se os dois forem iguais email=$mail AND senha=$senha_md5 Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Setembro 13, 2011 Bom, pelos testes que fiz, o seu script valida mesmo se um não conferir! Eu digitei o e-mail certo só q digitei a senha errada e mesmo assim foi! mas era só essa observação! Muito obrigado! NOTA: Hinom, limpei o cache, mas mesmo assim nao funcionou aqui! Testei em outros PC's e funcionou! Aqui usei o Mozilla e o Chrome, ambos nao funcionaram! No outro PC usei o IE e pelo celular o Safari e funcionaram! O que pode ser? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites