2015-02-24 174 views
0

我正在學習PHP自己。我正在使用Slim框架Medoo並創建登錄頁面,並且在執行登錄頁面時沒有錯誤。但是當調用「call_query」功能錯誤發生話說:爲什麼「未定義變量」錯誤?

Undefined variable: database in C:\xampp\htdocs\class\blog\pages\login.php on line 8

Fatal error: Call to a member function select() on a non-object in C:\xampp\htdocs\class\blog\pages\login.php on line 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>'; 
?> 
+0

提到它的哪一行於8 – 2015-02-24 10:12:08

+1

Pehaps也許$數據庫內不可call_query()函數。 檢查@ jeroen鏈接。 – lmarcelocc 2015-02-24 10:13:36

+2

http://php.net/manual/en/language.variables.scope.php – jeroen 2015-02-24 10:14:45

回答

0

中號亞慶$database作爲全局變量的工作。 謝謝 @lmarcelocc,@ jeroen,@Md。 Sahadat Hossain。

現在的代碼是:

<?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>'; 
?>