質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

1回答

2790閲覧

最終ログイン時間を表示したい

Roo

総合スコア55

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

1クリップ

投稿2018/09/03 08:31

編集2022/01/12 10:55

ログイン日時をテーブルのカラムに保存し
ログイン時に(最終ログイン日時)としてMy pageに表示させたいです

<?php session_start(); // ログイン状態チェック if (!isset($_SESSION["NAME"])) { header("Location: 403.php"); exit; } // ログイン日時設定 ?> <!doctype html> <html> <head> <meta charset="UTF-8"> <title>メイン</title> </head> <body> <h1>My page</h1> <ul> <li><a href="error.php">ログアウト</a></li> </ul> <p>※当サイトは3分間で強制ログアウトされます。</p>
</body>
</html>

//ログイン日時設定の場所にどう記載すれば宜しいでしょうか?
宜しくお願いいたします。

保存先のDB CREATE,INSERT
CREATE TABLE userdata(
id int NOT NULL PRIMARY KEY,
name varchar NOTNULL
password varchar NOTNULL
sdate  datetime   NOTNULL

INSERT INTO userdata (
name,
passwrod,
adate
)
VALUES
( 'ma0808'
'Ma0808'
'0:%Y-%m-%d %H:%M:%S'
)

下記のコードからPOSTされたものが正しい場合
ログイン日時をDBに保存、取得したいです。

f (isset($_POST["login"])) {
// 1. ユーザIDの入力チェック
if (empty($_POST["userid"])) { //

$errorMessage = '※UserIDまたはPasswordが間違っています。'; } else if (empty($_POST["password"])) { $errorMessage = '※UserIDまたはPasswordが間違っています。'; } if (!empty($_POST["userid"]) && !empty($_POST["password"])) { $userid = $_POST["userid"]; $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); try { $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); $stmt = $pdo->prepare('SELECT * FROM userdata WHERE name = ?'); $stmt->execute(array($userid)); $password = $_POST["password"]; if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { // if (password_verify($password, $row['password'])) { if ($userid == $row['name'] || $password == $row['password']) { session_regenerate_id(true); $id = $row['id']; $sql = "SELECT * FROM userdata WHERE id = $id"; $stmt = $pdo->query($sql); foreach ($stmt as $row) { $row['name']; } $_SESSION["NAME"] = $row['name']; header("location: my.php"); exit(); } else { $errorMessage = '※UserIDまたはPasswordが間違っています。'; } catch (PDOException $e) { $errorMessage = 'データベースエラー'; //$errorMessage = $sql; // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示) // echo $e->getMessage(); } }

}
?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/09/03 08:47

保存先テーブルの構造を、CREATE TABLE文とINSERT INTO文にて再現できるように示してください。
papinianus

2018/09/03 08:55

どういうDBにどうアクセスするのか全く分からないんですが、ゼロから作ってくれということでしょうか?
Roo

2018/09/03 09:09

少々お待ちください。すぐにリバイスいたします
guest

回答1

0

一部だけですが、書き込みます。
Rooさんの状況や制限が分からないのであくまでも提案なのですが、以下のSQLのようにINSERT文内で直接現在時刻を取得し、保存する方法などはいかがでしょうか?

SQL

1INSERT INTO userdata ( 2name,passwrod,adate 3) 4VALUES( 5'ma0808','Ma0808',Now() 6)

※MySQL->Now()
※PostgreSQL->statement_timestamp() ←これは問合せ(SQL)がサーバに届いた時の時刻を返却する

IDやパスワードが正しいかどうかの判定はPHPのロジック部分に任せて、ログイン日時のようなこちら側でセットできるものはデータ挿入時にSQL内部で自動取得させれば、判定式の中で余分な変数をもたなくても済むようになります。
もちろん、サーバーの状態やネットワークによって遅延は発生し得るため、厳密にログイン操作時(ログインボタン押下時)の時間が必要なのであれば、この手は使えませんが。

それと、本当に何が問題でどう解決したくて何で悩んでいるかを自分で理解できていますか?
ずらーっとコードを並べてこれで頼む!では回答者は何が問題となっているのか、どう解決したいのかが分からず、回答に困ってしまいます。
ちなみに私はこの質問がPHPでの話なのか、SQLでの話なのか、他に代替案を書いてほしいのかがよく分かりません。
まずは質問内容を整理して、必要最低限のサンプルコードを書いて質問を上げましょう。
理解しやすい質問程、理解しやすい回答が返ってくるはずです。

投稿2018/09/03 11:34

mikan_s4n

総合スコア377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Roo

2018/09/05 01:24

返信遅れてしまい申し訳ありません。 ご回答ありがとうございました。 試してみます。 後半の文章の方はしっかりと理解したいと考えております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問