Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Znów sesje...
slimaczek
post 29.09.2003, 19:38:04
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


Mam problem ze sesjami. Szukałem na forum, ale coś nie znalazłem sad.gif
Chodzi mi dokładnie o logowanie w sesjach. Gdy się wpisze zły login (oba pola lub tylko login), zamiast pokazać tekst i zrobić funkcje (pokaże logowanie), nic się nie pokazuje w to miejsce. Zaś gdy się dobrze wpisze, zaloguje się to inni nie mogą się zalogować, lub jak się zalogują mimo to są zalogowani jako tego, którego pierwszy się zalogował. Skrypt wygląda tak:

index.php
[php:1:3c3e12e42f]
<?php
session_start();
session_unset();
session_destroy();
session_start();
?>
<?php $nazwa="Seiroth"; include("config.php"); ?>
<head>
<title><?=$nazwa?></title>
<link rel=stylesheet href=style.css>
</head>
<body>
<center>
<font size=3><b><?=$nazwa?> v. 0.1 BETA</b></font><br><br>

<table>
<tr><td width=200 style="border-right: solid #0066cc 1px;" valign=top align=left>
<center><b>Witaj !</b><br></center>
Witaj na wyspie otoczonej pełnoma tajemnicami! Zaloguj się by wej&para;ć w &para;rodek wyspy, do miasta <?=$nazwa?>, albo się zarejestruj.
</td><td width=200 valign=top align=center>
<b>Zaloguj się</b><br><br><center>
<table>

<?php
function logowanie()
{
print "<form method="POST">
<tr><td>Nick:</td><td><input type="text" name="login"></td></tr>
<tr><td>Hasło:</td><td><input type="password" name="haslo"></td></tr>
<tr><td colspan=2><center><input type="submit" name="submit" value="Zaloguj"></td></tr>
</form>";
}

if(!isset($submit))
{
logowanie();
} else {

$db=mysql_connect("localhost", "slimaczek", "y7h5n3") or die("Nie można się poł&plusmn;czyć z serwerem");
mysql_select_db("slimaczek_test", $db) or die("Problem z ł&plusmn;czeniem się z baz&plusmn; danych.");
$sql="SELECT * FROM players WHERE user = '$login' and pass = '$pass'";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$ruser=$row["user"];
$rpass=$row["pass"];

if(($haslo != $rpass) || ($login != $ruser))
{
echo("Wpisałeś zły login ilub hasło!");
} else {

$_SESSION["login"]="user";
$_SESSION["haslo"]="pass";

header("Location: stats.php");
echo("Witamy, <b>$user</b>! <a href=stats.php?php_sessid=$sess_id>WejdĽ do miasta.</a>");
} } }
?>

</table></td></tr></table><br>
<a href=register.php>Zarejestruj się</a> | <A href=index.php>Zaloguj się</a> | <a href=mailto:slimak80@wp.pl>Kontakt</a><br>
<?php $numplayers = mysql_num_rows(mysql_query("select * from players")); print "Zarejestrowanych jest już <b>$numplayers</b> ludzi!"; ?>
[/php:1:3c3e12e42f]


header.php (każdy plik do którego można wejść jak się zaloguje, includuje na samym początku ten plik):
[php:1:3c3e12e42f]
<?php
session_start();
include("config.php");
if (!isset($_SESSION["login"]))
{
header("Location: index.php");
exit();
}
$user=$_SESSION['login'];
$pass=$_SESSION['haslo'];
?>
<?php $nazwa="Seiroth"; ?>
<?php
print "<head>";
print "<title>$nazwa: $title</title>";
print "<link rel=stylesheet href=style.css>";
print "</head>";
print "<meta http-equiv="Content-Language" content="pl">";
print "<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">";

$stat = mysql_fetch_array(mysql_query("select * from players where user=$user and pass=$pass"));
$ct = time();
mysql_query("update players set lpv=$ct where id=$stat[id]");

?>

