Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie problem z sesją
Forum PHP.pl > Forum > PHP
kajtek2008
Mam 2 takie same skrypty, jak zaloguję sie do jednego, to loguje mnie też do drugiego.
Jak to rozwiązać ?
olechafm
być może używasz do ich sprawdzania identycznego identyfikatora np. tak samo nazywającej się zmiennej w tablicy sesji...

pokaż kod
ADeM
Session_name()?
tsdek
Logowanie:

  1. <?php
  2. include_once 'inc.php';
  3. ?>
  4. <form action='login.php' method='post'>
  5. Nazwa Użytkownika: <input type='text' name='username'/></br>
  6. Hasło: <input type='password' name='pass'></br>
  7. <input type='submit' value='Login'/><br>
  8. </form>
  9. <?php
  10. if (empty($_POST['username']) || empty($_POST['pass'])) echo 'Wypełnij wszystkie pola!';
  11. else
  12. {
  13. $username = vtxt($_POST['username']);
  14. $password = vtxt($_POST['pass']);
  15. $password = md5($password);
  16. if (!ctype_alnum($username)) echo 'To nie jest poprawna nazwa użytkownika';
  17. else
  18. {
  19. $row = row("SELECT id FROM user WHERE username='$username' AND password='$password'");
  20. if ( $row )
  21. {
  22. echo 'Gratulacje, zalogowano!';
  23. $_SESSION['id'] = $row['id'];
  24. } else echo 'Podałeś niepoprawne dane!';
  25. }
  26. }
  27. ?>



Rejestracja:
  1. <?php
  2. include_once 'inc.php';
  3. ?>
  4. <form action='register.php' method='post'>
  5. Nazwa Użytkownika: <input type='text' name='username'/><br>
  6. Password: <input type='password' name='pass'></br>
  7. Mail: <input type='text' name='mail'/><br>
  8. <input type='submit' value='Rejestruj!'/><br>
  9. </form>
  10. <?php
  11. if (empty($_POST['username']) || empty($_POST['pass']) || empty($_POST['mail'])) echo 'Wypełnij wszystkie pola!';
  12. else
  13. {
  14. $username = vtxt($_POST['username']);
  15. $password = vtxt($_POST['pass']);
  16. $mail = vtxt($_POST['mail']);
  17. if (! ctype_alnum($username) ) echo 'To nie jest poprawna nazwa użytkownika!';
  18. else if (! filter_var($mail,FILTER_VALIDATE_EMAIL) ) echo 'To nie jest poprawny email!';
  19. else
  20. {
  21. if ( row("SELECT id FROM user WHERE username='$username' OR email='$mail'") ) echo 'Nazwa użytkownika/mail jest już zajęta';
  22. else
  23. {
  24. $password = md5($password);
  25. mysql_query("INSERT into user (username,password,email) VALUES ('$username','$password','$mail')");
  26. echo 'Konto zostało założone!';
  27. }
  28.  
  29. }
  30. }
  31. ?>


inc.php to plik w którym znajduje się połączenia z bazą danych mysql smile.gif
ActivePlayer
na początku każdego skryptu umiesc wywołanie funkcji session_name, przy czym nadaj różne nazwy sesji dla każdego z formularzy. dodatkowo na wszystkich podstronach gdzie sprawdzasz logowanie też będziesz musiał wywołać session_name, w zaleznosci od tego, którego formularza dotyczy dana sesja
kajtek2008
  1. <?php
  2.  
  3. include "config.php";
  4. require "../../include/connection.php";
  5. connection();
  6.  
  7. if($_SESSION['zalogowany']) {
  8. echo 'Już jestes zalogowany!
  9. <meta http-equiv="refresh" content="0; url=index.php">
  10. ';
  11. }
  12. else
  13. {
  14. echo '<form action="login.php" method="POST">
  15. Nick: <br /><input type="text" name="login"><br />
  16. Hasło: <br /><input type="password" name="password"><br />
  17. <input type="submit" name="ok" value="Zaloguj">
  18. </form>';
  19.  
  20. if(isset($_POST['ok']))
  21. {
  22. $nick = $_POST['login'];
  23. $pass = $_POST['password'];
  24.  
  25. if(empty($nick) || empty($pass)) echo 'Wpisz wszystkie pola!';
  26. else
  27. {
  28. $pass = md5($pass);
  29.  
  30. $result = mysql_query("SELECT * FROM admin WHERE login='$nick' AND password='$pass'");
  31.  
  32. if(mysql_num_rows($result)==0) echo 'Niestety podałes niepoprawne dane!';
  33. else
  34. {
  35. $row = mysql_fetch_array($result);
  36. $_SESSION['zalogowany'] = true;
  37. $_SESSION['id'] = $row['id'];
  38. $_SESSION['login'] = $row['login'];
  39.  
  40. echo 'Zostałes poprawnie zalogowany! Możesz teraz przejsć na <a href="admin.php">stronę główna</a> <meta http-equiv="refresh" content="4; url=admin.php">';
  41. }
  42. }
  43. }
  44. }
  45.  
  46. ?>
olechafm
napisałeś, że masz dwa skrypty, które są autoryzowane po zalogowaniu do któregokolwiek z nich, to gdzie jest ten drugi?

ale stawiam, że problem dotyczy używania tej samej zmiennej sesyjnej patrz linijka 8:

if($_SESSION['zalogowany'])

jeśli w drugim skrypcie jest ta sama zmienna odpowiadająca za ustawienie statusu zalogowania, to tu tkwi problem, gdy logujesz się do jednego skryptu, ustawiasz zmienną sesyjną $_SESSION['zalogowany'], drugi skrypt również z niej korzysta i skoro jest ustawiona na true, to on działa poprawnie, gdyż ta zmienna pozostaje w jego zasięgu i on ją widzi jako true

w drugim skrypcie możesz po prostu użyć innej nazwy, wpisz np $_SESSION['zalogowany2'] i już zobaczysz, że działa inaczej, oczywiście wszędzie gdzie dany skrypt jej używa
kajtek2008
session_name("code");
Pomogło.

Mam 1 skrypt w 2 folderach.

Chodziło mi o to, ze jeśli zaloguje się na
mojastrona/strona1.php
to logowało mnie też na
mojastrona/strona2.php

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.