Jump to content
cachopo

Duvida sessions

Recommended Posts

cachopo

Boa Tarde,

Estou com um problema no meu projecto de escola.

O problema é o seguinte:

O cliente regista - se e depois faz o login, e depois vai a página para poder encomendar um produto e eu preciso de fazer com que o nome do utilizador fique registado na tabela ENCOMENDAS na base de dados depois de o cliente fazer a sua encomenda, sem que no formulário de ENCOMENDA precise de escrever o seu nome, o que seria (estúpido) e fazer com que na pagina de Visualização de Encomendas apareça apenas as suas encomendas.

Eu penso que o codigo para guardar a session é este: (que se encontra no ficheiro que executa o login, ou seja depois da pessoa clicar em ENTRAR:)

	if (mysql_num_rows($login) == 1) {
$sql = mysql_fetch_array($login);

	$_SESSION['sns'] = $sql['sns'];

	header("Location:index.php");
}

Código da pagina que executa o pedido de Encomenda:

<?php
include("ligabd.php");

$num = $_POST['num'];
$tipo = $_POST['tipo'];
$nome_medico = $_POST['nome_medico'];
$nome_utente = $_SESSION['sns'];
$data = $_POST['data'];
$teste = $_POST['teste'];
?>

<?php
mysql_query("INSERT INTO consulta(num, data, tipo, nome_medico,teste,nome_utente) VALUES ('$num','$data','$tipo','$nome_medico','$teste','$nome_utente')")  or die(mysql_error());  /*FALTA O RESTO*/
?>

Se me pudessem ajudar o mais rapidamente possivel, Agradecia, pois ainda tenho algumas coisas mas preciso desta parte porque o resto das outras coisas que tenho a fazer necessito desta parte. :S

Share this post


Link to post
Share on other sites
laboss

o codigo esta certo, ele tem de puxar o valor da session se esta assim existir!

Mas para isso todas as paginas têm de conter o código session_start(); se nao é impossivel receber os valor! a jeito de debug depois do include ligabd.php na pagina que executa o pedido de encomenda faz,

echo "<pre>";
print_r($_SESSION);
echo "</pre>";

Share this post


Link to post
Share on other sites
cachopo

Em primeiro lugar, certamente tiveste meses para pensar e começar a trabalhar nisso, não esperes que te vão ajudar mais depressa só porque tens urgência.

Bom dia,

1º Lugar, ja ando algum tempo a tentar fazer, só quando vi que nao conseguia mesmo e que vim aqui dizer e eu nunca estou a espera disso porque já sei como são as coisas, e eu disse «Se me pudessem ajudar rapidamente, agradecia ...», e eu apenas pedi ajuda, acho que se tivesses dado 1 ajuda era bom em vez de dizeres isso.

Share this post


Link to post
Share on other sites
cachopo

o codigo esta certo, ele tem de puxar o valor da session se esta assim existir!

Mas para isso todas as paginas têm de conter o código session_start(); se nao é impossivel receber os valor! a jeito de debug depois do include ligabd.php na pagina que executa o pedido de encomenda faz,

echo "<pre>";
print_r($_SESSION);
echo "</pre>";

1- Todas as páginas estão restringidas, ou seja, é necessário estar logado para poder visualizar, se não volta para a página do login.

2 - Não percebi o que o código faz. :S

Share this post


Link to post
Share on other sites
cachopo

Não percebi o teu pedido laboss, desculpa :S

Este é o meu código do ficheiro que executa o login:

<?php session_start();

// se vier um pedido para login
if ( isset($_POST['id_utilizador'] )) {

// estabelecer ligação com a base de dados
require_once('ligabd.php');

// receber o pedido de login com segurança
$id_utilizador = mysql_real_escape_string($_POST['id_utilizador']);
$password1 = md5($_POST['password']);

// verificar o utilizador em questão (pretendemos obter uma única linha de registos)
$login = mysql_query("SELECT sns, password FROM clientes WHERE id_utilizador = '$id' AND password = '$password1'");

if (mysql_num_rows($login) == 1) {
$sql = mysql_fetch_array($login);

	$_SESSION['id'] = $sql['id'];

	header("Location:index.php");
} else {
?>
	<!-- falhou o login-->

<script language="javascript">

alert ("Numero SNS ou password invalidos. Tente Novamente.")
history.go(-1)
</script>
<?
}
}
?>

E este é o código do ficheiro que restringe as pessoas que não estão logadas:

<?php
if(!isset( $_SESSION['sns'])){
header("Location:/painel/login.php");
}
?>

Share this post


Link to post
Share on other sites
laboss

aqui

<?php
include("ligabd.php");

$num = $_POST['num'];
$tipo = $_POST['tipo'];
$nome_medico = $_POST['nome_medico'];
$nome_utente = $_SESSION['sns'];
$data = $_POST['data'];
$teste = $_POST['teste'];
?>

<?php
mysql_query("INSERT INTO consulta(num, data, tipo, nome_medico,teste,nome_utente) VALUES ('$num','$data','$tipo','$nome_medico','$teste','$nome_utente')")  or die(mysql_error());  /*FALTA O RESTO*/
?>

mete

<?php
include("ligabd.php");

echo "<pre>";
print_r($_SESSION);
echo "</pre>";

$num = $_POST['num'];
$tipo = $_POST['tipo'];
$nome_medico = $_POST['nome_medico'];
$nome_utente = $_SESSION['sns'];
$data = $_POST['data'];
$teste = $_POST['teste'];
?>

<?php
/*mysql_query("INSERT INTO consulta(num, data, tipo, nome_medico,teste,nome_utente) VALUES ('$num','$data','$tipo','$nome_medico','$teste','$nome_utente')")  or die(mysql_error());  */
?>

Share this post


Link to post
Share on other sites
cachopo

Laboss continua igual não registou na base de dados o nome do cliente

Não tenho de fazer 1 select para ir buscar o nome do utilizador ja que na session tou a guardar o id do utilizador??

Share this post


Link to post
Share on other sites
laboss

Ok se necessitas disso podes fazer isto:

<?php
mysql_query("INSERT INTO consulta(num, data, tipo, nome_medico,teste,nome_utente) VALUES ('$num','$data','$tipo','$nome_medico','$teste', (SELECT nome FROM utilizador WHERE id= '$nome_utente'))")  or die(mysql_error());  /*FALTA O RESTO*/
?>

Verifica o select que meti la pois os campos podem não corresponder aos teus da base dados é só alterares isso

Share this post


Link to post
Share on other sites
cachopo

Obrigado Laboss, ja consegui o problema estava na parte do select na funçao de Inserir. Faltava fazer o select.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.