Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Nie działa mi sesja session_start();
Forum PHP.pl > Forum > Przedszkole
clameur
Hejka. Zaczynam tworzyć swój wlasny cms, z tego powodu powoli się ucze php. Zrobiłem formularz, w ktorym udalo mi sie zrobic zapytanie do bazy danych u login i haslo. Testowałem na localhost (wamp) i logowanie działa dobrze, tzn nie wylogowuje mnie po odświeżeniu strony. Jednak po przerzuceniu na inny serwer sesja jakby nie działała, zero komunikatów...
Wrzucam moje 3 pliczki i bardzo proszę o pomoc.
PLIK panel.php który odpalam jako pierwszy:
  1. <?php
  2. require 'polaczenie.php';
  3. require 'core.php';
  4. if(!zalogowany())
  5. {
  6. include 'zaloguj.php';
  7. }
  8. else
  9. {
  10. echo 'Jestes zalogowany';
  11. }
  12. ?>

Plik zaloguj.php, który pojawia się, gdy brak sesji
  1. <?php
  2. if(isset($_POST['uzytkownik']) && isset($_POST['haslo']))
  3. {
  4. $uzy = $_POST['uzytkownik'];
  5. $has = $_POST['haslo'];
  6. $has_hash = sha1($has); //40 znaków haslo na hash
  7.  
  8. if(!empty($uzy) && !empty($has))
  9. {
  10. $q = sprintf("SELECT `id` FROM `uzytkownicy` WHERE `uzytkownik` = '".mysql_real_escape_string($uzy)."' AND `haslo` = '".mysql_real_escape_string($has_hash)."'");
  11. if($wQ = mysql_query($q))
  12. {
  13. $wQr = mysql_num_rows($wQ);
  14. if($wQr == 0)
  15. {
  16. echo 'Zly login lub haslo';
  17. }
  18. elseif($wQr == 1)
  19. {
  20.  
  21. $uzyt = mysql_result($wQ, 0, 'id' );
  22. $_SESSION['uzyt'] = $uzyt;
  23.  
  24. //header('Location: info.php');
  25. //header('Location: '.$ref);
  26. }
  27. }
  28. }
  29. else
  30. {
  31. echo '<script>
  32. alert(\'Prosze wypelnic wszystkie pola\')
  33. </script>';
  34. }
  35. }
  36. ?>
  37. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  38. <form action="<?php echo $plik; ?>" method="POST">
  39. Nazwa użytkownika: <br>
  40. <input type="text" name="uzytkownik"><br>
  41. Hasło: <br>
  42. <input type="password" name="haslo"><br>
  43. <input type="submit" value="Zaloguj" >
  44. </form>

Oraz plik core.php który sprawdza czy jest sesja:
  1. <?php
  2. $ref = $_SERVER['HTTP_REFERER']; // adres powrotu
  3. $plik = $_SERVER['SCRIPT_NAME'];
  4. function zalogowany()
  5. {
  6. if(isset($_SESSION['uzyt']) && !empty($_SESSION['uzyt']) )
  7. {
  8. return true;
  9. }
  10. else
  11. {
  12. return false;
  13. }
  14. }
  15. ?>


Bardzo proszę o pomoc, dlaczego to nie działa. Gdy wpisze prawidłowy login i hasło zamiast zwrócic mi "Jestes zalogowany" zwraca mi ponownie ''zaloguj.php" jakby warunek z pliku "core.php" nie byl spelniony...ale jest bo sprawdzałem, zmienna $_SESSION['uzyt'] napewno wynosi 1. Help me sad.gif(

Temat do zamkniecia. Nie miałem praw do zapisu w folderze tmp gdzie pliki sesji chcialy sie zapisywac. Przepraszam za problem.
aras785
wywal session_start() z core.php i dodaj do pierwszego session_start() czyli tak:
  1. <?php
  2. require 'polaczenie.php';
  3. require 'core.php';
  4. if(!zalogowany())
  5. {
  6. include 'zaloguj.php';
  7. }
  8. else
  9. {
  10. echo 'Jestes zalogowany';
  11. }
  12. ?>


---
Jeśli zaczynasz się dopiero uczyć to używaj od razu PDO do obsługi baz danych

Przykład z pdo dla loguj.php:

  1. <?php
  2. if(isset($_POST['login']) AND isset($_POST['password'])) {
  3. if(!empty($_POST['login']) AND !empty($_POST['password'])) {
  4. $login = trim($_POST['login']); // przypisujemy login do zmiennej login
  5. $password = md5(trim($_POST['password'])); //przypisujemy haslo do zmiennej password
  6. //logowanie do bazy danych
  7. $db = new PDO('mysql:host=loaclhost;dbname=database', 'username', 'password'); //przykładowe dane
  8. $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
  9. //zapytanie
  10. $query = $db->prepare('SELECT * FROM uzytkownicy WHERE uzytkownik=:login AND password=:password LIMIT 1--'); //zapytanie
  11. $query->bindParam(':login',$login,PDO::PARAM_STR);
  12. $query->bindParam(':password',$password,PDO::PARAM_STR, 32); //hash md5 = 32 znaki
  13. //wynujemy i sprawdzamy wynik
  14. if($query->rowCount($query->execute())==1) {
  15. $user = $query->fetch();
  16. $_SESSION['user_id'] = $user->id;
  17. echo('Został poprawnie zalogowany');
  18. }else echo('Zły login lub hasło');
  19. }else echo('Proszę wypełnić wszystkie pola');
  20. }
  21. ?>
  22. <form action="" method="POST">
  23. Nazwa użytkownika: <br>
  24. <input type="text" name="login"><br>
  25. Hasło: <br>
  26. <input type="password" name="password"><br>
  27. <input type="submit" value="Zaloguj" >
  28. </form>
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.