ďťż
Podstrony
|
telcocafeMam problem <_< , bo mam np. taki kod:<? echo '<center> <h2>Trwa logowanie...</h2></center>'; $login= addslashes(htmlspecialchars($_POST['login'])); $pass=md5($_POST['pass']); require_once('core.php'); lacz_bz(); $zapytanie= 'SELECT * FROM users WHERE nazwa="'.$login.'"'; $wynik = mysql_query($zapytanie) or die ("Błędne zapytanie"); while($rekord=mysql_fetch_array($wynik)){ if ($rekord['ban']==0){ $login2= $rekord['nazwa']; $pass2= $rekord['pass']; $mod= $rekord['mod']; }else{ echo 'Zostałe¶ zablokowany przez administratora!'; return true; } } if ($login==$login2 and $pass==$pass2){ echo 'Zostałe¶ pomy¶lnie zalogowany!!'; }else{ echo 'Zły login i/lub hasło!'; return true; } mysql_free_result($wynik); session_register("login"); session_register("mod"); echo '<script>window.location.href="index.php";</script>'; echo '</body> </html>'; ?> No i on mi tak działa jakby wogóle niebyło obsługi sesji (jakoś inny skrypt też niedziała:/) Gdzie w tym kodzie jest błąd? A i session_start() jest w pliku index.php a ten jest do niego includowany. Hmm if ($login==$login2 and $pass==$pass2){ Zmien na if ($login==$login2 && $pass==$pass2){ (nie wiem czy to blad, lepiej dmuchac na zimne ;) Oraz po session_register('mod'); zrob $_SESSION['mod']=$mod; a po session_register('login'); daj $_SESSION['login']=$login; Btw brzydki masz ten kod ;P imho do przekazywania uzytkownikowi informacji np zalogowano/nie zalogowano lepiej uzywac jakiejs fajnej funkcji, ja sobie wymyslilem: function ShowMessage($msg) { $_SESSION['message']=$msg; header('location: ./index.php'); } (index.php) if ($_SESSION['message']!='') { echo $_SESSION['message']; $_SESSION['message']=''; } Te wszystkie zapytania w kodzie - bezsens. Zrob sobie osobne pliki z klasami ktore bedziesz uzywal. Np klasa z funkcja do logowania zwracajaca false/true (nie zalogowano/zalogowano) //Heh widze ze na forum ovh juz sie dowiedziales... Użytkownik Einzeinbleth edytował ten post 17 styczeń 2006, 17:16 1. przed session_start() nie powinno nic się wyświetlać 2. nie używa sie session_register - przestarzałe - zamiast tego uzywa sie po prostu tablicy superglobalnej $_SESSION 3. wstaw na początku tego kodu ob_start() (przed wszystkie echa i kod html), powinno to zapobiedz wyświetleniu zawartości strony do czasu całego wygenerowania, więc pierwsze nagłówki zosytaną wysłane albo pod koniec generowania, albo w chwili wywołania header :) No, fakktycznie to była wina session_register. Cóż człowiek uczy się na błędach ;) |
|||
Sitedesign by AltusUmbrae. |