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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHP ボタンが押されたら処理を...
-
サーバへのアップロードが出来...
-
<input type="hidden" >で配列...
-
PHPで、ボタンを押すと同じペー...
-
チェックボックスを使った複数...
-
PHPで掲示板を作りたいです。
-
フォームへの前回入力値をクリ...
-
連想配列の操作がうまくいかない
-
PHPのお問い合わせフォームが動...
-
PHPを勉強中の専門学生です。 ...
-
php mysql でチェックボックス...
-
降順ソートができません。
-
明細行の複数ボタンの処理に関して
-
検索時の選択内容を保持する方法
-
PHPで画像の渡しが上手く行きま...
-
laravelを利用してコントロール...
-
PHPからHTMLへの変数の受け...
-
foreachがうまく動かない
-
送信ボタンでカウントアップ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHP ボタンが押されたら処理を...
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
フォームへの前回入力値をクリ...
-
フォームでのリセットを使う方法
-
PHPで画像の渡しが上手く行きま...
-
画面が更新されてもチェックボ...
-
フォームボタンを押すたびに数...
-
ラジオボタンをsessionで使いたい
-
テキストボックスに初期値を入れる
-
syntax error, unexpected '}' ...
-
【HTML(PHP?)】複数のフォーム...
-
チェックボックスの必須項目指定
-
HTMLのリンクをクリックするこ...
-
DBの値をチェックボックスに反...
-
複数チェックボックスの入力制...
-
チェックボックスのvalueに変数...
-
input nameで日本語を使うと
-
POSTデータのNAME属性をVALUEに...
おすすめ情報