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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
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
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:
session_register("aNick"); $aNick = "coś"
piszesz po prostu:
$_SESSION['aNick'] = "coś"
Dzięki:
isset($_SESSION['aNick'])
wiesz, czy zmienna została zadeklarowana.
Offline
$_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
przykłady z mojego systemu, są takie:
index.php
<?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"
<? if (!isset($_SESSION['username'])) { $smarty->assign('error', 'login'); $smarty->display('error.tpl'); exit; } ?>
login.php - służył do logowania się usera
<?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
Strony: 1