Я учу PHP самостоятельно. я использую Тонкие рамки с Medoo и создание страницы входа в систему, и при выполнении страницы входа в систему нет ошибки. но при звонкеcall_query
«ошибка функции происходит, говоря:
Неопределенная переменная: база данных в
C: \ xampp \ htdocs \ class \ blog \ pages \ login.php в строке 8
а также
Неустранимая ошибка: вызов функции-члена select () для необъекта в
C: \ xampp \ htdocs \ class \ blog \ pages \ login.php в строке 8
В коде я создал объект $database
затем с помощью select
метод на это.
<?php
require_once 'medoo.php';
$database = new medoo();
session_start();
$login_error = $br = null;
function call_query(){
$data = $database->select('user', 'user_name', [
'user_name'=>$_POST['u_name'],
'password'=>$_POST['pass']
]);
if (count($data) == 1) {
header("location : localhost/class/blog");
}else{
$login_error = "Wrong Username or Password";
$br = "<br><br>";
}
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['submit'] == 'submit'){
if (isset($_POST['u_name']) && isset($_POST['pass']) && !empty($_POST['u_name']) && !empty($_POST['pass'])) {
if (isset($_SESSION['username']) && isset($_SESSION['password'])) {
if ($_SESSION['username'] == $_POST['u_name'] && $_SESSION['password'] == $_POST['pass']) {
header("location : localhost/class/blog");
}else{
call_query();
}
}else{
call_query();
}
}else{
$login_error = "Enter both Username and Password to login.";
$br = "<br><br>";
}
}
echo '<form action = "pages/login.php" method = "post">
<label>Username : </label><input type ="text" name ="u_name"><br><br>
<label>Password : </label><input type = "password" name = "pass"><br><br>
'.$login_error.$br.'
<input type ="submit" name = "submit" value = "submit">
</form>';
?>
Mпринимая к $database
как глобальная переменная работает.
Спасибо @lmarcelocc, @jeroen, @Md. Сахадат Хоссейн.
Теперь код:
<?php
require_once 'medoo.php';
$database = new medoo();
session_start();
$login_error = $br = null;
function call_query($username, $password){
global $database, $login_error, $br;
$data = $database->select('user', 'user_name', ['user_name'=>$username, 'password' => $password]);
if (!empty($data)) {
print_r($data);
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
header("location: localhost/class/blog");
}
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['submit'] == 'submit'){
if (isset($_POST['u_name']) && isset($_POST['pass']) && !empty($_POST['u_name']) && !empty($_POST['pass'])) {
if (isset($_SESSION['username']) && isset($_SESSION['password'])) {
if ($_SESSION['username'] == $_POST['u_name'] && $_SESSION['password'] == $_POST['pass']) {
$_SESSION['username'] = $_POST['u_name'];
$_SESSION['password'] = $_POST['pass'];
header("location: /");
echo "logged by session";
}else{
call_query($_POST['u_name'], $_POST['pass']);
$login_error = "Invalid Username or Password.";
$br = "<br><br>";
}
}else{
call_query($_POST['u_name'], $_POST['pass']);
$login_error = "Invalied Username or Password.";
$br = "<br><br>";
}
}else{
$login_error = "Enter both Username and Password to login.";
$br = "<br><br>";
}
}
echo '<form action = "pages/login.php" method = "post">
<label>Username : </label><input type ="text" name ="u_name"><br><br>
<label>Password : </label><input type = "password" name = "pass"><br><br>
'.$login_error.$br.'
<input type ="submit" name = "submit" value = "submit">
</form>';
?>
Других решений пока нет …