Logowanie, dodawanie nicku usera do osobnej tabeli

0

Witam. Chciałem napiać kod, który podczas logowania użytkownika dodawał do tabeli 'Kiedy' jego nick. Służy do tego funkcja dodajlogin(). Problem w tym, że po dodaniu jej wywołania do miejsca w programie głównym, funkcja nie działa. Może daję ją w złe miejsce? Na czym polega problem?

$db = new PDO('mysql:host=baza;dbname=nazwa', 'user', 'pass', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
         
if(isset($_POST['wyslano'])){ //Sprawdzamy, czy submit został wciśnięty
    //Usuwamy białe znaki z przesłanych danych
    $nick = trim($_POST['nick']);
    $haslo = trim($_POST['haslo']);
	$data = date('Y-m-d');
 
    $stmt = $db->prepare("SELECT * FROM uzytkownicy WHERE nick=:nick AND haslo=:haslo");
    $stmt->bindValue(":nick", $nick, PDO::PARAM_STR);
    $stmt->bindValue(":haslo", $haslo, PDO::PARAM_STR);
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    if($stmt->rowCount()!=0){
		
        echo "Zalogowałeś się!";
        session_start();
        $_SESSION['zalogowany'] = true;
        $_SESSION['nick'] = $row['nick'];
		header('Location:pologowaniu.php');
		dodajlogin($nick);
    }
    else{
        echo '<div style="color:red">Login i/lub hasło są nieprawidłowe</div>';
        form();
    }
}
else form();
 
 function dodajlogin($nick)
 {
	 session_start();

	 $db = new PDO('mysql:host=baza;dbname=nazwa', 'user', 'pass', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
	 $stmt=$db->prepare('INSERT INTO Kiedy (nick) VALUES (:nick)');
	 $stmt=bindParam(':nick',$_SESSION['nick'],PDO::PARAM_STR);
	 $stmt->execute();
 } 
0
  1. Błąd masz tu: $stmt=bindParam(':nick',$_SESSION['nick'],PDO::PARAM_STR);
  2. Zastanów się, gdzie wykorzystujesz parametr $nick w tej swojej magicznej funkcji :)
    Możliwe ulepszenia
  3. Nazwij swoją tabelę logowania, a kolumny w niej niech będą: id (auto_increment int), data (datetime) oraz id_uzytkownika (int).
  4. Nie twórz odrębnego połączenia wewnątrz metody dodajlogin, tylko przekazuj już istniejące poprzez parametr.
  5. Nazwa funkcji powinna w miarę możliwości jak najdokładniej opisywać to, co ona robi. dodajlogin nie mówi absolutnie nic - dodaj login gdzie? Gdyby nazywała się na przykład logujLogowanie (trochę takie masło maślane, ale po polsku tak to wygląda), to byłoby już w-miarę wiadomo, czego oczekiwać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1