Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: system logowania, sesje - błąd !
Forum PHP.pl > Forum > PHP
mitp
Witam

Mam bardzo fajny skrypt, który pochodzi z ksiazki php i MySQL tworzenie stron www, ale co ciekawego wywala błędy.

nic nie zmieniałem, może ktoś mi powiedzieć co jest nie tak?

pliki:
uwierz_glowny.php
tylko_czlonkowie.php
wylog.php

uwierz_glowny.php
  1. <?php
  2.  
  3. if(isset($_POST['iduzytkownika']) && isset($_POST['haslo']))
  4. {
  5. // jeżeli użytkownik wła&para;nie podj&plusmn;ł próbę zalogowania
  6. $iduzytkownika = $_POST['iduzytkownika'];
  7. $haslo = $_POST['haslo'];
  8.  
  9. $bd_lacz = new mysql('localhost', 'root', 'krasnal', 'uwierz');
  10.  
  11. if (mysqli_connect_errno()) {
  12. echo 'Poł&plusmn;czenie z baz&plusmn; danych nie powiodło się: '.mysqli_connect_error();
  13. exit();
  14. }
  15.  
  16. $zapytanie = 'select * from uwierzytelnieni_uzytkownicy '
  17.  ."where uzytkownik='$iduzytkownika' "
  18.  ." and haslo=sha1('$haslo')";
  19.  
  20. $wynik = $bd_lacz->query($zapytanie);
  21. if($wynik->num_rows > 0)
  22. {
  23. // jeżeli dane s&plusmn; w bazie zarejestrowanie identyfikatora użytkownika
  24. $_SESSION['prawid_uzyt'] = $iduzytkownika;
  25. }
  26. $bd_lacz->close();
  27. }
  28. ?>
  29. <html>
  30. <body>
  31. <h1>Strona główna</h1>
  32. <?
  33. if(isset($_SESSION['prawid_uzyt']))
  34. {
  35. echo 'Użytkownik zalogowany jako: '.$_SESSION['prawid_uzyt'].'<br />';
  36. echo '<a href="wylog.php">Wylogowanie</a><br />';
  37. }
  38. else
  39. {
  40. if(isset($iduzytkownika))
  41. {
  42. // jeżeli próba logowania była nieudana
  43. echo 'Zalogowanie niemożliwe.<br />';
  44. }
  45. else
  46. {
  47. // nie było próby logowania lub nast&plusmn;piło wylogowanie
  48. echo 'Użytkownik niezalogowany.<br />';
  49. }
  50.  
  51. // tworzenie formularza logowania
  52. echo '<form method="post" action="uwierz_glowny.php">';
  53. echo '<table>';
  54. echo '<tr><td>Identyfikator użytkownika:</td>';
  55. echo '<td><input type="text" name="iduzytkownika"></td></tr>';
  56. echo '<tr><td>Hasło:</td>';
  57. echo '<td><input type="password" name="haslo"></td></tr>';
  58. echo '<tr><td colspan="2" align="center">';
  59. echo '<input type="submit" value="Logowanie"></td></tr>';
  60. echo '</table></form>';
  61. }
  62. ?>
  63. <br>
  64. <a href="tylko_czlonkowie.php">Czę&para;ć członkowska</a>
  65. </body>
  66. </html>


tylko_czlonkowie.php
  1. <?php
  2.  
  3. echo '<h1>Część członkowska</h1>';
  4.  
  5. // sprawdzenie zmiennej sesji
  6.  
  7. if(isset($_SESSION['prawid_uzyt']))
  8. {
  9. echo '<p>Użytkownik zalogowany jako '.$_SESSION['prawid_uzyt'].'</p>';
  10. echo '<p>Oto zawartość dostępna tylko dla członków</p>';
  11. }
  12. else
  13. {
  14. echo '<p>Użytkownik niezalogowany.</p>';
  15. echo '<p>Tylko zalogowani użytkownicy mogą oglądać tę stronę.</p>';
  16. }
  17.  
  18. echo '<a href="uwierz_glowny.php">Powrót do strony głównej</a>';
  19. ?>


