No.2
- 回答日時:
>例えばコードはどのように書けばいいのでしょうか
ちょっと丸投げすぎなので、例示しても理解できるか怪しいですが・・・
(1)準備
mysqlにデータベースtestdbをつくり、
ユーザーテーブルuserテーブルと掲示板keijibanテーブルを作っておきます
CREATE DATABASE `testdb`;
CREATE TABLE `testdb`.`user`(
`uid` int not null primary key
,`user` varchar(100) unique key
,`password` varchar(100)
,`nickname` varchar(100) unique key
);
CREATE TABLE `testdb`.`keijiban`(
`mid` int not null auto_increment primary key
,`uid` int not null
,`title` varchar(100)
,`message` text
,`created` datetime
);
(2)サンプルデータ
ユーザーテーブルにhogeとfugaの2名を追加
掲示板に5メッセージ追加しておきます
INSERT INTO `testdb`.`user` VALUES
(1,'hoge','hogehoge','hoge taro')
,(2,'fuga','fugafuga','fuga jiro');
INSERT INTO `testdb`.`keijiban`(`uid`,`title`,`message`,`created`) VALUES
(1,'aaa','a',now())
,(1,'bbb','b',now())
,(2,'ccc','c',now())
,(1,'ddd','d',now())
,(3,'eee','e',now());
(3)phpソース
エラー回避や、セキュリティ対策をごっそり削ってあるので公開するときには
かなり補強する必要がありますが、とりあえず以下のソースで動きます
<?php
$user = '・・・・';
$password = '・・・・';//dbにアクセスできるユーザーとパスワードを指定
$dsn = 'mysql:host=localhost; dbname=testdb';
$pdo = new PDO($dsn, $user,$password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
session_start();
if($_POST["x"]==="logout"){
$_SESSION["uid"]="";
$_SESSION["nickname"]="";
}
$uid=$_SESSION["uid"];
$nickname=isset($_SESSION["nickname"])?$_SESSION["nickname"]:"";
if($_POST["x"]==="login"){
$data=array($_POST["user"],$_POST["password"]);
$query="SELECT `uid`,`nickname` FROM `user` WHERE `user`=? and `password`=?";
$stmt = $pdo->prepare( $query);
$stmt->execute($data);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$uid= isset($row["uid"])?$row["uid"]:"";
$_SESSION["uid"]=$uid;
$nickname=isset($row["nickname"])?$row["nickname"]:"";
$_SESSION["nickname"]=$nickname;
}
?>
<form method="post">
user:<input type="text" name="user"><br>
password:<input type="text" name="password"><br>
<input type="submit" name="x" value="login">
<input type="submit" name="x" value="logout"><br>
<?PHP
if($nickname!==""){
print "your name is ".htmlspecialchars($nickname);
}else{
print "not login";
}
?>
</form>
<hr>
<form method="post">
title:<input type="text" name="title"><br>
<textarea name="message"></textarea><br>
<input type="submit" name="x" value="send"><br>
</form>
<?PHP
if($_POST["x"]==="send" and $_POST["title"]!==""){
$data=array($_POST["title"],$_POST["message"],$uid);
$query="INSERT INTO `keijiban` SET `title`=?,`message`=?,`uid`=?,created=now()";
$stmt = $pdo->prepare( $query);
$stmt->execute($data);
}
if($_GET["x"]==="del" and $_GET["mid"]!==""){
$data=array($_GET["mid"],$uid);
$query="DELETE FROM `keijiban` WHERE mid=? and uid=?";
$stmt = $pdo->prepare( $query);
$stmt->execute($data);
}
$query="select mid,uid,created,title from keijiban order by mid desc";
$stmt = $pdo->query($query);
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
print $row["created"].":".$row["title"];
if($row["uid"]==$uid){
print '<input type="button" value="del" onclick="location.href=\'?x=del&mid='.$row["mid"].'\'">';
}
print "<br>";
}
?>
この回答へのお礼
お礼日時:2015/11/02 14:36
ありがとうございます。とても助かります。実際にやってみますが、また疑問なところがあればお聞きしたいので、お手数おかけ致しますがよろしくお願い申し上げます
No.1
- 回答日時:
1会話につき1レコードをつくり、レコード上に削除用パスワードを保存しておけばよいでしょう
ただし削除用パスワードを会話のたびに設定するのはかなりわずらわしいですね
あまり現実的ではないかもしれません。
むしろ普通レコードには書き込んだユーザーのユーザーIDを保存するでしょうから、
ログインユーザーのIDと合致したとき削除可能だとみなせばよいでしょう。
通常はユーザーIDはセッションで保持しているので参照は簡単です
またもしログインしないで書き込みをする仕組みを想定しているのであれば
匿名だとすぐに便所の落書き状態になるのでお勧めしません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- X(旧Twitter) 【至急】twitterを乗っ取られたのでしょうか? 1 2022/09/08 02:34
- Visual Basic(VBA) excel vba でユーザーフォーム入力ができない 2 2022/12/12 14:42
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- その他(セキュリティ) パスワードの管理について googleのパスワードマネージャーはダメ? 2 2023/01/27 23:09
- PHP 「基礎からのMySQL 第3版 Kindle版」を数年前購入して全部やりました。 1 2022/09/15 05:32
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
検索時の選択内容を保持する方法
-
PHP ボタンが押されたら処理を...
-
phpで分からないエラーが出てし...
-
<input type="hidden" >で配列...
-
PHPを勉強中の専門学生です。 ...
-
フォームボタンを押すたびに数...
-
PHPでチェックボックスの内容を...
-
HTMLで前の画面に戻る時、入力...
-
PHPでクリックするたびに変数を...
-
フォームに入力された値を計算...
-
PHPの関数実行
-
php mysql でチェックボックス...
-
チェックボックスの値に応じてP...
-
PHPで画像の渡しが上手く行きま...
-
フォームでのリセットを使う方法
-
PHPで、ボタンを押すと同じペー...
-
チェックボックスから複数のval...
-
エンターでsubmitさせたい
-
PHPによるCSVファイルの指定列...
-
PHPで受け取ったパラメータを別...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
HTMLで前の画面に戻る時、入力...
-
DBの値をチェックボックスに反...
-
フォームへの前回入力値をクリ...
-
PHPでCookieを使った訪問回数に...
-
PHPで画像の渡しが上手く行きま...
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
syntax error, unexpected '}' ...
-
画面が更新されてもチェックボ...
-
チェックボックスのvalueを連結...
-
チェックボックスの必須項目指定
-
PHPでユーザー情報を入力して簡...
-
PHPの関数実行
-
POSTデータのNAME属性をVALUEに...
-
パラメーターを隠す
-
phpで分からないエラーが出てし...
-
PHPで、ボタンを押すと同じペー...
-
テキストボックスに初期値を入れる
おすすめ情報