<center>
<table width=600 cellpadding=0 cellspacing=0 class=td>
<?php print "<tr><td colspan=3 align=center bgcolor=0066cc style="border-bottom: solid black 1px;"><font color=white><b>$nazwa - Wyspa pełna niespodzianek</b></u></td></tr>"; ?>
<tr><td width=110 valign=top style="border-right: solid black 1px;">
<?php
print "<center><b><u>$stat[user]</b></u> ($stat[id])</center><br>";
print "<b>Level</b>: $stat[level]<br>";
$expn = (($stat[level] * 50) + ($stat[level] * 15));
print "<b>EXP</b>: $stat[exp]/$expn<br>";
print "<b>HP</b>: $stat[hp]/$stat[max_hp]<br>";
print "<b>Energia</b>: $stat[energy]/$stat[max_energy]<br><br>";
print "<b>Złoto</b>: $stat[cash]<br><br>";
?>
<br>
- <a href=stats.php?php_sessid=<?=$sess_id?>>Statystyki</a><br>
<?php
$numlog = mysql_num_rows(mysql_query("select * from log where unread='F' and owner=$stat[id]"));
print "- <a href=log.php>Logi</a> [$numlog]<br>";
?>
- <a href=equip.php?php_sessid=<?=$sess_id?>>Ekwipunek</a><br>
<br>
- <a href=city.php?php_sessid=<?=$sess_id?>>Miasto</a><br>
- <a href=hospital.php?php_sessid=<?=$sess_id?>>Ołtarz</a><br>
- <a href=battle.php>Walka</a><br>
- <a href=mine.php>Kopalnia</a><br>
<br>
- <a href=forums.php?view=topics>Ogłoszenia</a><br>
- <a href=chat.php>Chat</a><br>
- <a href=ranking.php>Ranking</a><br>
- <a href=memberlist.php>Istoty</a>
<br>
<?php
if ($stat[rank] == Admin) { print "- <a href=admin.php>Admin</a><br>"; }
?>
- <a href=wyloguj.php>Wyloguj</a>
</td><td valign=top width=400>
[/php:1:3c3e12e42f]

W config.php zawarte jest łączenie z bazą danych.


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
spenalzo
post 29.09.2003, 19:47:41
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


1. Na początek w index.php session_start() na początek pliku .

2. php Początkujacy --> Skrypty


--------------------

Go to the top of the page
+Quote Post
slimaczek
post 29.09.2003, 19:51:14
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


A musi być na samym początku? bo ja mam troszeczkę linijek niżej...


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
spenalzo
post 29.09.2003, 19:55:23
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
A musi być na samym początku? bo ja mam troszeczkę linijek niżej...

Sprawdź i przekonaj sie...
[manual:46fc82d54b]session_start[/manual:46fc82d54b]


--------------------

Go to the top of the page
+Quote Post
slimaczek
post 29.09.2003, 20:04:08
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


Mimo to nic sad.gif Jednak inaczej ten błąd się robi, gdy ja się zaloguje, inny się zaloguje to włącza się ta sama strona na której się loguje, tyle że nie ma formularzu ^^

-------------------- edit --------------------

Jednak jest całkiem inaczej sad.gif Wcześniej miałem inne logowanie z jakąś niby też sesją, to jak się zalogowało za pierwszym razem to nie można było później za kogoś innego... To że nie ma formularzu, to kiedy hasło jest nie prawidłowe.. Czemu tak jest ?


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
spenalzo
post 29.09.2003, 20:45:53
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Tzn. dałeś session_start na poczatek?


--------------------

Go to the top of the page
+Quote Post
slimaczek
post 29.09.2003, 20:48:44
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


Tak, w obu plikach skrypt zaczyna się tak:
[php:1:214d4c91a5]
<?php
session_start();
# dalsza część
?>
[/php:1:214d4c91a5]


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
spenalzo
post 29.09.2003, 20:56:12
Post #8





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Po prostu przy logowaniu (o ile dane są poprawne) niszcz starą sesję i zapisuj nową.
[php:1:ff9d9cdbde]<?php
session_unset();
session_destroy();
session_start();
$_SESSION["login"]="login";
// ...
?>[/php:1:ff9d9cdbde]


--------------------

Go to the top of the page
+Quote Post
slimaczek
post 1.10.2003, 18:10:30
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


Hm, ciągle nie działa :cry:

(wstawiłem to na sam początek strony, tuż po sessionstart)


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
Kocurro
post 1.10.2003, 19:01:35
Post #10





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Cytat
$ruser=$row["user"];
$rpass=$row["pass"];