wylog.php
  1. <?php
  2.  
  3. $stary_uzyt=$_SESSION['prawid_uzyt']; // przechowanie do sprawdzenie czy logowanie nastąpiło
  4. unset($_SESSION['prawid_uzyt']);
  5. ?>
  6. <html>
  7. <body>
  8. <h1>Wylogowanie</h1>
  9. <?php
  10. if (!empty($stary_uzyt))
  11. {
  12. echo 'Wylogowano.<br />';
  13. }
  14. else
  15. {
  16. // jeżeli brak zalogowania, lecz w jakiś sposób uzyskany dostęp do strony
  17. echo 'Użytkownik niezalogowany, tak więc brak wylogowania.<br />';
  18. }
  19. ?>
  20. <a href="uwierz_glowny.php">Powrót do strony głównej</a>
  21. </body>
  22. </html>


baza:
  1. CREATE DATABASE uwierz;
  2.  
  3. USE uwierz;
  4.  
  5. CREATE TABLE uwierzytelnieni_uzytkownicy (
  6. uzytkownik varchar(20) NOT NULL,
  7. haslo varchar(40) NOT NULL,
  8. PRIMARY KEY (uzytkownik)
  9. );
  10.  
  11. INSERT
  12. INTO uwierzytelnieni_uzytkownicy VALUES
  13. ('uzytkownik', 'haslo');
  14.  
  15. INSERT
  16. INTO uwierzytelnieni_uzytkownicy VALUES
  17. ( 'testowy', sha1('haslo') );
  18.  
  19. GRANT SELECT ON uwierz.*
  20. TO uwierzytel@localhost
  21. IDENTIFIED BY 'uwierzytel';
  22.  
  23. FLUSH privileges;


no i super - wszystko cacy odpalamy uwierz_glowny.php , wpisujemy login, haslo

i

  1. Fatal error: Cannot instantiate non-existent class: mysql in c:\usr\krasnal\www\a\uwierz_glowny.php on line 10



co tu jest nie tak?
lukas1
W dzisiątej linii tworzysz obiekt klasy 'mysql'. Zmienna $bd_lacz jest wskaźnikiem do tego obiektu. Żeby nie wyświetlało tego błędu musisz dołączyć plik z klasą 'mysql' ( tj. include 'nazwa_pliku' ). biggrin.gif
mitp
a w ktorym miejscu biggrin.gif
lukas1
include 'nazwa_pliku';
można umieścić w linii 9 pliku uwierz_glowny.php
Upewnij się, że masz ten plik w katalogu wraz z pozostałymi plikami, które tu przedstawiłeś.

pozdrawiam smile.gif
dr_bonzo
lukas1: to nie to.

mitp: brakuje litery i
  1. <?php
  2.  .. new mysqli(...)
  3. ?>
-- tak jak w pozostalych funkcjach, np. mysqli_connect_errno()
mitp
dr_bonzo dopisalem tam gdzie wspomniales "mysqli" - i dalej bylo to samo

lukas1z include tez nie smiga

hmm cos innego? smile.gif
legorek
A masz w ogóle php5 na serwerze? Mysqli jest dopiero w piątce.
mitp
tzn mam zainstalowanego krasnala, a w wersji ktora pobralem jest php 5.0.2 wiec powinno dzialac
legorek
nie wiem jak jest na krasnalu, zrób sobie phpinfo() to będziesz wiedział, bo wygląda na to ze nie masz piątki.
revyag
Ma php5 ale domyślnie chodzi chyba na czwórce. Musisz odpalić sobie piątkę.
mitp
revyag masz racje staruje domyslnie z 4 - ale juz przelaczalem z 10 razy i na 4 i na 5 i dalej to samo. No nic wymysle cos innego

dzieki wszystkim za podpowiedzi
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.