Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Probel ze skryptem logowania SQLite
Forum PHP.pl > Forum > Przedszkole
no
Mam taki sobie skrypt logowania wykorzystujący bazę danych MySQL:
  1. <?php
  2. class clogowanie {
  3.  
  4. var $login; // przechowuje nazwę użytkownika
  5. var $passw; // hasło
  6. var $conn; // identyfikator bd
  7. var $text; // małe menu
  8. var $napis; // informacja o dodanym userze
  9.  
  10. function clogowanie() {
  11. // zczytywanie wartości zmiennych
  12.  @$this -> passw = $_POST['passw'];
  13.  @$this -> login = $_POST['login'];
  14. }
  15.  
  16. function flaczenie() {
  17. // łaczenie z bazą danych
  18.  $this -> conn = @mysql_connect("127.0.0.1","root","krasnal"); // te trzy parametry nalezy zmienić
  19.  mysql_select_db("logowanie", $this -> conn);
  20. }
  21.  
  22. function flogowanie() {
  23. // sprawdzanie czy jest taki user w BD i czy ma takie hasło
  24.  
  25.  $query = "SELECT passw FROM users WHERE user LIKE '".$this -> login."';";  // zapytanie do bd
  26.  $wynik = mysql_query($query);
  27.  $myrow = mysql_fetch_array($wynik); // to go zczytaj
  28.  
  29. if ($myrow["passw"] == $this -> passw && $this -> passw != "") {
  30.  $info = array(
  31. 'login' => $this -> login,
  32. 'czas' => time() + 300 );
  33.  $_SESSION["yarpoLOG"] = $info;
  34.  header('Location: menu.php');
  35. } else {
  36.  header('Location: index.htm');
  37. }
  38. }
  39.  
  40. function flogout() {
  41. // wylogowane
  42.  header('Location: index.htm');
  43. }
  44.  
  45. function fsesja() {
  46. // ponawianie sesji
  47.  session_start();  // uruchom sesję
  48.  
  49.  if (!isset($_SESSION['yarpoLOG'])) {
  50. header('Location: index.htm'); // jeśli nie ma sesji[niezalogowany], to ładuj index.htm
  51.  } else {
  52.  if ($_SESSION['yarpoLOG']['czas'] > time()) :  // jeśli od logowania do teraz minęło < 300
  53. $this->text="<p class=log01><a href='wyloguj.php' class='log02'>wyloguj: ".$_SESSION['yarpoLOG']['login']."</a></p>".
  54.  "<p class=log01><a href='menu.php' class='log02'>odśwież</a></p>";
  55.  $_SESSION['yarpoLOG']['czas'] = time() + 300; // i zapisz nowe info
  56.  else :
  57.  header('Location: index.htm');
  58.  endif;
  59.  }
  60. }
  61.  
  62. function fdodajUsera() {
  63.  $query = "INSERT INTO users (user, passw) VALUES ('".$this -> login."', '".$this -> passw."');";
  64.  if (mysql_query($query)) $this -> napis = "Poprawnie dodano uzytkownika";
  65.  else $this -> napis = "Nie udało się dodać użytkownika:-(";
  66. }
  67. } // koniec klasy
  68. ?>

