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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

1回答

2793閲覧

PHPでログインした状態。セッションに関して。

nenenenone

総合スコア17

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2015/01/14 01:38

詳細を下記にまとめました。


■コード

<?php ini_set('display_errors', 'On'); // PHPを読み込む require_once('config.php'); require_once('functions.php'); // ログインしていなかったらログイン画面へ飛ばす処理 session_start(); if (empty($_SESSION['me'])) { header('Location: '.SITE_URL.'login.php'); exit; } $me = $_SESSION['me']; $dbh = connectDb(); $sql = "select * from users where id = :id limit 1"; $stmt = $dbh->prepare($sql); $stmt->execute(array(":id" => (int)$_GET['id'])); $user = $stmt->fetch(); if (!$user) { echo "no such user!"; exit; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ユーザープロフィール</title> </head> <body> <p> Logged in as <?php echo h($me['name']); ?> (<?php echo h($me['email']); ?>) <a href="logout.php">[logout]</a> </p>
<h1>ユーザープロフィール</h1> <p>お名前:<?php echo h($user['name']); ?></p> <p>メールアドレス:<?php echo h($user['email']); ?></p> <p><a href="index.php">一覧へ</a></p>
</body> </html>

■テーブル

usersテーブル
id(主キー)
name
password
email

postsテーブル
id(記事番号)
users_id(usersテーブルのidを入力したい)
title
body


■気になる事

・users_id(usersテーブルのidを入力したい)
セッションでusersテーブルのidを保持して、投稿する時に、posts.php(仮)でテーブルへ保存すればいいのでしょうか。

やりたい事としては、ログインしているユーザーだけ記事を投稿できるようなフォームを作成し、投稿ボタンをポチって押すと、ユーザーのIDがpostsテーブルのusers_idへ保存されるようなイメージです。

どのように書くのがいいのでしょうか。

まったくの初心者なので、勉強しながらやっています。

ご返信宜しくお願いします。

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

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

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

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

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

guest

回答1

0

考え方はあっていると思います。
ログイン認証をした時に、ログインに成功すれば $_SESSION にユーザーIDをセットします。

if (!$user) {
echo "no such user!";
exit;
} else {
$_SESSION['user_id'] = $user['id'];
}

投稿ボタンをポチッとした後は posts.php側で $_SESSION 変数を参照すれば
ユーザーIDは取得できますので、投稿データをDBに保存すればOKです。

posts.php

session_start();

$sql = "INSERT INTO users (id, users_id, title, body) VALUES ('',':user_id','タイトル','本文')";
$stmt = $dbh->prepare($sql);
$stmt->execute(array(":user_id" => (int)$_SESSION['user_id']));
:

みたいな感じでしょうか。

投稿2015/01/17 14:59

silverleo

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問