Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Utrata sesji
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam. Mam problem.
Otóż w panelu administratora mam 15 odnośników to różnych czynności.
Wszystkie oprócz jednego działają.
Otóż dodaj admina mam z tym problem.
Wchodzę w plik wszystko się pokazuje dodawanie działa.
Ale gdy po dodaniu chcę wrócić do panelu administratora lub stwierdzę, że nie chcę go dodać to jest problem bo mnie wyloguje.
Nie wiem jak zaradzić.
Proszę o pomoc smile.gif
Z góry dziękuje.

dodaj_admina.php
  1. <?php
  2. include('include/db.php');
  3. $login = mysql_real_escape_string($_POST['login']);
  4. $haslo = mysql_real_escape_string(md5(sha1($_POST['haslo'])));
  5. $haslo2 = mysql_real_escape_string(md5(sha1($_POST['haslo2'])));
  6. $email = mysql_real_escape_string($_POST['email']);
  7. $access = mysql_real_escape_string($_POST['0']);
  8. $zapytanie = "SELECT COUNT(*) FROM admin WHERE login='$login'";
  9. $idzapytania = mysql_query($zapytanie);
  10. $zajete = mysql_fetch_row($idzapytania);
  11. $zapytanie1 = "SELECT COUNT(*) FROM admin WHERE email='$email'";
  12. $idzapytania1 = mysql_query($zapytanie1);
  13. $zajete1 = mysql_fetch_row($idzapytania1);
  14. if (!isset($_POST['login']))
  15. {
  16. echo '<div align="center"><form action="/cpadmin_dodaj_admina" method="post">
  17. Login:<br /><input type="text" name="login" /><br /><br />
  18. email:<br /><input type="text" name="email" /><br /><br />
  19. Hasło:<br /><input type="password" name="haslo" /><br /><br />
  20. Potwierdź hasło:<br><input type="password" name="haslo2" /><br /><br />
  21. <input class="przycisk_admin" name="dodaj" type="submit" value="Dodaj admina">
  22. <input class="przycisk_admin" name="wyczysc" type="reset" value="Wyczyść">
  23. </form><a style="text-decoration: none;" href="/cpadmin">Wróć do Panelu Administratora</a></div>';
  24. }
  25. elseif(empty($_POST["login"]) || empty($_POST["haslo"]) || empty($_POST["haslo2"]) || empty($_POST["email"]) and !isset($_GET["active"]) and isset($_POST['login']))
  26. {
  27. echo '<div align="center">Nie wypełniono wszystkich pól.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  28. }
  29. elseif($zajete[0]!=0)
  30. {
  31. echo '<div align="center">Podana nazwa użytkownika jest już zajęta.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  32. }
  33. elseif($zajete1[0]!=0)
  34. {
  35. echo '<div align="center">Podany email jest zajęty przez innego użytkownika.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  36. }
  37. elseif(!$_POST["email"] || !preg_match("/^[-0-9a-zA-Z_\.]+@([-0-9a-zA-Z_\.]+\.)+([0-9a-zA-Z]){2,4}$/i", $_POST["email"]))
  38. {
  39. echo '<div align="center">Podany email jest nieprawidłowy.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  40. }
  41. elseif($_POST['haslo']!=$_POST['haslo2'])
  42. {
  43. echo '<div align="center">Podane hasła nie są identyczne.</div><meta http-equiv="Refresh" content="3; url=/cpadmin_dodaj_admina" />';
  44. }
  45. else
  46. {
  47. $zapytanie2 = "INSERT INTO `admin` (`login`, `haslo`, `email`, `access`) VALUES ('".$login."', '".$haslo."', '".$email."', '".$access."')";
  48. $idzapytania2 = mysql_query($zapytanie2);
  49. echo '<div align="center">Konto administratora zostało założone.<br />W ciągu 10 minut użytkownik otrzyma emaila z następnymi instrukcjami.<br /><a style="text-decoration: none;" href="/cpadmin">Wróć do Panelu Administratora</a></div>';
  50. $zapytanie3 = "SELECT `email` FROM `admin` ORDER BY `id` DESC";
  51. $idzapytania3 = mysql_query($zapytanie3);
  52. $naglowki = "From: nansss@nportfolio.pl".PHP_EOL."Reply-To: nansss@nportfolio.pl".PHP_EOL."Content-type: text/html; charset=utf-8";
  53. $wiersz = mysql_fetch_row($idzapytania3);
  54. $kod = str_shuffle("qwertyuiopasdfghjklzxcvbnm1234567890");
  55. mail($email, 'Aktywacja konta na nportfolio.pl', '<br /><b>Witaj na nportfolio.pl!</b><br /><br /><br />Konto <b>'.$login.'</b> zostało zarejestrowane na podany adres e-mail.<br />W celu potwierdzenia rejestracji konta kliknij w poniższy odnośnik:<br /><a href="http://nportfolio.pl/index.php?page=potwierdz&active='.$kod.'">http://nportfolio.pl/index.php?page=potwierdz&active='.$kod.'</a><br /><br />Jeśli nie rejestrowałeś konta o nazwie <b>'.$login.'</b> po prostu zignoruj tego maila.<br /><br /><br />------<br />Wiadomość wygenerowana automatycznie<br />przez serwis nportfolio.pl', $naglowki);
  56. $zapytanie4 = "UPDATE admin SET klucz = ('".$kod."') WHERE access = 0";
  57. $idzapytania4 = mysql_query($zapytanie4);
  58. }
  59. mysql_close($connect);
  60. ?>


Wywnioskowałem, że to wina zmiennych w dodaj_admina bo gdy je usunę to trzyma sesje. A konkretnie

  1. $access = mysql_real_escape_string($_POST['0']);


i

  1. $login = mysql_real_escape_string($_POST['login']);
emtiej
Hmmm to co tu pokazałeś odpowiada za dodawanie do bazy danych administratora, są tam jakieś warunki, dodanie admina do bazy a potem wysłanie maila. Wszystko ładnie, ale dodaj zmienną sesji, dzięki której będziesz identyfikował użytkownika, np zaraz po dodaniu go do bazy

  1. $_SESSION['user'] = $login;


adrianozo
Wywnioskowałem.
$login psuje sesje(traci login) gdy jej nie ma a utworze konto to od razu mnie loguje na to stworzone

$access psuje sesje(traci dostęp) potrzebny jest 5 a ona tworzy 0.
Głównie chodzi o to, że loguje mnie od razu na to konto co stworzyłem i wszystko się psuje.


LOGOWANIE
cpadmin.php
  1. <?php
  2. include('include/db.php');
  3. //logowanie start
  4. if($_POST['login'] && $_POST['haslo'] && $_POST['send'])
  5. {
  6. $login = mysql_real_escape_string($_POST['login']);
  7. $haslo = md5(sha1($_POST['haslo']));
  8. $zapytanie = 'SELECT * FROM admin WHERE login="'.$login.'" and haslo="'.$haslo.'" LIMIT 1';
  9. $idzapytania = mysql_query($zapytanie);
  10. if(mysql_num_rows($idzapytania))
  11. {
  12. $found_user = mysql_fetch_array($idzapytania);
  13. if(mysql_real_escape_string($found_user['access'])==5)
  14. {
  15. $_SESSION['access'] = mysql_real_escape_string($found_user['access']);
  16. $_SESSION['login'] = mysql_real_escape_string($found_user['login']);
  17. $_SESSION['admin'] = 'ok';
  18. }
  19. else echo '<div align="center">Dostęp zabroniony, brak uprawnień.<meta http-equiv="Refresh" content="1; url=index.php" /></div>';
  20. }
  21. else echo '<div align="center">Podano błędny login lub hasło.</div>';
  22. }
  23. elseif($_POST['send'])
  24. {
  25. echo '<div align="center">Musisz podać login i hasło.</div>';
  26. }
  27. //logowanie end
  28. //wylogowywanie start
  29. if($_POST['send']==2 && $_SESSION['admin'] == 'ok' && $_SESSION['access']==5)
  30. {
  31. foreach($_SESSION as $k=>$v)unset($_SESSION[$k]);
  32. header('Location: <a href="http://www.nportfolio.pl/&#39%3b%29;" target="_blank">http://www.nportfolio.pl/');</a>
  33. }
  34. //wylogowywanie end
  35. //obsluga admina start
  36. if($_SESSION['admin'] == 'ok' && $_SESSION['access']==5)
  37. {
  38. echo '<hr />Jesteś zalgowany jako <b>'.$_SESSION['login'].'</b><form method="post" /><input type="hidden" name="send" value="2" /><input class="przycisk_admin" name="wyloguj" type="submit" value="Wyloguj" /><form /></div><hr /><br />';
  39. echo '<div style="float:left; width:33%;" />
  40. <a style="text-decoration: none;" href="/cpadmin_home"><img src="panel/images/home.png" width="32" height="32" border="0" /><br />Home</a><br />
  41. <a style="text-decoration: none;" href="/cpadmin_dodaj_do_portfolio"><img src="panel/images/dodaj_do_portfolio.png" width="32" height="32" border="0" /><br />Dodaj do portfolio</a><br />
  42. <a style="text-decoration: none;" href="/cpadmin_edytuj_w_portfolio"><img src="panel/images/edytuj_w_portfolio.png" width="32" height="32" border="0" /><br />Edytuj w porfolio</a><br />
  43. <a style="text-decoration: none;" href="/cpadmin_usun_z_portfolio"><img src="panel/images/usun_z_portfolio.png" width="32" height="32" border="0" /><br />Usuń z portfolio</a><br />
  44. <a style="text-decoration: none;" href="/cpadmin_oferta"><img src="panel/images/oferta.png" width="32" height="32" border="0" /><br />Oferta</a></div>
  45. <div style="float:left; width:33%;" /><a style="text-decoration: none;" href="/cpadmin_dodaj_skrypt"><img src="panel/images/dodaj_skrypt.png" width="32" height="32" border="0" /><br />Dodaj skrypt</a><br />
  46. <a style="text-decoration: none;" href="/cpadmin_edytuj_skrypt"><img src="panel/images/edytuj_skrypt.png" width="32" height="32" border="0" /><br />Edytuj skrypt</a><br />
  47. <a style="text-decoration: none;" href="/cpadmin_usun_skrypt"><img src="panel/images/usun_skrypt.png" width="32" height="32" border="0" /><br />Usuń skrypt</a><br />
  48. <a style="text-decoration: none;" href="/cpadmin_o_mnie"><img src="panel/images/o_mnie.png" width="32" height="32" border="0" /><br />O mnie</a><br />
  49. <a style="text-decoration: none;" href="/cpadmin_kontakt"><img src="panel/images/kontakt.png" width="32" height="32" border="0" /><br />Kontakt</a></div>
  50. <div style="float:left; width:33%;" /><a style="text-decoration: none;" href="/cpadmin_dodaj_reklame"><img src="panel/images/dodaj_reklame.png" width="32" height="32" border="0" /><br />Dodaj reklamę</a><br />
  51. <a style="text-decoration: none;" href="/cpadmin_edytuj_reklame"><img src="panel/images/edytuj_reklame.png" width="32" height="32" border="0" /><br />Edytuj reklamę</a><br />
  52. <a style="text-decoration: none;" href="/cpadmin_usun_reklame"><img src="panel/images/usun_reklame.png" width="32" height="32" border="0" /><br />Usuń reklamę</a><br />
  53. <a style="text-decoration: none;" href="/cpadmin_dodaj_admina"><img src="panel/images/dodaj_admina.png" width="32" height="32" border="0" /><br />Dodaj admina</a><br />
  54. <a style="text-decoration: none;" href="/cpadmin_usun_admina"><img src="panel/images/usun_admina.png" width="32" height="32" border="0" /><br />Usuń admina</a></div>';
  55. }
  56. //obsluga admina end
  57. //formularz start
  58. else
  59. {
  60. echo '<div align="center"><form action="/cpadmin" method="post">
  61. <input type="hidden" name="send" value="1" />
  62. Login:<br /><input type="text" name="login" /><br />
  63. Hasło:<br /><input type="password" name="haslo" /><br /><br />
  64. <input class="przycisk_admin" name="zaloguj" type="submit" value="Zaloguj" /></form></div>';
  65. }
  66. //formularz end
  67. mysql_close($connect);
  68. ?>


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.