Znowu mam problem z PDO. Otóż mam taki kod pliku login.php
<?php require 'config.php'; require_once 'functions.php'; ?> <? // Zabezpiecz zmienne odebrane z formularza if ($_POST['send'] == 1) { // Sprawdzamy czy wszystkie pola są uzupełnione } } // Sprawdź, czy użytkownik o podanym emailu i haśle isnieje w bazie danych $SQL = "SELECT COUNT(*) FROM users WHERE email = :email AND pass = :pass"; $exists -> bindValue(':email', $email, PDO::PARAM_STR); $exists -> bindValue(':pass', $pass, PDO::PARAM_STR); $exists -> execute(); $count = $exists -> rowCount(); if ($count == 0) { // Użytkownik nie istnieje w bazie } else { $sql = "SELECT * FROM `users` WHERE `email` = :email and `pass` = :pass and `status`=0"; $query -> bindValue(':email', $email, PDO::PARAM_STR); $query -> bindValue(':pass', $pass, PDO::PARAM_STR); $query -> execute(); $RES = $query -> fetchColumn(); // Jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat if ($RES == 1) { echo '<p>Nie aktywowałeś jeszcze swojego konta. Aby to zrobić, wejdź na swojego maila, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto</p>'; exit; } // Użytkownik istnieje $user = userData($email, $pass); // Pobierz dane użytknika do tablicy i zapisz ją do zmiennej $user // Przypisz pobrane dane do sesji $_SESSION['email'] = $email; $_SESSION['pass'] = $pass; echo '<p class="success">Zostałeś zalogowany. Możesz przejść na <a href="java script: history.go(-2)">poprzednią stronę</a> lub przejść na <a href="index.php">stronę główną</a></p>'; } } else { /** * FORMULARZ LOGOWANIA */ ?> <form method="post" action=""> <p>Email: * <input id="email" type="email" name="email" required /><br> <br>Hasło: * <input maxlength="32" id="pass" type="password" name="pass" required /> <br> <input type="hidden" name="send" value="1" /> <input type="submit" id="submit" value="Zarejestruj" /> </form> <? } ?>
A taki kod pliku functions.php
<?php /** Sprawdza czy użytkownik jest zalogowany * jeżeli nie zwraca false * jeżeli tak zwraca true **/ function isLogged() { return false; } else { return true; } } // Pobiera wszystkie dane o użytkowniku function userData($email, $pass) { if ($email == '') $email = $_SESSION['email']; if ($pass == '') $pass = $_SESSION['pass']; $sql = "SELECT * FROM `users` WHERE `email` = :email AND `pass` = :pass LIMIT 1"; $data -> bindValue(':email', $email, PDO::PARAM_STR); $data -> bindValue(':pass', $pass, PDO::PARAM_STR); $data -> execute(); $user_data = $data -> fetch(); return $user_data; } /** Pobiera wszystkie dane o użytkownika tak jak funkcja wyżej lecz * rozpoznaje użytkownika nie po podanym emailu i haśle lecz po id **/ function userDataById ($id) { $data = $pdo -> query("SELECT * FROM `users` WHERE `id`='$id' LIMIT 1"); $user_data = $data -> fetch(); return $user_data; } ?>
I problem taki że wyświetla taki błąd
Cytat
Fatal error: Call to a member function prepare() on a non-object in /home/u817225384/public_html/demo/skrypty/functions.php on line 18
Błąd na moje myślenie mówi że prepare() nie zostało użyte na obiekcie
Ale szukałem szukałem i szukałem i wszystko na moje oko jest tak jak powinno być.
To plik config.php (tutaj tworzę obiekt)
<?php $db_server = ''; // Serwer bazy danych $db_user = ''; // Nazwa użytkownika $db_pass = ''; // Hasło $db_name = ''; // Nazwa bazy danych $moja_strona = ''; //Adres naszej strony www. Prawidłowo ( <a href="http://dynamicwebs.zz.mu/" target="_blank">http://dynamicwebs.zz.mu/</a> ) // POŁĄCZ Z BAZĄ DANYCH try { $pdo = new PDO('mysql:host='.$db_server.';dbname='.$db_name.'', $db_user, $db_pass); } catch(PDOException $e){ } ?>
Demo: http://dynamicwebs.zz.mu/demo/skrypty/login.php
hasło: aaa
email: aaa@gmail.com