Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem w logowaniu [PHP i SQL]
Forum PHP.pl > Forum > Przedszkole
LewyM1
Witam. Piszę skrypt na logowanie wraz z rejestracją. Wydaje mi się, że w kodzie nie ma błędów, ale przeglądarka mówi co innego:
Kod
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Users/macmac/Sites/CMSLewy/funkcje/funkcje_mysql.php:9) in /Users/macmac/Sites/CMSLewy/zaloguj.php on line 3

Fatal error: Call to a member function query() on a non-object in /Users/macmac/Sites/CMSLewy/zaloguj.php on line 7

Błąd ukazuje się po podaniu danych w formularzu. Poniżej kod pliku.
  1. <?php
  2. require('funkcje/funkcje.php');
  3. if (!isset($_SESSION['zalogowany'])) {
  4. if ($_GET['wykonaj'] == "zaloguj") {
  5. lacz_mysql();
  6. $wynik = $lacz->query("select * from uzytkownicy where nazwa_uzytkownika = '".$_POST['nazwa_uzytkownika']."' and haslo = '".$_POST['haslo']."'");
  7. if (!$wynik) {
  8. echo "Podana nazwa użytkownika lub hasło nie jest poprawne";
  9. } else {
  10. $_SESSION['zalogowany'] = $_POST['nazwa_uzytkownika'];
  11. echo "Zalogowano jako: ".$_POST['nazwa_uzytkownika'];
  12. }
  13. } else {
  14. echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."?wykonaj=zaloguj\">";
  15. echo "<p>Nazwa uzytkownika:</p>";
  16. echo "<p><input type=\"text\" name=\"nazwa_uzytkownika\" size=\"20\"></p>";
  17. echo "<p>Hasło:</p>";
  18. echo "<p><input type=\"password\" name=\"haslo\" size=\"20\"></p>";
  19. echo "<p><input type=\"submit\" value=\"Zaloguj\"></p>";
  20. echo "</form>";
  21. }
  22. } else {
  23. echo "Jesteś już zalogowany";
  24. }
  25. ?>

  1. <?php
  2. function lacz_mysql() {
  3. $lacz = new mysqli('localhost', 'root', '', 'lewy');
  4. if (mysqli_connect_errno()) {
  5. echo 'Nie można połączyć sie z bazą danych.';
  6. }
  7. }
  8. ?>
nospor
Błąd poruszany milion razy zarówno na forum jak i w internecie. Użyj wyszukiwarki

Co do drugiego bledu to poczytaj o zasięgu zmiennych
http://pl.php.net/manual/pl/language.variables.scope.php

przenosze
piotrycjan
W momencie wywołania metody 'query' zmienna $lacz nie istnieje (bo istnieje ona jedynie o obrębie funkcji lacz_mysql).
LewyM1
Dobra dzięki all. Teraz występuje kolejny błąd, pomimo nieistnienia użytkownika w bazie loguje się na niego...
nospor
Doczytaj mistrzu co zwraca Twoje query() nawet gdy nie ma danych.
A potem zastanów się, czy to
if (!$wynik)
ma sens w świetle nowych faktów smile.gif
LewyM1
Dzięki Nospor za rozwiązanie problemu. Początki bywają trudne, a człowiek uczy się na błędach. wink.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.