Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [SESJE] problem po zalogowaniu
Forum PHP.pl > Forum > PHP
Killerek
Witam, mam stronę i na niej wprowadziłem skrypt logowania oto on:

  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4. <center>
  5. <div id="bannery">
  6. <div class="cellpic_banner">Logowanie - panel użytkownika</div>
  7. <div class="banner_2">
  8. <div class="banner_tresc_2">
  9. <?php
  10.  
  11. if (!isset($_SESSION['username'])) { // dostęp dla niezalogowanego użytkownika
  12.  
  13. if ($_POST['wyslane']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  14.  
  15. include 'inc/db.php'; // połączenie się z bazą danych
  16. $tabela = 'ats_sites'; // zdefiniowanie tabeli MySQL
  17.  
  18. $username = $_POST["username"];
  19. $haslo = $_POST["haslo"];
  20.  
  21. $haslo = md5($haslo); // szyfrowanie podanego hasła
  22.  
  23. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  24. username='$username' and password='$haslo' and status=0");
  25.  
  26. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  27. if (mysql_num_rows($wynik) == 1) {
  28. $informacja = mysql_fetch_array($wynik);
  29. echo '<center><div class="msg error">Ups, wygląda na to, że twoje konto zostało zablokowane.</div><div class="msg error">W razie jakichkolwiek pytań, prosimy o kontakt z naszymi konsultantami.</div></center>';
  30. }
  31.  
  32. // jeżeli wszystko jest dobrze, użytkownik się loguje
  33. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  34. username='$username' and password='$haslo' and active=1");
  35.  
  36. if (mysql_num_rows($wynik) == 1) {
  37. $informacja = mysql_fetch_array($wynik);
  38. $_SESSION["username"] = $informacja["username"];
  39. header('Location: logowanie');
  40. } else {
  41. echo '<div class="msg error">Błędne dane logowania!</div>';
  42. }
  43.  
  44. mysql_close($polaczenie);
  45. }
  46.  
  47. // tworzenie formularza HTML
  48. echo <<< KONIEC
  49.  
  50. <div class="formularz">
  51.   <form class="form" action="logowanie" method="post">
  52.   <input type="hidden" name="wyslane" value="TRUE" />
  53.  
  54. <p>
  55. <div class="label"><label for="username">Użytkownik:</label></div>
  56. <input type="text" name="username" id="username" />
  57. </p>
  58.  
  59. <p>
  60. <div class="label"><label for="haslo">Hasło:</label></div>
  61. <input type="password" name="haslo" id="haslo" />
  62. </p>
  63.  
  64.   <input type="submit" value="Zaloguj się" />
  65.  
  66.  
  67.   </form>
  68. KONIEC;
  69.  
  70. } else {
  71. header('Location: <a href="http://www.toplista.banner.ct8.pl/user_cpl&#39%3b%29;" target="_blank">http://www.toplista.banner.ct8.pl/user_cpl');</a> // zalogowany użytkownik zostaje przekierowany na stronę główną
  72. }
  73.  
  74. if ($_GET["wylogowanie"] == "tak") {
  75. // niszczenie sesji użytkownika
  76. header('Location: logowanie.php'); // przekierwanie na stronę główną
  77. }
  78.  
  79. ?>
  80. </div>
  81. </div>
  82. <br>
  83. </div>
  84. </div>
  85. </center>


i ok zalogowało ale nie pokazuje mi ze jestem zalogowany plik index:

  1. <?php
  2. if (isset($_SESSION['username'])) {
  3. echo 'Witaj, '.$_SESSION['username'].'!';
  4. echo ' | <a href="/wyloguj">Wyloguj się</a>';
  5. }
  6.  
  7. else {
  8. echo 'Witaj, Nieznajomy! | <a href="/logowanie">Zaloguj się!</a>';
  9. }
  10. ?>


ale po kliknięciu na logo przenosi mnie znów na główną i wtedy pokazuje że jestem zalogowany...

Adres strony: http://toplista.banner.ct8.pl/
Login: test_php
Hasło: test

Jesteście w stanie mi pomóc?
sowiq
Kolego, www.toplista.banner.ct8.pl a toplista.banner.ct8.pl to dwie różne domeny. Dlatego użytkownik zalogowany na wersji bez www nie będzie zalogowany na wersji z www (ciastka nie są współdzielone pomiędzy różnymi domenami). Nie możesz logować usera na domenie bez www, a później przekierowywać go na tę drugą. Ewentualnie musisz ustawić domenę ciastek na .toplista.banner.ct8.pl (kropka na początku).

Zapoznaj się z tym: http://php.net/manual/pl/function.session-...okie-params.php i z tym http://www.php.net/manual/pl/session.confi...n.cookie-domain
Killerek
Cytat(sowiq @ 24.04.2013, 16:55:24 ) *
Kolego, www.toplista.banner.ct8.pl a toplista.banner.ct8.pl to dwie różne domeny. Dlatego użytkownik zalogowany na wersji bez www nie będzie zalogowany na wersji z www (ciastka nie są współdzielone pomiędzy różnymi domenami). Nie możesz logować usera na domenie bez www, a później przekierowywać go na tę drugą. Ewentualnie musisz ustawić domenę ciastek na .toplista.banner.ct8.pl (kropka na początku).

Zapoznaj się z tym: http://php.net/manual/pl/function.session-...okie-params.php i z tym http://www.php.net/manual/pl/session.confi...n.cookie-domain


Stronę mam na darmowym hostingu ct8.pl i on mi nie udostępnia dostępu do pliku php.ini co zrobić?
mrWodoo
Cytat(Killerek @ 24.04.2013, 18:16:15 ) *
Stronę mam na darmowym hostingu ct8.pl i on mi nie udostępnia dostępu do pliku php.ini co zrobić?



wymuszasz zawsze www. lub jego brak w adresie url (manual php -> header() do przekierowania)
Killerek
Cytat(mrWodoo @ 24.04.2013, 19:05:35 ) *
wymuszasz zawsze www.


jak mam wymusić może jakaś regułka w .htaccess?

Cytat(mrWodoo @ 24.04.2013, 19:05:35 ) *
lub jego brak w adresie url (manual php -> header() do przekierowania)


o co chodzi?

-------------------------------

Ok, temat można cls.

Rozwiązanie:

Do pliku .htaccess dodaj taką regułkę:

  1. RewriteEngine On
  2. RewriteCond %{HTTP_HOST} ^twojastrona.pl$ [NC]
  3. RewriteRule ^(.*)$ <a href="http://www.twojastrona.pl/$1" target="_blank">http://www.twojastrona.pl/$1</a> [R=301,L]
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.