以下のコードを使用して、フォーム内の電子メールとパスワードでログインしようとしていますが、取得しています:Fatal error: Using $this when not in object context in
形
<form method="post">
<?php
if(isset($_GET['error']))
{
?>
<div>
<button data-dismiss='alert'>×</button>
<strong>Wrong Details!</strong>
</div>
<?php
}
?>
<input type="email" name="txtemail" />
<input type="password" name="txtpass" />
<button type="submit" name="btn-login">Sign in</button>
</form>
設定
if(isset($_POST['btn-login']))
{
try
{
$stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userEmail=:email_id");
$stmt->execute(array(":email_id" => $email));
$userRow = $stmt->fetch(PDO::FETCH_ASSOC);
$password = password_hash('upass', PASSWORD_DEFAULT);
if ( $stmt->rowCount() == 1 )
{
if ( $userRow[ 'userStatus' ] == "Y" )
{
if( password_verify( $_POST[ "upass" ] , $userRow[ 'userPass' ] ) )
{
if( password_needs_rehash( 'PASSWORD', PASSWORD_DEFAULT ) )
{
$new_pass = password_hash('upass', PASSWORD_DEFAULT);
// Update database
}
$_SESSION[ 'userSession' ] = $userRow[ 'userID' ];
return true;
}
else
{
header( "Location: index.php?error" );
exit;
}
}
else
{
header( "Location: index.php?inactive" );
exit;
}
}
else
{
header( "Location: index.php?error" );
exit;
}
}
catch ( PDOException $ex )
{
echo $ex->getMessage();
}
}
だから私は行から削除$this->
しました:
$stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userEmail=:email_id");
& として置き換え
$stmt = conn->prepare("SELECT * FROM tbl_users WHERE userEmail=:email_id");
、
今私は得ていますParse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR)
だから私は次のように試しました:$conn->prepare
今私は直面しています:Fatal error: Call to a member function prepare() on a non-object in
だから私はそれを修正するために古いコードを置き換える必要があるようです.もしそうなら、このエラーを解決する方法: Fatal error: Using $this when not in object context in
データベース接続ファイルで質問を更新しました:
<?php
global $db;
$db = isset($_POST['db']) ? $_POST['db'] : '';
class Database
{
private $host = "localhost";
private $db_name = "designer5";
private $username = "root";
private $password = "645644";
public $conn;
public function dbConnection()
{
global $db;
$db = isset($_POST['db']) ? $_POST['db'] : '';
$this->conn = null;
try
{
$this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $exception)
{
echo "Connection error: " . $exception->getMessage();
}
return $this->conn;
}
}
?>
注:インターネットで多くのリンクを調査しましたが、コードの解決策がどこにも見つかりませんでした:-(