ďťż
Podstrony
|
telcocafeWitam! Mam taki sam problem. Sprawdzałem kod dziesiątki razy, niczego przez "session_start()" nie ma. Wcześniej (przed zmianą kodowania na utf-8) kod działał. Po zmianie wywaliło błąd. Przestawiłem na UTF-8 bez BOM. Ostrzeżenie znikło, ale kod dalej nie działa, tak jak powinien tzn. nie mogę sie zalogować.movie1.php <?php session_start(); $_SESSION['username'] = $_POST['name']; $_SESSION['userpass'] = $_POST['pass']; $_SESSION['authuser'] = 0; if (($_SESSION['username'] == 'Marcin') and ($_SESSION['userpass'] == '123456')) { $_SESSION['authuser'] = 1; } else { echo "Przepraszamy, ale nie masz uprawnień do zoaczenia tej strony"; exit(); } ?> </html> <head> <title>Znajdź mój ulubiony film</title> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> </head> <body> <?php include "header.php"; $myfavmovie = urlencode("Żywot Briana"); echo "<a href='moviesite.php?favmovie=$myfavmovie'>"; echo "Kliknij tutaj, aby zobaczyć informacje o moim ulubionym filmie!"; echo "</a>"; echo "<br>"; echo "<a href='moviesite.php?movienum=5'>"; echo "Kliknij tutaj, aby zobaczyć informacje o 5 moich ulubionych filmach."; echo "</a>"; echo "<br>"; echo "<a href='moviesite.php?movienum=10'>"; echo "Kliknij tutaj, aby zobaczyć informacje o 10 moich ulubionych filmach."; echo "</a>"; ?> </body> </html> login.php <?php session_unset(); ?> <html> <head> <title>Proszę się zalogować</title> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> </head> <body> <?php include "header.php"; ?> <form method="post" action="movie1.php"> <p>Wpisz nazwę użytkownika: <input type="text" name="user"> </p> <p>Wpisz hasło: <input type="password" name="pass"> </p> <p><input type="submit" name="Submit" value="Wyślij"></p> </form> </body> </html> moviesite.php <?php session_start(); // Sprawdzam czy uzytkownik zalogował się podając właście hasło i nick. if ($_SESSION['authuser'] != 1) { echo "Przepraszamy, ale nie masz uprawnień do zobaczenia tej strony."; exit(); } ?> </html> <head> <title>Moje filmy</title> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> </head> <body> <?php include "header.php"; function listmovies_1() { echo "1. Żywot Briana<br>"; echo "2. Szarże<br>"; echo "3. Życie biurowe<br>"; echo "4. Monty Python i Swięty Graal<br>"; echo "5. Matrix<br>"; } function lismovies_2() { echo "6. Terminator<br>"; echo "7. Gwiezdne Wojny<br>"; echo "8. Bliskie spotkania trzeciego stopnia<br>"; echo "9. Trzynaście świeczek<br>"; echo "10. Golfiarze<br>"; } if (isset($_REQUEST['favmovie'])) { echo "Witaj na stronie użytkowniku "; echo $_SESSION['username']; echo "!<br>"; echo "Mój ulubiony film to "; echo $_REQUEST['favmovie']; echo ".<br>"; $movierate = 5; echo "Moja ocena dla tego filmu wynosi: "; echo $movierate; echo".<br>"; } else { echo "Lista "; echo $_REQUEST['movienum']; echo " moich ulubionych filmów:<br>"; listmovies_1() if ($_REQUEST['movienum'] == 10) listmovies_2(); } ?> </body> </html> Prosiłbym o sprawdzenie kodu. Szkoda, że nie pokazałeś zrzutu wyniku. Ale mnie się raczej wydaje tutaj coś nie tak (później dokładniej sprawdze kod): if (($_SESSION['username'] == 'Marcin') and ($_SESSION['userpass'] == '123456')) { $_SESSION['authuser'] = 1; } else { echo "Przepraszamy, ale nie masz uprawnień do zoaczenia tej strony"; exit(); } ?> </html> Czy znacznik </html> nie powinien być jeszcze w skrypcie? Bo z tego co tutaj widze, to nawet gdy się zalogujesz, to zamykasz stronę i reszta dokumentów się nie wyświetli. Powinno być raczej tak: if (($_SESSION['username'] == 'Marcin') and ($_SESSION['userpass'] == '123456')) { $_SESSION['authuser'] = 1; } else { echo "Przepraszamy, ale nie masz uprawnień do zoaczenia tej strony"; exit(); } [b]</html> ?>[/b] Tak samo w pozostałej części kodu. Spróbuj a jak nie (i nikt wczesniej nie napisze rozwiązania) to sprawdze kod na własnym serwerze. Ciągle to samo :(. Wcześniej wyrzucało mi: Cannot send session cookie - headers already sent Cannot send session cache limiter - headers already Ale przez session_start() nic nie ma i nie było. A sprawdz przy przed <?php na poczatku pliku nie ma żadnych spacji, tabulatorów itd. Zamiast się męczyć wstaw ob_start() i nie będzie problemów. Tak poza tym, coś te błędy takie lakoniczne... A może to w pliku header.php jest jakiś błędny kod? A sprawdz przy przed <?php na poczatku pliku nie ma żadnych spacji, tabulatorów itd. Tak, sprawdzałem kilkadziesiąt razy. I nic... Po primo, winą ostrzeżenia jak sam zauważyłeś jest korzystanie z BOM, więc po prostu z niego nie korzystaj. Po secundo, spróbuj zamienić ten fragment: $_SESSION['username'] = $_POST['name']; $_SESSION['userpass'] = $_POST['pass']; $_SESSION['authuser'] = 0; if (($_SESSION['username'] == 'Marcin') and ($_SESSION['userpass'] == '123456')) { na if (($_POST['name'] == 'Marcin') and ($_POST['pass'] == '123456')) { OK, gdzie odpalasz ten skrypt? localhost czy wirtualny? Ustawiłem UTF-8 i oto rezultat... Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\movie1.php:1) in C:\xampp\htdocs\movie1.php on line 2 Przepraszamy, ale nie masz uprawnień do zoaczenia tej strony Na localhost... Ale wcześniej było OK, dopóki nie zmieniłem kodowania. Użytkownik rys.marcin edytował ten post 07 czerwiec 2008, 14:14 Spróbuj otworzyć plik zwykłym notatnikiem i skasować ew. znaki przed <?php i między <?php a session_start() i potem dostaw spację/nową linię. @DOWN: Być może edytor coś sobie dodał. Użytkownik Lupinek edytował ten post 07 czerwiec 2008, 22:32 [...] Sprawdzałem kod dziesiątki razy, niczego przez "session_start()" nie ma. [...] Już to robiłem... Czyżby XAMPP siadł? Mam taką propozycję, spakuj pliki, wrzuć do sieci i niech ktoś inny sprawdzi na swoim serwerze. Bo może to problem z serwerem. Mnie możesz przesłać na maila. Sprawdzę (również na Xampp'ie) i powiem Ci, co jest nie tak. Napisz na PW a podam Ci maila. Użytkownik Txthor edytował ten post 08 czerwiec 2008, 17:31 Mogę sprawdzić na apache'u u siebie (Debian) ;) Znalazłem błąd :P !. Aż głupio się przyznać. Źle nazwałem zmienną ;) . $_SESSION['username'] = $_POST['name']; Powinno być: $_SESSION['username'] = $_POST['user']; Dziękuję wszystkim za pomoc i poświęcony mi czas :) ! Użytkownik rys.marcin edytował ten post 11 czerwiec 2008, 13:21 |
|||
Sitedesign by AltusUmbrae. |