PHP と SQL は初めてですが、Web アプリケーション用のログイン スクリプトを作成しようとしています。どういうわけか私は立ち往生しています。ユーザー名またはパスワード フィールドが空の場合はアラートが表示されますが、両方が正しいか正しくない場合もアラートは表示されません。
ブラウザー (Chrome) で Web サイトを開いてページを調べると、次のようになります。
「POST ../App/auth.php 500 (内部サーバー エラー)」
サーバーから error.log ファイルを開くと、次のようになります。
「PHP 致命的なエラー: 24 行目の ../App/class.manageUsers.php の非オブジェクトに対するメンバー関数 query() の呼び出し、リファラー: ../App/login.php」
class.manageUsers.php の 24 行目は次のとおりです。
$query = $this->link->query("SELECT * FROM users WHERE username = '$username' AND
password = '$password' LIMIT 1");
class.manageUsers.php:
<?php
include_once('class.database.php');
class ManageUsers{
protected $link;
function __construct(){
$db_conn = new ManageDatabase;
$this->link = $db_conn->connect();
return $this->link;
}
function addUsers($username,$firstname,$lastname,$email,$password,$user_level){
$query = $this->link->prepare("INSERT INTO users (username,firstname,lastname,email,password,user_level)
VALUES (?,?,?,?,?,?)
");
$values = array($username,$firstname,$lastname,$email,$password,$user_level);
$query->execute($values);
$rowCount = $query->rowCount();
return $rowCount;
}
function loginUsers($username,$password){
$query = $this->link->query("SELECT * FROM users WHERE username = '$username' AND password = '$password' LIMIT 1");
$rowCount = $query->rowCount();
return $rowCount;
}
function listUsers($user_id = null){
if(isset($user_id))
{
$query = $this->link->query("SELECT * FROM users WHERE id = '$user_id' LIMIT 1");
}
else
{
$query = $this->link->query("SELECT * FROM users ORDER BY id DESC");
}
$rowCount = $query->rowCount();
if($rowCount >= 1)
{
$result = $query->fetchAll();
}
else
{
$result = 0;
}
return $result;
}
function editUsers($user_id,$param){
foreach ($param as $key => $value)
{
$query = $this->link->query("UPDATE users SET $key = '$value' WHERE id = '$user_id' LIMIT 1");
}
$rowCount = $query->rowCount();
return $rowCount;
}
function deleteUsers($user_id){
$query = $this->link->query("DELETE FROM users WHERE id = '$user_id' LIMIT 1");
$rowCount = $query->rowCount();
return $rowCount;
}
}
?>
class.database.php:
<?php
class ManageDatabase{
protected $db_conn;
protected $db_host = 'localhost';
protected $db_name = 'jqueryMobile';
protected $db_user = 'root';
protected $db_pass = '';
function connect(){
try{
$this->db_conn = new PDO("mySQL:host=$this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass);
return $this->db_conn;
}
catch(PDOexception $e){
return $e->getMessage();
}
}
}
?>
誰かが間違っていると思われる場所を見つけてくれることを願っています。ありがとう。