Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sesje
Forum PHP.pl > Forum > Przedszkole
Dandelion
Przeczytalem kilka tematow odnosnie sesji jednak nie znalazlem odpowiedzi na moj problem dlatego postanowilem napisac nowy temat


Dopiero zaczelem uczyc sie obslugiwac sesje. W ramach tej nauki stworzylem prosty skrypt

  1. <?php
  2.  
  3.  
  4. function loguj(){
  5.  
  6.  
  7.  
  8.  
  9. if($_SESSION['logged'] < 1){
  10.  
  11. <form action="sesje.php" method="post">
  12. <fieldset>
  13. <label>Login</label>
  14. <input type="text" name="login"/>
  15. <label>Haslo</label>
  16. <input type="password" name="haslo"/>
  17. <label></label>
  18. <input type="submit" name="wyslij"/>
  19. </fieldset>
  20. </form>
  21.  
  22.  
  23. ";
  24.  
  25. }
  26.  
  27.  
  28.  
  29.  
  30.  
  31. if(isset($_POST['wyslij'])){
  32.  
  33. if($_POST['login'] == cos && $_POST['haslo']= tam){
  34. $_SESSION['logged'] = 1;
  35.  
  36.  
  37. }
  38.  
  39. else {
  40. echo "podales zly login lub haslo";
  41. }
  42.  
  43. }
  44.  
  45. if($_SESSION['logged'] == 1) {
  46.  
  47.  
  48.  
  49. echo "dziala";
  50.  
  51.  
  52.  
  53. }
  54.  
  55.  
  56. };
  57.  
  58. loguj();
  59. ?>




logowanie dziala poprawnie jednak po zalogowaniu dalej widnieje formularz logowania

na samym poczatku jest warunek if($_SESSION['logged'] < 1){

zdaje sobie sprawe z $_SESSION['logged'] jeszcze nie istnieje i dlatego jest on wyswietlany

jednak kiedy skrypt dochodzi do kona

$_SESSION['logged'] ma juz wartosc 1

probowalem uzyc naglowka
header( 'Location: http://localhost/projekt/blog/source/sesje.php');

jednak w ie wtedy skrypt wykonuje sie jakies 2-3 minuty

kiedy daje

header('Location: 1 ; URL= http://localhost/projekt/blog/source/sesje.php')

wtedy strona odswierza sie co sekunde i skrypt dziala dobrze jednak te odswierzanie winksmiley.jpg
myth
Może po prostu zamień miejscami.. snitch.gif
  1. <?php
  2. if(isset($_POST['wyslij']))
  3. {
  4. if($_POST['login'] == cos && $_POST['haslo']= tam)
  5.  {
  6. $_SESSION['logged'] = 1;
  7. }
  8. else
  9. {
  10.  echo "podales zly login lub haslo";
  11. }
  12.  }
  13.  
  14. if($_SESSION['logged'] == 1) 
  15. echo "dziala";
  16.  
  17. if($_SESSION['logged'] < 1)
  18. {
  19.  
  20. <form action="sesje.php" method="post">
  21. <fieldset>
  22. <label>Login</label>
  23. <input type="text" name="login"/>
  24. <label>Haslo</label>
  25. <input type="password" name="haslo"/>
  26. <label></label>
  27. <input type="submit" name="wyslij"/>
  28. </fieldset>
  29. </form>
  30.  ";
  31.  }
  32. ?>
Dandelion
wiedzialem ze to jakis durny problem haha.gif
skowron-line
  1. <?php
  2. if($_SESSION['logged'] == 1) {
  3. ?>

zamiast tego daj
  1. <?php
  2. if(isset($_SESSION['logged'] )) {
  3. ?>
Dandelion
zmienilem ten fragment na

  1. <?php
  2. if($_POST['login'] && $_POST['haslo'])
  3. {
  4.  
  5. $query = ("SELECT *
  6.  FROM users
  7.  WHERE login = '".$_POST['login']."' AND haslo = '" . md5($_POST['haslo']) ."' ");
  8.  
  9. $result = mysql_query($query) or die(mysql_error());
  10. $num = mysql_num_rows($result);
  11.  
  12. if($num == 1){
  13.  
  14. $_SESSION['logged'] = 1;
  15. }
  16.  
  17. else
  18. {
  19. echo "podales zly login lub haslo";
  20. }
  21. ?>


No i logowanie nie dziala winksmiley.jpg

blad lezy w tej linijce WHERE login = '".$_POST['login']."' AND haslo = '" . md5($_POST['haslo']) ."'

pewnie jakos krzywo uzylem funkcji md5

Cytat(skowron-line @ 18.11.2006, 10:31:29 ) *
  1. <?php
  2. if($_SESSION['logged'] == 1) {
  3. ?>

zamiast tego daj
  1. <?php
  2. if(isset($_SESSION['logged'] )) {
  3. ?>


Chcialbym wiedziec czemu akurat tak

nobo ten drugi warunek bedzie sprawdzal czy istnieje $_SESSION['logged']

a ten pierwszy czy $_SESSION['logged'] przyjelo wartosc 1

Pewnie chodzi o bezpieczenstwo jednak wolalbym wiedziec dokladnie winksmiley.jpg

ps: szukalem odpowiedzi do pierwszego problemu z funkcja md5 niestety wyszukiwarka przyjmuje tylko wyrazy przynajmniej czteroliterowe. akurat pod haslem suma kontrolna nic ciekawego nie znalazlem haha.gif


EDIT 1:

problem 1 rozwiazany

w bazie danych pole przechowujace hasla mialo tylko 20 miejsc na zapis a jak wiadomo md5 generuje 32 bitowy hash

dlatego skrypt nie dzialal bo probowal porownac

4d00d79b6733c9cc066584a02ed03410 wygenerowanym przez skrypt i

4d00d79b6733c9cc0665 znajdujacym sie w bazie

smile.gif

ps: jeszcze pomecze forum "przedszkole" przez pare tygodni i moze wkoncu skoncze swoja strone :]

Dzieki serdeczne za cala pomoc jaka tutaj otrzymalem do tej pory
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.