0

PHPを独学で勉強しています。MedooでSlim フレームワークを使用してログイン ページを作成していますが、ログイン ページを実行してもエラーは発生しません。しかし、「」関数を呼び出すと、次のようにエラーが発生します。call_query

未定義の変数: C:\xampp\htdocs\class\blog\pages\login.php のデータベース 8 行目

致命的なエラー: 8 行目の C:\xampp\htdocs\class\blog\pages\login.php の非オブジェクトに対するメンバー関数 select() の呼び出し

コードでは、オブジェクトを作成してからメソッドを$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>';
?>
4

1 に答える 1

0

グローバル変数としての作成$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>';
?>
于 2015-02-24T12:07:32.210 に答える