[解決済み] クラス...のオブジェクトを文字列に変換できませんでした。
2022-02-16 18:22:01
質問
初めてクラスを作ったのですが、オブジェクトを文字列に戻すのに苦労しています。
class Cryption
{
var $data;
var $salt;
function __construct($data, $salt)
{
$this->data = $data;
$this->salt = $salt;
}
function sha512()
{
$sodium = 'Na';
return hash_hmac("sha512", $this->data . $this->salt, $sodium);
}
function encrypt()
{
$salt = substr(sha512(($this->key), 'brownies'), 0, 30);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $this->data, MCRYPT_MODE_CBC, md5($salt)));
}
私が使うとき
$password = new Cryption(mysql_real_escape_string(trim($_POST['password'])), 'pepper');
$password->sha512();
PHP Catchable fatal error.と表示されます。 Cryption クラスのオブジェクトを文字列に変換できませんでした。
どうすれば文字列に戻せるのかよくわかりません。 誰か助けてください。
ありがとうございました。
編集する
<?php
require("config.php");
include("includes/cryption/cryption.php");
$username = mysql_real_escape_string(trim($_POST['username']));
$password = new Cryption(mysql_real_escape_string(trim($_POST['password'])), 'pepper'); //use a different salt next time such as a special salt for each user
$password->sha512();
$result = mysql_query("SELECT * FROM `administrators` WHERE username='$username' and password='$password'");
$row = mysql_fetch_row($result);
$count = mysql_num_rows($result);
if ($count == 1) {
if (isset($_POST['remember'])) {
session_start();
$_SESSION['user'] = array(
'id' => $row[0],
'username' => $row[1],
'password' => $row[2]
);
$userid = new Cryption($_SESSION['user']['id'], 'kkfishing');
$session = new Cryption($_SESSION['user']['username'], 'kkfishing');
$validated = new Cryption($_SESSION['user']['password'], 'kkfishing');
setcookie("uniqueid", $userid->encrypt(), time() + 60 * 60 * 24 * 100, "/"); //100 days
setcookie("kksessionid", $session->encrypt(), time() + 60 * 60 * 24 * 100, "/");
setcookie("kkuserid", $validated->encrypt(), time() + 60 * 60 * 24 * 100, "/");//disguised cookie name
}
session_start();
$_SESSION['authenticated'] = $row[0];
echo '1'; //true
exit;
}
else
{
echo '0'; //false
exit;
}
?>
解決方法は?
この行を見てください。
$password->sha512();
$result = mysql_query("SELECT * FROM `administrators` WHERE username='$username' and password='$password'");
$password
はオブジェクトです。であるべきです。
$pw = $password->sha512();
$result = mysql_query("SELECT * FROM `administrators` WHERE username='$username' and password='$pw'");
関連
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] PHPランダム文字列ジェネレータ
-
[解決済み] PHP オブジェクトを連想配列に変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて