Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Nie mogę uruchomić sesji
Fakebook
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.03.2014

Ostrzeżenie: (0%)
-----


Witam

Utknałem tym razem w momencie gdy chcę zalogować się do bazy danych.

Plik loginform.inc.php zawiera formularz i sprawdza poprawność danych (i działa poprawnie, bo po podaniu odpowiedniego hasła i loginu wyświetla się właściwy rząd w tabeli), natomiast za diabła nie wiem dlaczego nie mogę odpalić sesji. Kod ma wg opisu albo wyswietlic 'You are logged in' po podaniu poprawnych danych, albo wyswietlic ponownie formularz logowania, i wygląda tak:
  1.  
  2. require 'connect.inc.php';
  3.  
  4. if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
  5. echo 'You are logged in';
  6. } else {
  7.  
  8. include 'loginform.inc.php';
  9. }

a tu jeszcze fragment pliku loginform.inc.php z przypisanym id sesji:
  1. if ($query_num_rows==1) {
  2. $user_id = mysql_result($query_run, 0, 'id');
  3. $_SESSION['user_id'] = $user_id;
  4. header('Location: index.php');

Rezultat jest taki, że wpisanie odpowiedniego loginu i hasła wyświetla ponownie formularz logowania, a nie komunikat 'you are logged in'.

Troche eksperymentowalem, wywaliłem loginform.inc.php poza warunek if:
  1. $current_file = $_SERVER['SCRIPT_NAME'];
  2.  
  3. require 'connect.inc.php';
  4.  
  5. include 'loginform.inc.php';
  6.  
  7. if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
  8. echo 'You are logged in';
  9. } else {
  10. echo 'try again';
  11. }

I zadzialalo, tzn po zalogowaniu sie dostaje prawidlowy komunikat.

Z tym ze w tutorialu jest tak jak w pierwszym przykładzie, i nie mam pojęcia dlaczego na filmiku działało a u mnie nie. Tutorial jest z 2011 roku, czy jest możliwość że zmieniła się struktura php i dlatego u mnie nie zadziałało?

Pozdrawiam
Powód edycji: [Kshyhoo]: Przypominam o używaniu bb-code
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Warunek jest dobry, nie słuchaj głupot. Musiałbyś pokazać więcej kodu. Ale skoro przeniosłeś include i działa, to w czym jeszcze problem?
Go to the top of the page
+Quote Post
Fakebook
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.03.2014

Ostrzeżenie: (0%)
-----


Cytat(Damonsson @ 23.03.2014, 14:52:59 ) *
Warunek jest dobry, nie słuchaj głupot. Musiałbyś pokazać więcej kodu. Ale skoro przeniosłeś include i działa, to w czym jeszcze problem?


Problem w tym że chciałbym aby formularz zniknął po zalogowaniu, to po 1., po drugie chciałbym zrozumieć dlaczego, skoro obydwa warunki są dobre, nie wyświetla mi się głupie echo (w procesie uczenia staram się zrozumieć jak coś działa, a nie napisać kod i modlić się żeby się udało jak nie ręką to młotkiem)

Nie wiem czy to pomoże, ale kod formularza wygląda tak (kod index.php był wklejony w całości w pierwszym poście)

  1. <?php
  2.  
  3. if (isset($_POST['username']) && isset($_POST['password'])) {
  4.  
  5. $username = $_POST['username'];
  6. $password = $_POST['password'];
  7.  
  8. $password_md5 = md5($password);
  9.  
  10. if (!empty($username) && !empty($password)) {
  11.  
  12.  
  13. $query = "SELECT `id` FROM `users (135)` WHERE `username`='$username' AND `password`='$password_md5'";
  14.  
  15. if ($query_run = mysql_query($query)) {
  16. $query_num_rows = mysql_num_rows($query_run);
  17.  
  18. if ($query_num_rows == 0) {
  19. echo 'Invalid username or password';
  20. } else if ($query_num_rows==1) {
  21. $user_id = mysql_result($query_run, 0, 'id');
  22. $_SESSION['user_id'] = $user_id;
  23. header('Location: index.php');
  24.  
  25. }
  26.  
  27. }
  28.  
  29. } else {
  30. echo 'You must type in username and password';
  31. }
  32.  
  33. }
  34.  
  35. ?>
  36.  
  37. <form action="index.php" ?>" method="POST">
  38. Username:
  39. <input type="text" name="username"><br>
  40. Password:
  41. <input type="password" name="password"><br>
  42. <input type="submit" name="submit" value="Log In">
  43.  
  44. </form>




