Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z sesją
Forum PHP.pl > Forum > PHP
gali
witam więc tak mam pewien problem na który wcześniej się nie natknąłem mianowicie mam kod w php
  1. <?php
  2.  
  3. ...
  4. print &#092;"<FORM NAME=\"form\\" ACTION=\"loguj.php\" METHOD=\"POST\"> <br>\";
  5. print &#092;"<br>\";
  6. print &#092;"<table WIDTH=\"100%\\" BORDER=\"0\" align=\"center\" CELLPADDING=\"2\" CELLSPACING=\"0\">\";
  7. print &#092;"<TR>\";
  8. print &#092;"<TD>&nbsp;</TD>\";
  9. print &#092;"<TD COLSPAN=2 align=\"left\\">Hasło:<br><input name=\"pass\" type=\"password\" class=\"inputbox\" size=\"20\">\";
  10. print &#092;"</TD>\";
  11. print &#092;"</TR>\";
  12. print &#092;"<TR valign=\"top\\">\";
  13. print &#092;"<TD>&nbsp;</TD>\";
  14. print &#092;"<TD COLSPAN=2> <input type=\"submit\\" value=\"Loguj\">\";
  15. print &#092;"</TD></TR></table></FORM>\";
  16. ...
  17.  
  18. ?>

oraz
  1. <?php
  2. $pass = $_POST['pass'];
  3. $haslo = &#092;"ppp\"; 
  4. if($pass==$haslo) {
  5. $id_sesji = session_id();
  6.  
  7. setcookie(&#092;"admin_logged\", $id_sesji, time()+3600);
  8. header(&#092;"location: info.php\"); 
  9. }
  10. else {
  11. echo &#092;"<B>Błędne hasło!</B>\"; 
  12. }
  13. ?>

i na końcu strona
  1. <?php 
  2. $sesja_usera = session_id();
  3. if($admin_logged==$sesja_usera) {
  4. print (&#092;"huraaa\");
  5. }
  6. else {
  7. echo &#092;"<B>Błędne hasło!</B>\";
  8. }
  9. ?>

a teraz problem zasadniczo powinno to działać i działa ale nie u mnie mianowicie strona wogóle się nie ładuje lecz jak bezpośrednio odwołam się do info.php to pokazuje błędne hasło a jeśli podaje hasło i poprawne to niestety nic się nie dzieje dlatego mój wniosek coś nie tak z sesją php i nie wiem czemu próbowałem już setki konfiguracji php.ini i nic więc pytam czy ktoś miał takie problemy
apache 2.0.50 php 4.3.7 mod_php i mod_ssl na końcu dodam iż ten sam problem był w apache 2.0.49
sf
Sprawdzałeś czy w ogóle Ci działają sesje? Stwórz jakiś przykładowy skrypt i sprawdź.
gali
Cytat(sf @ 2004-07-03 13:56:13)
Sprawdzałeś czy w ogóle Ci działają sesje? Stwórz jakiś przykładowy skrypt i sprawdź.

w phpinfo mam Session Support enabled to że sesja nie działa to ja też wiem ale ale chce dojść dlaczego i ją uruchomić
Dabroz
Jeżeli pracujesz na Windows, to sprawdź, jaki masz katalog tymczasowy dla plików sesji (ja musialem naprzyklad utworzyc C:\tmp)
gali
nie nie pracuje na windows pracuje tylko na linuksie winksmiley.jpg
Dabroz
Więc spróbuj ściągnąć jakiś gotowy skrypt operujący na sesjach i zobacz czy działa.
gali
jeśli móg bym prośic o jakiś link z tego względu iz narazie testowałem sprawdzone skrypty np z webcity itd dry.gif
Dabroz
Hmm... spróbuj wyłączyć cookies w przeglądarce i zobacz czy Ci działa np. phpBB (czy nie wylogowuje)
gali
więc tak postanowiłem potestowac i phpBB działa więc chyba sesja też działa jeśli się mylę proszę o sprostowanie dry.gif
Dabroz
Skoro phpBB dziala to znaczy ze sesje sa OK. Wiec blad lezy po stronie skryptu. Po co porownywac ID sesji? Nie mozesz po prostu miec zapamietanego w bazie czy user jest adminem czy nie?
gali
ok więc mam prośbę napisz skrypt co bedzie działał u ciebie i sprawdzimy cool.gif
Dabroz
  1. <?php
  2. // sesja.php, plik, który trzeba include'ować przed każdym plikiem
  3.  
  4. if (isset($_COOKIE['sid'])) $sid=$_COOKIE['sid']; else
  5. if (isset($_POST['sid'])) $sid=$_POST['sid']; else
  6. if (isset($_GET['sid'])) $sid=$_GET['sid']; else
  7. $sid=md5(rand());
  8.  
  9. setcookie('sid',$sid,time()+60*60*24);
  10.  
  11. session_id($sid);
  12.  
  13. $dane=$_SESSION['dane'];  // $_SESSION['dane'] ma format \"user|admin\"
  14. $dane=explode(&#092;"|\",$dane);
  15.  
  16. $username=$dane[0];
  17. $useradmin=$dane[1];
  18. ?>


Formularz logowania

  1. <form action="login.php" method="post">
  2. <input type="text" name="username"/><br/>
  3. <input type="password" name="password"/><br/>
  4. <input type="submit"/>
  5. </form>


  1. <?php
  2.  
  3. //login.php
  4.  
  5. include('sesja.php');
  6.  
  7. // 1. sprawdz czy zgadza sie nazwa usera, haslo (to zalezy od tabel)
  8. // 2. jesli zle, to wypisz die(), a jesli dobrze to zrob test, czy user jest adminem
  9. // i zapisz wynik testu w zmiennej $admin
  10. // 3:
  11.  
  12. $_SESSION['dane']=$_POST['username'].'|'.$admin;
  13.  
  14. setcookie('sid',session_id(),time()+60*60*24);
  15.  
  16. header('Location: /index.php'); //na przykład
  17.  
  18.  
  19. ?>
gali
odpaliłem to u siebie i nic nie daje jak odpaliłem to z opery to dostaje komunikat
Kod
Płączenie zostało zerwane przez zdalny serwer
http://xx.xx.xx.xx/~gali/login.php

sadsmiley02.gif
Dabroz
To dziwne, bo u mnie w ten sposób jest rozwiązane logowanie. Na pewno dodałeś wszystkie niezbędne fragmenty kodu? Reakcja przeglądarki jest hmm... dziwna. Może to jakiś problem z funkcją header, bo nic innego nie przychodzi mi do głowy.

tongue.gif
gali
mam w tym względzie prośbę podeśli mi swój php.ini albo zrobimy to w drugą stronę ja wyśle tobie mój dry.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.