Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem w logowaniu [PHP i SQL]
LewyM1
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 22.02.2011
Skąd: Sierpc

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


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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
piotrycjan
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 25.02.2011

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


W momencie wywołania metody 'query' zmienna $lacz nie istnieje (bo istnieje ona jedynie o obrębie funkcji lacz_mysql).
Go to the top of the page
+Quote Post
LewyM1
post
Post #4





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 22.02.2011
Skąd: Sierpc

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


Dobra dzięki all. Teraz występuje kolejny błąd, pomimo nieistnienia użytkownika w bazie loguje się na niego...
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LewyM1
post
Post #6





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 22.02.2011
Skąd: Sierpc

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


Dzięki Nospor za rozwiązanie problemu. Początki bywają trudne, a człowiek uczy się na błędach. wink.gif
Go to the top of the page
+Quote Post

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: 19.08.2025 - 19:58