Cytat(trueblue @ 23.03.2014, 14:59:00 ) *
A gdzie wyłączasz buforowanie rozpoczęte poprzez ob_start();?


Najprawdopodobniej nie wyłączam, szczerze mówiąc nie rozumiem jeszcze działania tej funkcji i do czego służy, dodałem ją gdyż tak mówił tutorial


Ten post edytował Fakebook 23.03.2014, 16:34:36
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #4





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

Ostrzeżenie: (0%)
-----


wymień
  1. <form action="index.php" ?>" method="POST">
  2. <!--na-->
  3. <form action="index.php" method="POST">

oraz
Kod
$query = "SELECT `id` FROM `users (135)`
#na
$query = "SELECT `id` FROM `users`


poza tym za FROM powinna być tabela a nie kolumna tabeli.

Ten post edytował ZaXaZ 24.03.2014, 00:07:19
Go to the top of the page
+Quote Post

Posty w temacie
- Fakebook   [PHP][MySQL]Nie mogę uruchomić sesji   23.03.2014, 13:32:10
- - Kshyhoo   Pomyśl logicznie, Twój warunek: jeżeli istnieje ...   23.03.2014, 13:57:05
|- - Fakebook   Cytat(Kshyhoo @ 23.03.2014, 13:57:05 ...   23.03.2014, 14:22:03
- - Kshyhoo   No tak, miało być "nie pusta".   23.03.2014, 14:27:22
- - Fakebook   Dzięki, ale to są chyba warunki które się nie wykl...   23.03.2014, 14:44:15
- - Damonsson   Warunek jest dobry, nie słuchaj głupot. Musiałbyś ...   23.03.2014, 14:52:59
|- - Fakebook   Cytat(Damonsson @ 23.03.2014, 14:52:5...   23.03.2014, 16:32:24
|- - trueblue   Cytat(Fakebook @ 23.03.2014, 16:32:24...   23.03.2014, 17:06:23
||- - Fakebook   Cytat(trueblue @ 23.03.2014, 17:06:23...   23.03.2014, 19:49:40
|- - ZaXaZ   wymień [HTML] pobierz, plaintext <form action=...   24.03.2014, 00:06:33
|- - Fakebook   Cytat(ZaXaZ @ 24.03.2014, 00:06:33 ) ...   24.03.2014, 16:42:04
- - trueblue   A gdzie wyłączasz buforowanie rozpoczęte poprzez o...   23.03.2014, 14:59:00
- - trueblue   Zakomentuj ob_start(); i wrzuć przed linią 6 (w pi...   24.03.2014, 16:55:35
|- - Fakebook   Cytat(trueblue @ 24.03.2014, 16:55:35...   24.03.2014, 18:12:43
- - com   no a gdzie session_start(); w index?   24.03.2014, 18:16:43
- - Fakebook   [PHP] pobierz, plaintext <?php session_sta...   24.03.2014, 18:20:39
- - Dyktus   Ja widzę session_start() na początku. Spróbuj zr...   24.03.2014, 18:25:38
- - Fakebook   Cytat(Dyktus @ 24.03.2014, 18:25:38 )...   25.03.2014, 08:43:37
- - Dyktus   Spróbuj na samym początku swojego kodu podać coś t...   25.03.2014, 17:55:49
|- - Fakebook   Cytat(Dyktus @ 25.03.2014, 17:55:49 )...   26.03.2014, 01:14:13
- - Dyktus   Cieszę się, że pomogłem Masz kolejne doświadczen...   26.03.2014, 10:31:45


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 00:41