if(($haslo != $pass) || ($login != $user))


Na mój gust to problem tkwi w tym, że nie korzystasz z user i rpass ale z user i pass - mogę się mylić
Go to the top of the page
+Quote Post
slimaczek
post 2.10.2003, 18:38:24
Post #11





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


Mimo to nic nie pomogło sad.gif Dzieje się ciągle tak samo... Ja się w grze zalogowałem jako pierwszy, i teraz inni też się logują za mnie mimo czy będę wylogowany czy nie...


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
Kocurro
post 2.10.2003, 18:53:50
Post #12





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


A może problem tkwi w tym, że w formularzu masz pole o nazwie $haslo a potem odwołujesz się do tego pola jako $pass questionmark.gif możliwe, że to powoduje iż query do bazy danych jest źle wykonane
Go to the top of the page
+Quote Post
slimaczek
post 3.10.2003, 12:05:58
Post #13





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


$user i $pass są przemienione z $login i $haslo do następnych sesji...
$login i $haslo to zmienne z formularza...

Spróbuje wykasować zmienne z sesji z wcześniejszego formularza, choć już stosowałem session_unset i session_destroy ...

=========== EDIT =============

Nic nie daje, bo i tak by nic to nie dało laugh.gif


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
slimaczek
post 3.10.2003, 20:30:56
Post #14





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


Doigrałem się z tym, i to naprawiłem. Zrobiłem proste błędy... A tak pozatym, temat możecie zamknąćusunąć.


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post
Kocurro
post 4.10.2003, 08:10:48
Post #15





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


slimaczek to napisz chociaż co było nie tak...nie jestem jestem zbyt zaawansowany w te klocki i chętnie bym poznał jakie można błędy popełnić...poza tym wszyscy chcemy zobaczyć koto był najbliżej...

pozdro
Go to the top of the page
+Quote Post
slimaczek
post 4.10.2003, 16:59:46
Post #16





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 16.07.2003
Skąd: ...

Ostrzeżenie: (0%)
-----


index.php
[php:1:827ae6b94c]
<?php
session_start();
?>
<?php $nazwa="Sethiria"; ?>
<html>
<head>
<title><?=$nazwa?></title>
<link rel=stylesheet href=styl/<?=$id?>/style.css>
</head>
<body>
<center>
<font size=3><b><?=$nazwa?> v. 0.1</b></font><br><br>

<table>
<tr><td width=200 style="border-right: solid #0066cc 1px;" valign=top align=left>
<center><b>Witaj !</b><br></center>
Witaj na wyspie otoczonej pełnoma tajemnicami! Zaloguj się by wej&para;ć w &para;rodek wyspy, do miasta <?=$nazwa?>, albo się zarejestruj.
</td><td width=200 valign=top align=center>
<b>Zaloguj się</b><br><br><center>
<table>
<?php
function logowanie()
{
print "<form method="POST">
<tr><td>Nick:</td><td><input type="text" name="login"></td></tr>
<tr><td>Hasło:</td><td><input type="password" name="haslo"></td></tr>
<tr><td colspan=2><center><input type="submit" name="submit" value="Zaloguj"></td></tr>
</form>";
}

if(!isset($submit))
{
logowanie();
}
else
{
$db=mysql_connect($sql_host, $sql_user, $sql_pass) or die("Nie można się poł&plusmn;czyć z serwerem");
mysql_select_db($sql_base, $db) or die("Problem z ł&plusmn;czeniem się z baz&plusmn; danych sad.gif");
$sql="SELECT * FROM players WHERE user = '$login'";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$rpass=$row["pass"];
$ruser=$row["user"];
if (($haslo != $rpass) || ($login != $ruser)) {
echo("Wpisałe&para; zły login ilub hasło!");
logowanie();
} else {
$_SESSION["login"] = $login;
Header("Location: stats.php");
exit();
} } }
?></table></td></tr></table><br>
<a href=register.php>Zarejestruj się</a> | <A href=index.php>Zaloguj się</a> | <a href=mailto:slimak80@wp.pl>Kontakt</a><br>
<?php #$numplayers = mysql_num_rows(mysql_query("select * from players")); print "Zarejestrowanych jest już <b>$numplayers</b> ludzi!"; ?>
</body></html>
[/php:1:827ae6b94c]

