آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در پروژه notes - بخش اول (حل شد)

هادی بی غم  11 سال پیش  11 سال پیش
0 0

سلام به استاد و دوستان گرامی

من به یه مشکلی خوردم که وقتی می خوام متد first از کلاس Db فراخوانی کنم برنامه intellj میگه این متد در Db وجود نداره در صورتی که وجود داره ، در زمان اجرا هم همین خطا رو میده اگه لطف کنید بگید مشکل از کجای کار هست ممنون میشم .

متن خطا :    Fatal error: Call to a member function query() on a non-object in D:\dev\notes\login-check.php on line 11

 

login.php

 <html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="base.css">
</head>
<body>
<div>
<div class="tac">

<img src="notes.png" ><br><br>
<form action="login-check.php" method="post">

<input type="text" placeholder="Email" name="email"><br><br>
<input type="password" placeholder="Password" name="password"><br><br>
<button type="submit" class="btn-blue" >Login</button><br><br>
<span class="link-gray">Create New Account</span>
</form>
</div>
</div>

</body>
</html>

 

main.php

 <?
require_once('common.php');
require_once('config.php');
require_once('db.php');
?>

login-check.php

 <?
require_once('main.php');

$email=$_POST['email'];
$password=$_POST['password'];

$db=Db::getInstance();

$email="lolipop@gmail.com";
$password="123456";
$record=$db->first("SELECT * FROM x_user WHERE email='$email'");
if ($record==null) {
header("Location: login-fail.php");
}
if($password==$record['password']){
header("Location: login-success.php");
}else{
header("Location: login-fail.php");
}
?>

db.php


 
class Db{
private $connection;
private static $db;


public static function getInstance($option = null){
if ( self::$db == null){
self::$db == new Db($option);
}
return self::$db;
}

public function __construct($option=null){
if ($option!=null){
$host=$option['host'];
$user=$option['user'];
$pass=$option['pass'];
$name=$option['name'];
}else{
global $config;
$host=$config['db']['host'];
$user=$config['db']['user'];
$pass=$config['db']['pass'];
$name=$config['db']['name'];
}
$this->connection=new mysqli($host,$user,$pass,$name);
if($this->connection->connect_error){
echo "connection error :". $this->connection->connect_error;
exit;
}
$this->connection->query("SET NAMES 'utf8'");
}

public function first($sql){
$records=$this->query($sql);
if($records==null){
return null;
}
return $records[0];
}
public function query($sql){
$result= $this->connection->query($sql);
$records=array();

if($result->num_rows==0){
return null;
}
while($row=$result->fetch_assoc()){
$records[]=$row;
}
return $records;
}
public function connection(){
return $this->connection;
}
public function close(){
$this->connection->close();
}
}

+1 0
سلام من ک هرچی تحلیل کردم بنظر جاییش اشکال انگار نداره اما اون قسمتی که ایمیل رو با پست میگیرید بعد یه ایمیل ست میکنید و همونو میفرستید به کوئری انگار مشکوکه نه؟؟؟ من کل کد شمارو ندارم اون قسمت خود لاگین رو هم میتونید برام بگذارید؟ شاید name انتخاب نکردید ... فایل لاگین رو هم ممکنه بگذارید؟ (11 سال پیش)
+1 0
من با کد خودم که درست کار میکنه چک کردم دقیقا مثل همینه مشکل باید فکر کنم از ارسالی شما باشه ؟؟؟ صفحه لاگین روهم اگر بگذارید فکر کنم خیلی چیزها روشن بشه (11 سال پیش)
+1 0
جسارتا دیتابیس رو ساختید!؟ (11 سال پیش)
0 0
سلام محمد جان آره دیتابیس ساختم الا فایل لاگین هم بهش اضافه می کنم ، به نظر خودم فراخوانی متد first ایراد داره اما نمبدونم چجوری فراخوانی کنم که جواب بده (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
reza piry ghadim  11 سال پیش
+2 0

در قسمت  متد getInstans یه اشتباه جزعی داشتید.

publicstaticfunctiongetInstance($option =null){
if(self::$db ==null){
self::$db ==newDb($option);// اینجا دو تا مساوی قرار داید
}
returnself::$db;
}

صحیحش هم که دیگه معلومه:

publicstaticfunctiongetInstance($option =null){
if(self::$db ==null){
self::$db =newDb($option);
}
returnself::$db;
}

ولی فک کنم یک ساعتی کدهاتون رو بالا و پایین کردم .... الان حفظم دیگه این کد ها رو :)

0 0
فدات کارت بیسته مرسی از محبتت درست شد (11 سال پیش)
+1 0
ههههه خییییییلی جالب بود من دقییییییقا اینجا رو کلی چک کردم اصصلا متوجه دوتا مساوی نشدم! خیلی عجیبه! مگه میشه؟ مگه داریم؟ ;) (11 سال پیش)
+1 0
خواهش داداش هادی. بله اقا محمد داریم..... (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .