Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedro Lazari

Login Session - Atualizar sessão ao mudar dados

Recommended Posts

Olá Pessoal,

estou desenvolvendo um sistema em PHP e estou com uma dúvida no session, como já tem muitos códigos vou explicar para vcs o que esta acontecendo...

 

Estou aprendendo PHP e ao mesmo tempo que aprendo a linguagem, estou desenvolvendo um sistema...

O sistema funciona assim, o usuario faz o login, e o sistema pega os dados no BD armazenando a session, com todos os dados dele. O problema é, quando eu atualizo os dados, eu preciso destruir a sessão para que esses dados apareçam pro cliente.

Em resumo, quando altero os dados ele muda no banco de dados, más so aparece pro usuario se destruir a sessão.

Meu código da sessão é assim!

<?php
session_start();
if(isset($_SESSION['session_login']))
?>

PS: O Código desta session eu peguei ele inteiro na internet, fiz algumas mudanças e joguei no meu sistema.

 

 

Espero que possam me dar uma ajuda!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque armazenar todos os dados do usuário na $_SESSION

 

Não fa sentido isso?

 

O máximo de dados que você precisa armazenar nas sessions seria

 

id => montar outros selects e ifs

nivel => if

token_de_seguranca => o nome ja diz

 

+ estes dois

 

nome = echo e alguma outra coisa

email = + alguma ou outra coisa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, segue então códigos...

Página de Login, normal..

autentica.php

<?php
session_start();
include("banco/conexao.php");

conecta ();

 $senha = $_REQUEST['senha']; //Aqui é onde ele pega os dados do form, se alterar o nome do form alterar aqui!
$login = $_REQUEST['login'];

$sql = "SELECT count(*) AS total FROM usuarios WHERE email='$login' AND senha='$senha'";// aqui é onde pega dados no Banco
$res = mysql_query($sql);
$dados = mysql_fetch_array ($res, MYSQL_ASSOC);
if($dados['total'] == 1){
$sql2 = "SELECT id, email, nome FROM usuarios WHERE email='$login' AND senha='$senha'";// aqui é onde pega dados no Banco (copiar o de cima, más colocar tudo o que quiser que pegue no banco de dados)
//echo $sql2;
$res2 = mysql_query($sql2);
$dados2 = mysql_fetch_array ($res2,MYSQL_ASSOC);
$codigo = $dados2['id'];// aqui ele pega os dados da variavek sql2 se for colocar coisas aqui copie e mude!
$login = $dados2['email'];
$nome = $dados2['nome'];
$_SESSION['session_id'] = $id;// aqui ele pega os dados de forma semelhante a parte de cima ($codigo) por exemplo, precisa mudar session_(oque quer) e chamar a variavel igual ao de cima
$_SESSION['session_login'] = $login;
$_SESSION['session_nome'] = $nome;
header('location:../bolsa/index.php');
exit;
}else{
echo "INCORRETOS";
echo "<a href='bolsa/index.php'>voltar</a>";
}
desconecta ();	
?>

Código que coloco em todas as páginas bloqueadas.

<?php
session_start();
if(!isset($_SESSION['session_login']))
{
header("location:erro.php");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

mani tu teria que salva e a session da senha e do login somente.

<?php
session_start();
include("banco/conexao.php");
conecta ();
$senha = $_REQUEST['senha']; 
$login = $_REQUEST['login'];
$sql = "SELECT count(*) AS total FROM usuarios WHERE email='$login' AND senha='$senha'";
$res = mysql_query($sql);
$dados = mysql_fetch_array ($res, MYSQL_ASSOC);
if($dados['total'] == 1){
$sql2 = "SELECT id, email, nome FROM usuarios WHERE email='$login' AND senha='$senha'";
$res2 = mysql_query($sql2);
$dados2 = mysql_fetch_array ($res2,MYSQL_ASSOC);
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
header('location:../bolsa/index.php');
exit;
}else{
echo "INCORRETOS";
echo "<a href='bolsa/index.php'>voltar</a>";
desconecta ();	
}
?>

restricao

<?php
session_start();
if(!isset($_SESSION['login']) AND !isset($_SESSION['senha'])){
header("location:erro.php");
}else{
echo"<center>Para Acessar essa Página é preciso está logado.</center>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

varios estao com problemas em SESSAO af!

dificil ;z

@Vitor RC, eu tenho muito problema com session! O resto é tranquilo, meu problema é session!

@Marcos_imasters valeu man!!

Me ajudou muito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ultimamente estão retirando códigos do fundo da cova. :skull:

 

Velho e inseguro.

 

E o pior que parece ser sempre do mesmo autor, se não me engano do Juliano Niederauer.

 

Galera, vamos evoluir estes códigos tem mais de 10 anos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ultimamente estão retirando códigos do fundo da cova. :skull:

 

Velho e inseguro.

 

E o pior que parece ser sempre do mesmo autor, se não me engano do Juliano Niederauer.

 

Galera, vamos evoluir estes códigos tem mais de 10 anos.

Tem um código que seja mais seguro?

Estou aprendendo ainda... Não consigo montar um session do zero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo se fosse você ja começa a estuda programação orientada a objeto usado PDO qualquer coisa pode fala comigo que te dou umas dicas

Compartilhar este post


Link para o post
Compartilhar em outros sites

peguei na net, pois as minhas são mais robustas e você não conseguira entender muita coisa, nem eu entendo rss

 

mas o código abaixo da pra ter uma noção como trabalhar com prepared statementes usando a extensão PDO =D

 

com ele você já evita um dos ataques mais comum que o sql injection

 

Login.php

<?php
session_start();
    if(isset($_POST['username'], $_POST['password'])){
        require 'conexao.php';

        $query = Conexao()->prepare("SELECT username, password FROM users WHERE username=:username AND password=:password");
        $query->bindParam(':username', $_POST['username']);
        $query->bindParam(':password', $_POST['password']);
        $query->execute();

        if($row = $query->fetch()){
            $_SESSION['username'] = $row['username'];
            header("Location: restrita.php");
        }
    }
?>

<h1>Login</h1>
<form method="POST">
    <input type="text" name="username"><br />
    <input type="password" name="password"><br />
    <input type="submit">
</form>

registro.php

<?php
if(isset($_POST['username'], $_POST['password'])){
	require 'conexao.php';

	$query = Conexao()->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
	$query->bindParam(':username', $_POST['username']);
	$query->bindParam(':password', $_POST['password']);

	if($query->execute()){
		header("Location: index.php");
	} else{
		echo 'ERROR';
	}
}
?>

<h1>Register</h1>
<form method="POST">
    <input type="text" name="username"><br />
    <input type="password" name="password"><br />
    <input type="submit">
</form>

conexao.php

<?php
    function Conexao(){
        try{
            $username = 'root';
            $password = '';
            $conn = new pdo("mysql:host=localhost;dbname=test;", $username, $password);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $conn;

        }   catch(PDOException $e){
            echo 'ERROR', $e->getMessage();
        }
    }
?>

restrita.php

<?php
session_start();

if(isset($_SESSION['username'])){
    echo 'Welcome!', '<a href="logout.php">Logout</a>';
} else {
    echo '<a href="login.php">Login</a><br />
    <a href="registro.php">Register</a>';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

use PDO entao meu amigo '-'

 

Nem sei o que é PDO '-'

Esse negocio que vai mudar para MYSQLI to fud**** porque nem com MySQL eu sei agora com MYSQLI acabou com tudo '-'

Compartilhar este post


Link para o post
Compartilhar em outros sites

#16

 

da classe mysql_ para a nova o que muda é so >>> i <<<<

 

que em outras palavras, que a classe foi melhorada

 

para quem programa em procedural não muda nada, a não ser acrescentar o i no velho mysql_, ficando mysqli_

 

Veja

 

mysql_

<?php
$conn = mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Não foi possível conectar: " . mysql_error());
mysql_select_db($conn, "mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);

mysql_close($conn);
?>

mysqli_

<?php
$conn = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_select_db($conn,"mydb");

$result = mysqli_query("SELECT id, name FROM mytable");

while ($row = mysqli_fetch_array($result, MYSQLY_ASSOC)) {
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);
}

mysqli_free_result($result);

mysqli_close($conn);
?>

Agora se for usar programar em Oo, vai de PDO

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.