Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2006-12-13 17:57:08

  Rumi - prawiczek erotoman

Rumi
prawiczek erotoman
Skąd: Gorlice
Zarejestrowany: 2004-09-23
Serwis

[PHP] Sesje - przekazywanie zmiennych

oi na wstępie dodam że dziś zaczołem dopiero przygode z sesjami więc wiem ... "nic" to nawet za mało :]

Chodzi mi o przekazywanie zmiennych zrobiłem strone 1 z

<?
session_start();
if($aNick == ''){
$aNick = 'gość';
}
?>

i strone 2

<?
session_start();
session_register( "aNick" );
$nick = $_POST['nick'];
$haslo = $_POST['haslo'];

$baza='xxx';
$deskr = mysql_connect("localhost","xxx","xxx")
or die ("Nie mogę połączyć się z serwerem SQL.");

mysql_select_db($baza);
$wynik = mysql_query("SELECT * FROM users where nick='$nick' and haslo='$haslo'")
       or die("Błąd w zapytaniu!");


while ($pomidor = mysql_fetch_object($wynik))
{
$nick_mysql = $pomidor->nick;
$haslo_mysql = $pomidor->haslo;
}

mysql_close($deskr);
$aNick = $nick_mysql;
if($aNick == ''){
$aNick = 'gość';
}
?>

i to działa przy wyświetlaniu strony 2 bo tam widzi tego właściwego nicka natomiast jak przechodze do strony 1 to jest juz jako gość.

Ktoś pomacha łopatą :]

Offline

 

#2  2006-12-13 18:22:30

  Contravene - Użytkownik

Contravene
Użytkownik
Zarejestrowany: 2006-08-07

Re: [PHP] Sesje - przekazywanie zmiennych

Prawdopodobnie nie masz włączonej opcji "register_globals", wnosząc po tym, że używasz $_POST. Ja radzę ci jej nie włączać, niesie to ze sobą duże ryzyko. Zamiast tego do przechowywania zmiennych sesji jawnie używaj tablicy $_SESSION, w podobny sposób jak $_POST. Wtedy zamiast:

Kod:

session_register("aNick");
$aNick = "coś"

piszesz po prostu:

Kod:

$_SESSION['aNick'] = "coś"

Dzięki:

Kod:

isset($_SESSION['aNick'])

wiesz, czy zmienna została zadeklarowana.

Offline

 

#3  2006-12-13 18:58:09

  Rumi - prawiczek erotoman

Rumi
prawiczek erotoman
Skąd: Gorlice
Zarejestrowany: 2004-09-23
Serwis

Re: [PHP] Sesje - przekazywanie zmiennych

$_POST to dane z formularza tak przywędrowały :] zaraz potestuje  z tymi isse...


EDIT:


ok poprawiłem teraz wygląda to tak i co najważniejsze działa :)

1

<?
session_start();
if(isset($_SESSION['aNick']) == ''){
$_SESSION['aNick'] = 'gość';
}
?>

2

<?
session_start();
session_register( "aNick" );
$nick = $_POST['nick'];
$haslo = $_POST['haslo'];

$baza='xxx';
$deskr = mysql_connect("localhost","xxx","xxx")
or die ("Nie mogę połączyć się z serwerem SQL.");

mysql_select_db($baza);
$wynik = mysql_query("SELECT * FROM users where nick='$nick' and haslo='$haslo'")
       or die("Błąd w zapytaniu!");


while ($krotka = mysql_fetch_object($wynik))
{
$nick_mysql = $krotka->nick;
$haslo_mysql = $krotka->haslo;
}

mysql_close($deskr);
$_SESSION['aNick'] = $nick_mysql;
if(isset($_SESSION['aNick']) == ''){
$_SESSION['aNick'] = 'gość';
}
?>

ps. solved jeszcze nei daje bo temat mi sie jeszcze przyyda :)

Offline

 

#4  2006-12-13 23:12:28

  MG_Peter - Członek DUG

MG_Peter
Członek DUG
Skąd: Gliwice
Zarejestrowany: 2005-07-29

Re: [PHP] Sesje - przekazywanie zmiennych

przykłady z mojego systemu, są takie:

index.php

Kod:

<?php
session_start();
include("db.php");

if (!$_SESSION['username']){

}
else {

//    $_SESSION['lastlogin_date'] = gmdate("Y m d H:i:s", $_SESSION['lastlogin_date']);

}
$smarty -> assign('zalogowany', $zalogowany);
$smarty->display('tresc.tpl');
?>

logcheck.php - służyłe do sprawdzania czy user jest zalogowany - includowałem go u góry "Restricted pages"

Kod:

<?
if (!isset($_SESSION['username'])) {
$smarty->assign('error', 'login');
$smarty->display('error.tpl');
  exit;
}

?>

login.php - służył do logowania się usera

Kod:

<?php
session_start();
include "db.php";

$username = $_REQUEST['username'];
$password = $_REQUEST['password'];

if (!$username || !$password)
{

  $brakdanych = TRUE;
  $smarty->assign('brakdanych',$brakdanych);
  $smarty->display('login.tpl');
  exit();
}

$db_password = md5($password);

//check, if the user exists...
$zapytanie = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$db_password' AND active='1'");
$czy_istnieje = mysql_num_rows($zapytanie);
//mysql_num_rows powinien zwrocic 1 (mamy 1 usera...)
if ($czy_istnieje = 1)
{
  $wiersz = mysql_fetch_array($zapytanie, MYSQL_ASSOC);
  $user_id = $wiersz['id'];
  $username = $wiersz['username'];
  $last_login = $wiersz['lastlogin_date'];
  
  //register session variables
  session_register('id');
  $_SESSION['id'] = $user_id;
  session_register('username');
  $_SESSION['username'] = $username;
  //end of session variables registering...

$login_succes = TRUE;

}
else
{
$login_succes = FALSE;

}

$zapytanie = mysql_query("SELECT lastlogin_date FROM users WHERE id=".$_SESSION['id']."");
if (!$zapytanie){
$login_succes = FALSE;

}
if ($zapytanie>0){
$wiersz = mysql_fetch_array($zapytanie, MYSQL_ASSOC);

$_SESSION['lastlogin_date'] = gmdate("d M Y H:i:s", strtotime($wiersz['lastlogin_date'])+ 2*3600);

$db->execute("UPDATE users SET lastlogin_date=now() WHERE id='$user_id'");}

$smarty->assign('login_succes', $login_succes);
$smarty->assign('zalogowany', $login_succes);
$smarty->display('login.tpl');
?>

takie info - korzystałem przy tym ze Smarty Template Engine do wyświetlania stron, a dodatkowo z ADOdb do obsługi MySQL'a. Inna sprawa, że ten kod jest stary i pewnie ma bugi/jest podatny na ataki....

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)