![]() |
![]() |
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/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¶ć w ¶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ł±czyć z serwerem"); mysql_select_db("slimaczek_test", $db) or die("Problem z ł±czeniem się z baz± 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. |
|
|
![]() |
![]()
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 |
|
|
![]()
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...
|
|
|
![]()
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... (IMG:http://spenalzo.republika.pl/e/nauka.gif) [manual:46fc82d54b]session_start[/manual:46fc82d54b] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 16.07.2003 Skąd: ... Ostrzeżenie: (0%) ![]() ![]() |
Mimo to nic (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 ? |
|
|
![]()
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?
|
|
|
![]()
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] |
|
|
![]()
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] |
|
|
![]()
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) |
|
|
![]()
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ć |
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/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...
|
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) możliwe, że to powoduje iż query do bazy danych jest źle wykonane
|
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) |
|
|
![]()
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ąć.
|
|
|
![]()
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 |
|
|
![]()
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¶ć w ¶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ł±czyć z serwerem"); mysql_select_db($sql_base, $db) or die("Problem z ł±czeniem się z baz± danych (IMG:http://forum.php.pl/style_emoticons/default/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¶ 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¶ tu, ale się wcale nie zalogowałe¶. <br> (Jeżeli chczesz się zalogować, <a href=index.php>naci¶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>¦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 ^^ |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 06:43 |