header.php (każdy plik do którego można wejść tylko po zalogowaniu, inkluduje na samym początku ten plik)
[php:1:827ae6b94c]
<?php
session_start();

include("config.php");
if (!isset($_SESSION["login"]))
{
print "
<html>
<head>
<title>Sethiria - Sesja Wygasła</title>
<link rel=stylesheet href=styl/1/style.css>
</head><body>
<div align=center>
<table width=400 height=100 cellpadding=0 cellspacing=0 class=td>
<tr><td bgcolor=#8b8b8b valign=top><center><br><br>
Sesja wygasła, zaloguj się jeszcze raz. <br>
Możliwe, że weszłe&para; tu, ale się wcale nie zalogowałe&para;. <br>
(Jeżeli chczesz się zalogować, <a href=index.php>naci&para;nij tutaj</a>.)<br><br>
<A href=index.php>Zaloguj się</a> | <a href=mailto:slimak80@wp.pl>Kontakt</a><br>
</center></td></tr></table>
</body></html>
";
exit();
}

$nazwa="Sethiria";

print "<html>";
print "<head>";
print "<title>$nazwa: $title</title>";
print "<link rel=stylesheet href=styl/$id/style.css>";
print "</head>";
print "<meta http-equiv="Content-Language" content="pl">";
print "<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">";

$stat = mysql_fetch_array(mysql_query("select * from players where user='$_SESSION[login]'"));
$ct = time();
mysql_query("update players set lpv=$ct where id=$stat[id]");

?>

<center>
<table width=600 cellpadding=0 cellspacing=0 class=td>
<?php print "<tr><td colspan=3 align=center bgcolor=0066cc style="border-bottom: solid black 1px;">
<font color=white><b>&brvbar;wiat $nazwa, miasto Leethar</b></u><br>
</td></tr>"; ?>
<tr><td bgcolor=#808080 width=125 valign=top style="border-right: solid black 1px;">
<?php
print "<center><b><u>$stat[user]</b></u> ($stat[id])</center><br>";
print "<b>Poziom</b>: $stat[level]<br>";
print "<b>Lv. magii</b>: $stat[levmag]<br>";
print "<b>AP</b>: $stat[ap] <a href=ap.php>(wymień)</a><br>";
$expn = (($stat[level] * 50) + ($stat[level] * 15));
print "<b>EXP</b>: $stat[exp]/$expn<br>";
print "<b>HP</b>: $stat[hp]/$stat[max_hp]<br>";
print "<b>Energia</b>: $stat[energy]/$stat[max_energy]<br><br>";
print "<b>Złoto</b>: $stat[cash]<br>";
print "<b>Złoto (bank)</b>: $stat[bank]<br>";
?>
<hr color=black size=1>
- <a href=stats.php>Statystyki</a><br>
<?php
$numlog = mysql_num_rows(mysql_query("select * from log where unread='F' and owner=$stat[id]"));
print "- <a href=log.php>Logi</a> [$numlog]<br>";
?>
- <a href=equip.php>Ekwipunek</a><br>
<br>
- <a href=city.php>Miasto</a><br>
- <a href=hospital.php>Ołtarz</a><br>
- <a href=battle.php>Walka</a><br>
- <a href=mine.php>Kopalnia</a><br>
- <a href=bank.php>Skarbiec</a><br>
<br>
- <a href=chat.php>Chat</a><br>
- <a href=ranking.php>Ranking</a><br>
- <a href=memberlist.php>Istoty</a><br>
<br>
<?php
if ($stat[rank] == Bóg) { print "- <a href=admin.php>Admin</a><br>"; }
?>
- <a href=wyloguj.php>Wyloguj</a>
</td><td bgcolor=#8b8b8b valign=top>
[/php:1:827ae6b94c]

Dokładnie tak jest zrobione i działa... Jeden z błędów, był taki że...
[php:1:827ae6b94c]
<?php
$stat = mysql_fetch_array(mysql_query("select * from players where user='$_SESSION[login]'"));
?>
[/php:1:827ae6b94c]
między zmienną nie było znaków "'". Nie wiem dokładnie co poprawiłem, bo w miedzyczasie cos pogrzebałem ^^


--------------------
Gry akcji rulez! Inne też rulez:P
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 14:23