Webprogramozás arr PHP info Kérlek segítsetek! PHP!
(#17) tothzsolt 2018.04.10. 17:08

tothzsolt
tothzsolt
Kezdő

Sziasztok. Most tanulom a programozást, és elakadtam 1 bejelentkezésnél php-ben, elkellene 1 kis segitség. Nem tudom hogy az alábbi kódrészlet miért nem hajtja végre a csatlakozást az adatbázissal. Előre is köszönöm a segitséget. Bemásolom az állományok tartalmát:

index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="Stil.css">
<link rel="stylesheet" type="text/css" href="stil.css">
</head>
<body>
<?php
 
require_once("classes/logindb.php");
$login = new Login();
 
 
// ... ask if we are logged in here:
if ($login->isUserLoggedIn() == true) {
    require_once("classes/menu.php");
    // the user is logged in. you can do whatever you want here.
    // for demonstration purposes, we simply show the "you are logged in" view.
    include("classes/logged_in.php");
    echo "belepve2";
 
} else {
    // the user is not logged in. you can do whatever you want here.
    // for demonstration purposes, we simply show the "you are not logged in" view.
    include("classes/not_logged_in.php");
}
 
?>
 
 


logindb.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
 
<?php
 
define("DB_HOST", "localhost");
define("DB_NAME", "service");
define("DB_USER", "root");
define("DB_PASS", "");
 
/**
 * Class login
 * handles the user's login and logout process
 */
 
class Login
{
    /**
     * @var object The database connection
     */
    private $db_connection = null;
    /**
     * @var array Collection of error messages
     */
    public $errors = array();
    /**
     * @var array Collection of success / neutral messages
     */
    public $messages = array();
 
    /**
     * the function "__construct()" automatically starts whenever an object of this class is created,
     * you know, when you do "$login = new Login();"
     */
 
    public function __construct()
    {
        // create/read session, absolutely necessary
        session_start();
 
        // check the possible login actions:
        // if user tried to log out (happen when user clicks logout button)
        if (isset($_GET["logout"])) {
            $this->doLogout();
        }
        // login via post data (if user just submitted a login form)
        elseif (isset($_POST["login"])) {
            $this->dologinWithPostData();
 
        }
    }
 
    /**
     * log in with post data
     */
    private function dologinWithPostData()
    {
 
        // check login form contents
        if (empty($_POST['username'])) {
            $this->errors[] = "Username field was empty.";
        } elseif (empty($_POST['password'])) {
            $this->errors[] = "Password field was empty.";
        } elseif (!empty($_POST['username']) && !empty($_POST['password'])) {
 
            // create a database connection, using the constants from config/db.php (which we loaded in index.php)
            $this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
 
            // change character set to utf8 and check it
            if (!$this->db_connection->set_charset("utf8")) {
                $this->errors[] = $this->db_connection->error;
            }
 
            // if no connection errors (= working database connection)
            if (!$this->db_connection->connect_errno) {
 
                // escape the POST stuff
                $username = $this->db_connection->real_escape_string($_POST['username']);
 
                // database query, getting all the info of the selected user (allows login via email address in the
                // username field)
                $sql = "SELECT username, password
                        FROM users
                        WHERE username = '$username '
                        ";
                $result_of_login_check = $this->db_connection->query($sql);
 
                // if this user exists
                if ($result_of_login_check->num_rows == 1) {
 
                    // get result row (as an object)
                    $result_row = $result_of_login_check->fetch_object();
 
                    // using PHP 5.5's password_verify() function to check if the provided password fits
                    // the hash of that user's password
                    if (password_verify($_POST['password'], $result_row->password)) {
 
                        // write user data into PHP SESSION (a file on your server)
                        $_SESSION['username'] = $result_row->username;
                        $_SESSION['user_login_status'] = 1;
 
                    } else {
                        $this->errors[] = "Wrong password. Try again.";
                    }
                } else {
                    $this->errors[] = "This user does not exist.";
                }
            } else {
                $this->errors[] = "Database connection problem.";
            }
        }
    }
 
    /**
     * perform the logout
     */
    public function doLogout()
    {
        // delete the session of the user
        $_SESSION = array();
        session_destroy();
        // return a little feeedback message
        $this->messages[] = "You have been logged out.";
 
    }
 
    /**
     * simply return the current state of the user's login
     * @return boolean user's login status
     */
    public function isUserLoggedIn()
    {
 
        if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1) {
            return true;
        }
        // default return
        return false;
    }
}
    
?>
 


logged_in.php
1
2
3
4
5
6
7
8
9
10
 
<?php 
echo $_SESSION['username'];
?>. 
You are logged in.
Try to close this browser tab and open it again. Still logged in! ;)
 
<!-- because people were asking: "index.php?logout" is just my simplified form of "index.php?logout=true"
<a href="index.php?logout">Logout</a> -->
 


not_logged_in.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
// show potential errors / feedback (from login object)
if (isset($login)) {
    if ($login->errors) {
        foreach ($login->errors as $error) {
            echo $error;
        }
    }
    if ($login->messages) {
        foreach ($login->messages as $message) {
            echo $message;
        }
    }
}
?>