Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Logowanie z użytkowników z różnych tabel MySQL
Forum PHP.pl > Forum > Przedszkole
asiasek
Hej! Mam problem z logowanie uzytkowników, którzy pochodzą z różnych tabel MySQL. Skrytp, który jest poniżej niby loguje, tzn zapisuje cos do $_SESSION['user'], ale nie jest to ani imie, nazwisko ani poziom. Bardzo proszę o pomoc w znalezieniu błędu, dziękuje, asia

login.php
  1. <?php
  2.  
  3. require_once ('function_login.php');
  4. if (isset($_POST['login']) && isset($_POST['haslo']))
  5. {
  6.  polaczenie_mysql($config['mysql']);
  7.  login ('id_user','users');
  8.  if (isset($_SESSION['user']))
  9.  {
  10. print "Jesteś zalogowany jako " . $_SESSION['user']['imie'] . " " . $_SESSION['user']['nazwisko'] .", user";
  11.  }
  12.  else
  13.  {
  14.  login ('id_pacjentka','pacjentka');
  15.  if (isset($_SESSION['user']))
  16.  {
  17.  print "Jesteś zalogowany jako " . $_SESSION['user']['imie'] . " " . $_SESSION['user']['nazwisko'] .", pacjent ";
  18.  header("Location: index.php");
  19.  }
  20.  else
  21.  {
  22.  print "Wpisałeś błędne dane"; //nie ma takiej osoby
  23.  }
  24.  }
  25.  
  26. }
  27. else
  28. {
  29. include 'podstrony/login/forumlarz_logowania.html';
  30.  
  31. }
  32.  
  33. ?>



function_login.php
  1. <?php
  2.  
  3. function login ($select1,$table)
  4. {
  5. $query = "
  6. SELECT '$select1', 'imie', 'nazwisko', 'poziom'
  7. FROM $table
  8. WHERE login = '" . $_POST['login']. "'
  9. AND haslo = '" . $_POST['haslo'] . "'
  10. ";
  11.  
  12. $result = mysql_query($query) or die("Zapytanie niepoprawne");
  13.  
  14. while ($row = mysql_fetch_assoc($result))
  15. {
  16. if(empty($row['imie']) && empty($row['login']) && empty($row['haslo']))
  17. { // jeśli imię jest puste, tzn nie ma takiego użytkownika, lub hasło (lub login) jest błędne
  18. print "Wpisane dane są błędne. Spróbuj jeszcze raz.";
  19. } else
  20. {  // jeśli znalazłem użytkownika i hasło się zgadza zapisuję dane do tablicy $_SESSI
    ON (bieżącej sessji użytkownika)
  21. $_SESSION['user']['$select1'] = $row['$select1'];
  22. $_SESSION['user']['imie'] = $row['imie'];
  23. $_SESSION['user']['nazwisko'] = $row['nazwisko'];
  24. $_SESSION['user']['poziom'] = $row['poziom'];
  25.  }
  26.  }
  27. }
  28. ?>
kresh
  1. <?php
  2. $query = "
  3. SELECT '$select1', 'imie', 'nazwisko', 'poziom'
  4. FROM $table
  5. WHERE login = '" . $_POST['login']. "'
  6. AND haslo = '" . $_POST['haslo'] . "'
  7. ";
  8. ?>


Pobierasz $select1, imie, nazwisko i poziom a potem nagle sprawdzasz:

  1. <?php
  2. if(empty($row['imie']) && empty($row['login']) && empty($row['haslo']))
  3. ?>


$row['login'] i $row['haslo'] są puste, pobieraj je z $_POST

Kolejny błąd to
  1. <?php
  2. $_SESSION['user']['$select1'] = $row['$select1'];
  3. ?>


powinno być
  1. <?php
  2. $_SESSION['user'][$select1] = $row[$select1];
  3. ?>


A jeśli coś zapisuje to sobie to wyświetl i pokaż, np

  1. <?php
  2. echo "<pre>";
  3. print_r( $_SESSION );
  4. echo "</pre>";
  5. ?>


edit:
  1. <?php
  2. print "Jesteś zalogowany jako " . $_SESSION['user']['imie'] . " " . $_SESSION['user']['nazwisko'] .", pacjent ";
  3.  header("Location: index.php");
  4. ?>

Musisz sobie zdawać sprawę że w tym miejscu nie zobaczysz tekstu, tylko zostaniesz przekierowana na index.php

edit2:
Oczywiście wiesz na początku dokumentu musisz wywołać start sesji:
  1. <?php
  2. ?>
asiasek
Dziękuję za szybką odpowiedź, poprawiłam błędy i oto co otrzymuję sad.gif:

Array
(
[user] => Array
(
[id_user] => id_user
[imie] => imie
[nazwisko] => nazwisko
[poziom] => poziom
)

)
kresh
  1. <?php
  2. $query = "
  3. SELECT $select1, imie, nazwisko, poziom
  4. FROM $table
  5. WHERE login = '" . $_POST['login']. "'
  6. AND haslo = '" . $_POST['haslo'] . "'
  7. ";
  8. ?>


W klauzuli SELECT nie ujmuj nazw pól w apostrofy powinno być OK
asiasek
Dziękuję bardzo za pomoc! Działa!

(Najdziwniejsze jest to że we wszystkich innych skryptach mam wyrażenia w ' ' i działają. )

Reasumując - błąd polegał na tym aby po SELECT nie używać wyrażeń w ' ':

Źle:
  1. <?php
  2. $query = "
  3. SELECT '$select1', 'imie', 'nazwisko', 'poziom'
  4. FROM $table
  5. WHERE login = '" . $_POST['login']. "'
  6. AND haslo = '" . $_POST['haslo'] . "'
  7. ";
  8. ?>



Dobrze:
  1. <?php
  2. $query = "
  3. SELECT $select1, imie, nazwisko, poziom
  4. FROM $table
  5. WHERE login = '" . $_POST['login']. "'
  6. AND haslo = '" . $_POST['haslo'] . "'
  7. ";
  8. ?>
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.