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




prawiczek erotoman
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

Użytkownik


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




prawiczek erotoman
$_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

Członek DUG


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