Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Znowu o logowaniu
Forum PHP.pl > Forum > Przedszkole
andrzejlechniak
Hej, mam taką sprawę. Mam skrypt logowania. I tu się pojawiają dwa problemy. Jak się loguję, to jest ok. Ale kiedy nie podam któregoś z pól, to wyskakuje pusta strona zamiast komunikatu, że jest błąd. Drugi to ważniejsza sprawa. Mam inną stronę i chcę przenieść się do strefy dla zalogowanych. Gdy klikam np. 'przejdź' to owszem jestem w tej strefie, ale od razu jestem zalogowany, mimo iż wcześniej się nie logowałem. Możecie na to spojrzeć, PROSZĘ:

Skrypt logowania:
  1. if($_GET["wyloguj"] == '1') $_SESSION["logged"] = "nie";
  2.  
  3. if($_SESSION["logged"] != "tak")
  4. {
  5. if (empty($_POST)) {
  6.  
  7. echo '<form name="form1" action="user.php?id=konto" method="Post" >
  8. <div class="log_main">
  9. <div>&rsaquo; LOGOWANIE DO SERWISU</div>
  10. <div>
  11. <div class="log_form">Użytkownik: <input name="myusername" type="text" id="myusername"></div>
  12. <div class="log_form">Hasło: <input name="mypassword" type="password" id="mypassword"></div>
  13. <div class="log_form">&nbsp;
  14. <input type="submit" name="Submit" value="Zaloguj" title="zaloguj się">
  15. </div>
  16. </div>
  17. </div>
  18. </form>';
  19.  
  20. }
  21.  
  22. // username and password sent from form
  23. $myusername=$_POST['myusername'];
  24. $mypassword=$_POST['mypassword'];
  25.  
  26. // To protect MySQL injection
  27. $myusername = stripslashes($myusername);
  28. $mypassword = stripslashes($mypassword);
  29. $myusername = mysql_real_escape_string($myusername);
  30. $mypassword = mysql_real_escape_string($mypassword);
  31.  
  32. $sql="SELECT * FROM log WHERE login='$myusername' and password='$mypassword'";
  33. $result=mysql_query($sql);
  34.  
  35. $count=mysql_num_rows($result);
  36.  
  37. if($count==1){
  38. $_SESSION["logged"] = "tak";
  39. $_SESSION["username"] = $myusername;
  40. }
  41. else {
  42. return "Błędny login lub hasło";
  43. }
  44. }
  45.  
  46. if($_SESSION["logged"] == "tak") {
  47.  
  48. echo '<div>Witaj, jesteś w strefie dla zalogowanych użytkowników! Jesteś zalogowany jako:
  49. <strong>' .$_SESSION['username']. '</strong> | <a href="user.php?id=konto&wyloguj=1" title="Wyloguj się z serwisu">Wyloguj się</a><br />';
  50. echo '</div>';
  51.  
  52. }


i sam skrypt, który powinien być na stronie dla zalogowanych użytkowników. Nie wiem czemu nie działa:
  1. if($_SESSION["logged"] == "tak") {
  2.  
  3. echo '<div>Witaj, jesteś w strefie dla zalogowanych użytkowników! Jesteś zalogowany jako:
  4. <strong>' .$_SESSION['username']. '</strong> | <a href="user.php?id=konto&wyloguj=1" title="Wyloguj się z serwisu">Wyloguj się</a><br />';
  5. echo '</div>';
  6.  
  7. }
  8. else echo 'Musisz się zalogować';
sadistic_son
Pusta strona pojawia sie dlatego ze sprawdzasz czy POST jest pusty, wystarczy wstawic w jakiekolwiek pole cokolwiek, lub nawet tylko nadusic submit aby warunek byl spelniony. Wtedy nie pojawi sie nic na stronie. Kod z linijki 5 musisz przerobic w taki sposob:
  1. if (!isset($_POST['myusername']) || $_POST['myusername']=="" || !isset($_POST['mypassword']) || $_POST['mypassword']=="") {
Nastepnie kod od linijki 22 do 43 wlacznie opatrz w
  1. if (isset($_POST['myusername']) && $_POST['myusername']!="" && isset($_POST['mypassword']) && $_POST['mypassword']!="") {
  2. //kod od 22 do 43
  3. }

Wylogowanie powinno wygladac tak:
  1. if($_GET["wyloguj"] == '1'){
  2. unset($_SESSION["logged"]);
  3. }
andrzejlechniak
Dzięki, działa snitch.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.