[tutaj obsługuje się logowanie, wylogowywanie i dodawanie usera]
ale nie posiadam bazy MySQL a jedynie SQLite, więc myśle to SQL i to SQL więc sobie przerobie skrypta ;-) Wyszło mi coś takiego:
  1. <?php
  2.  
  3. class clogowanie {
  4.  
  5. var $login; // przechowuje nazwę użytkownika
  6. var $passw; // hasło
  7. var $conn; // identyfikator bd
  8. var $text; // małe menu
  9. var $napis; // informacja o dodanym userze
  10.  
  11. function clogowanie() {
  12. // zczytywanie wartości zmiennych
  13.  @$this -> passw = $_POST['passw'];
  14.  @$this -> login = $_POST['login'];
  15. }
  16.  
  17. function flaczenie() {
  18. // łaczenie z bazą danych
  19.  $this -> conn = sqlite_open('books.db');
  20. }
  21.  
  22. function flogowanie() {
  23.  
  24.  $query = "SELECT passw FROM users WHERE user LIKE '".$this -> login."';";  // zapytanie do bd
  25.  $wynik = sqlite_query($query);
  26.  $myrow = sqlite_fetch_array($wynik); // to go zczytaj
  27.  
  28. if ($myrow["passw"] == $this -> passw && $this -> passw != "") {
  29.  $info = array(
  30. 'login' => $this -> login,
  31. 'czas' => time() + 300 );
  32.  $_SESSION["yarpoLOG"] = $info;
  33.  header('Location: menu.php');
  34. } else {
  35.  header('Location: index.htm');
  36. }
  37. }
  38.  
  39. function flogout() {
  40. // wylogowane
  41.  header('Location: index.htm');
  42. }
  43.  
  44. function fsesja() {
  45. // ponawianie sesji
  46.  session_start();  // uruchom sesję
  47.  
  48.  if (!isset($_SESSION['yarpoLOG'])) {
  49. header('Location: index.htm'); // jeśli nie ma sesji[niezalogowany], to ładuj index.htm
  50.  } else {
  51.  if ($_SESSION['yarpoLOG']['czas'] > time()) :  // jeśli od logowania do teraz minęło < 300
  52. $this->text="<p class=log01><a href='wyloguj.php' class='log02'>wyloguj: ".$_SESSION['yarpoLOG']['login']."</a></p>".
  53.  "<p class=log01><a href='menu.php' class='log02'>odśwież</a></p>";
  54.  $_SESSION['yarpoLOG']['czas'] = time() + 300; // i zapisz nowe info
  55.  else :
  56.  header('Location: index.htm');
  57.  endif;
  58.  }
  59. }
  60.  
  61. function fdodajUsera() {
  62.  $query = "INSERT INTO users (user, passw) VALUES ('".$this -> login."', '".$this -> passw."');";
  63.  if (mysql_query($query)) $this -> napis = "Poprawnie dodano uzytkownika";
  64.  else $this -> napis = "Nie udało się dodać użytkownika:-(";
  65. }
  66. } // koniec klasy
  67. ?>

ale jednak taki skrypt nie działa... zwraca mi:
Cytat
Warning: sqlite_query() expects at least 2 parameters, 1 given in c:\usr\krasnal\www\sqlitemanager\skrypt\classLogowanie.php on line 26

Warning: sqlite_fetch_array() expects parameter 1 to be resource, null given in c:\usr\krasnal\www\sqlitemanager\skrypt\classLogowanie.php on line 27

Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\sqlitemanager\skrypt\classLogowanie.php:26) in c:\usr\krasnal\www\sqlitemanager\skrypt\classLogowanie.php on line 36

Co tam jest źle? Mógłby mi ktoś pomóc to przerobić....
Albo zapodać inny skrypt logowania na SQLite.

Z góry dziękuje.
GrayHat
Cytat
Warning: sqlite_query() expects at least 2 parameters, 1 given in c:\usr\krasnal\www\sqlitemanager\skrypt\classLogowanie.php on line 26


sqlite_query wymaga dwu parametrow. pierwszy to handle polaczenia, drugi to wlasciwe query.

podmien 27 linijke na
  1. <?php
  2. $wynik = sqlite_query($this->conn,$query);
  3. ?>


drugi blad jest spowodowany tym, ze sqlite_query() nic nie zwrocilo i sqlite_fetch_array() nie ma co przetwarzac.

trzeci blad zniknie samoczynnie jak poprawisz ten pierwszy blad.

pozdrawiam.
Guest
Wielkie dzięki, to samo dodałem do 69 przy dodawaniu użytkowanika i już wszystko działa.
Guest
A teraz w innym takim prostym skrypcie mam taki error:
Cytat
Warning: sqlite_query() [function.sqlite-query]: no such table: dzwieki in c:\usr\krasnal\www\sqlitemanager\dzwieki_form.php on line 10

dlaczego? tabela dzwieki instaniej w bazie (books.db) a w niej:
  1. dzwieki (
  2. id INTEGER(3) NOT NULL PRIMARY KEY,
  3. tytul TEXT NOT NULL,
  4. tresc TEXT NOT NULL,
  5. obraz TEXT NOT NULL
  6. )

po tym jest jeszcze jeden bład, ale jest on chyba spowodowany tym 1:
Cytat
Warning: sqlite_fetch_array() expects parameter 1 to be resource, boolean given in c:\usr\krasnal\www\sqlitemanager\dzwieki_form.php on line 12


oto skrypt:
  1. <?php
  2. $conn = sqlite_open(books.db);
  3. $wykonaj = sqlite_query($conn, 'SELECT * FROM dzwieki');
  4.  
  5. while($dane = sqlite_fetch_array($wykonaj, SQLITE_ASSOC)) {
  6.  
  7. $a = stripslashes();
  8. $b = stripslashes();
  9. $c = stripslashes();
  10.  
  11. echo '<b>'.$dane['tytul'].'. '. $dane['obraz'].'</b><br>
  12. Tekst: '.$dane['tekst'].'<br><br>';
  13.  
  14. }
  15. ?>


sorki, że dowalam jeszcze tutaj, ale nie checiałem dla "tego" zakadać nowego tematu...
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.