variavel de conexao em session

Iniciado por maurov, 31 de Maio de 2011, 15:56

tópico anterior - próximo tópico

maurov

mysql_connect e mysql_select_db entram , mas não se mantém (não dão acesso ao db) na página seguinte de inserção. Testei com um verifica.php e apenas o echo da echo $_SESSION['usuario']; aparece. Tenho que definir o connect e o select_db em todas as páginas?
index.php
Citar<?php
session_start();
?>
<html><head></head>
<body><form method="post" action="login.php">
<input name="usuario">
<input name="senha">
<input name="Submit" value="entrar" type="submit">
</form>
</body>
</html>
login.php
Citar<?php
session_start();
$_SESSION['usuario']=$_POST['usuario'];
if (isset($_SESSION['usuario'])){
$usuario = $_POST['usuario'];
$hostname = 'localhost';
$senha = $_POST['senha'];
$mysqlcon = mysql_connect($hostname, $usuario, $senha) or die ('Nao fez a conexao com o mysql: ' . mysql_error());
$banco = 'meubanco';
$selectdb = mysql_select_db($banco, $mysqlcon) or die ("Nao pode acessar meubanco : " . mysql_error());
header ("location: verifica.php");
} else { echo "Nao passou no if isset do login.php";}
?>
verifica.php
Citar<?php
session_start();
echo $_SESSION['usuario'];
echo $mysqlcon;
echo $banco;
?>

maurov

A dúvida é:
Como fazer para o mysql_connect e o mysql_select_db estarem ativos em todas as páginas?
[ ]

maurov

descobri um mysql_pconnect. Vou tentar.
[ ]

agente100gelo

Passar variáveis de conexão via session não é uma prática recomendável.
Na verdade é uma prática suicida.

Faça melhor.

Crie um arquivo inc_conexao.php e coloque as variáveis.


<?
$usuario = "******";
$hostname = 'localhost';
$senha = "******";
$mysqlcon = mysql_connect($hostname, $usuario, $senha) or die ('Nao fez a conexao com o mysql: ' . mysql_error());
$banco = 'meubanco';
$selectdb = mysql_select_db($banco, $mysqlcon) or die ("Nao pode acessar meubanco : " . mysql_error());
?>


Em cada página que for fazer, você insere um require() no início dos arquivos;

<? require("inc_conexao.php"); ?>
Advogado e analista de sistema cearense.
Twitter: @glaydson

maurov

Require funciona. :)
Tem apenas que gerar uma página logo depois do index onde são criadas as variáveis session que serão usadas no login. Não dá para fazer mysql_connect com ($_POST[]...) .Senão roda na primeira vez e depois quando o require chamar o login de novo, não tem mais de onde carregar.

Sobre manter a conexão em variáveis de session: Pela orientação recebida, não é recomendável, porque abrem-se várias conexões com o db, né? Pelo que entendi o require não faz isso. Ou faz?
O tópico está como resolvido pois o script está funcionando. Mas fica aberto para aprendermos mais com o assunto.
[ ]

agente100gelo

Quando você usa uma sessão para gravar os dados da conexão do usuário, esta sessão fica gravada em um cookie no HD no usuário em formato texto (host, login e senha).

O require deixa os dados no próprio script.

Esqueça esta ideia de usar sessão pra gravar dados da conexão.
Advogado e analista de sistema cearense.
Twitter: @glaydson