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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1258閲覧

PHPとjavascriptを使って削除フォームを作成していますがわからないところがあります。

tabonon

総合スコア7

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/03/05 14:11

編集2018/03/06 08:43

PHPとjavascriptを使って削除フォームを作成していますがわからないところがあります。
今自分はcsvファイルを用いて記事の削除フォームを作成しています。

ログインしている名前が記事の投稿者と同じ人物なら削除可能、そうでないならエラーのアラートを表示させたいのですが方法がわからず困っています。参考になるサイトやコードはありませんでしょうか?検索の仕方が悪かったのか文字が一致したら処理を行う記述が探しても見つかりません。どなたか参考になるサイトをご存知でしたらご教授お願い致します。

csvファイルの中身は
最高責任者 2018/03/01 今日の出来事
責任者 2018/03/02 今日の出来事
責任者 2018/03/03 今日の出来事
最高責任者 2018/03/04 今日の出来事
責任者 2018/03/03 今日の出来事

のような感じになっており、ログインしている人物が責任者なら責任者のみの記事を消せるようにしたいのです。

回答ありがとうございます。こちらを使用するのはほぼ初めてであるので不慣れなところが目立ってしまい申し訳ございません。
ログイン画面はすでにできております

こちらで似たほうな方法を調べて当てはめてみましたが動きませんでした
何かが足りないのはわかります、ただ何が足りないのかわかりません。

PHP

1if(isset($_POST['checker'])){ 2 if($_SESSION["username"] == '責任者'){ 3 if(strpos($datalist[$i], '最高責任者')){ 4echo '<script type="text/javascript">alert("あなたは最高責任者ではありません。");</script>'; 5 return false; 6 } 7 } 8 9}

何を加えたら最高責任者以外は削除できない設定にできるのでしょうか?

PHP

1以下はPHPのコードです。 2 3<?php 4session_start(); 5 6require_once'../setUserData.php'; 7 8?> 9 10<?php 11require_once'../log_in.php'; 12?> 13 14<?php 15$file = 'data.csv'; 16$newdata = array(); 17$datalist = array(); 18$checks = array(); 19if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST)) { 20 $checks = $_POST['checker']; 21 22// 23$fp = fopen($file, 'r+'); 24 flock($fp, LOCK_EX); 25 $count = 0; 26 while ($data = fgetcsv($fp)) { 27 if (!in_array($count, $checks)) { 28 $newdata[] = $data; 29 } 30 ++$count; 31 } 32// 33ftruncate($fp, 0); 34 fseek($fp, 0); 35 36 foreach ($newdata as $list) { 37 fputcsv($fp, $list); 38 } 39 flock($fp, LOCK_UN); 40 fclose($fp); 41} 42// 43$datalist = show($file); 44 45function show($filedata) 46{ 47 $fp = fopen($filedata, 'r'); 48 $datas = array(); 49 while ($data = fgetcsv($fp)) { 50 list($username, $date, $title) = $data; 51 $list = array( 52'username' => $username, 53'date' => $date, 54'title' => $title, 55); 56//一行データをまとめる配列に追加する 57$datas[] = $list; 58 } 59 fclose($fp); 60 61 return $datas; 62} 63var_dump($datalist); 64?> 65<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 66<html xmlns="http://www.w3.org/1999/xhtml"> 67<head> 68<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 69<title>タイトル</title> 70</head> 71<link rel="stylesheet" type="text/css" href="../css2/style.css" media="screen"> 72<body> 73<style type="text/css"> 74table{ 75border-collapse:collapse; 76} 77table td{ 78border:1px solid #ccc; 79padding:5px; 80} 81 82</style> 83<script type="text/javascript"> 84 85function RunConfirm() { 86 87if ( confirm("実行しますか?") ) { 88return true; 89} 90else { 91return false; 92} 93} 94</script> 95<p>ようこそ!<?php echo htmlspecialchars($_SESSION['username'], ENT_QUOTES); ?>さん!(<a href="../logout.php">ログアウト</a>)</p> 96 97<div class="box_b"> 98<p class="title">タイトル</p> 99<br /> 100<div class="form"> 101 102<form method="post" action="" onSubmit="return RunConfirm()"> 103<table> 104<?php for ($i = 1; $i < count($datalist); ++$i): ?> 105<tr> 106<td><input type="checkbox" name="checker[]" value=<?php echo $i; ?> ></td> 107<td><?php echo $datalist[$i]['username']; ?></td> 108<td><?php echo $datalist[$i]['date']; ?></td> 109<td><?php echo $datalist[$i]['title']; ?></td> 110</tr> 111<?php endfor; ?> 112</table> 113<input type="submit" name="send" value="送信"> 114</form> 115<br /><br /><br /><br /><br /><br /><br /> 116</div> 117</div> 118</body> 119</html>

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

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

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

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

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

m.ts10806

2018/03/06 04:27 編集

ソースコードにインデントが全くないので読みづらく、またコードのミスも見つけづらいです。フォーマット機能があるエディタを利用するか、整形ツール(http://flatsystems.net/php_beautifier.php など)で整形してください。
tabonon

2018/03/06 04:32

大変申し訳ございませんでした。そちらのツールを使わさせていただきインデントを追加させました。ご迷惑をおかけして申し訳ございませんでした
m.ts10806

2018/03/06 04:48

htmlは整形してくれないやつでしたね。失礼しました。
guest

回答3

0

質問に回答しようにも、まずどこまでの機能ができているのですか?

  • ログイン機能はできているのか?
  • ユーザー情報はどうやって管理されているのか?ファイル?データベース?
  • あなたの技術レベルはどの程度なのか?

どの程度の粒度で説明すれば良いのか回答者はわかりません。その点でソースコードを提示することは非常に有益です。コードを見れば技術力がわかるため。

  • PHPの基礎文法は理解できているの?

投稿2018/03/05 14:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tabonon

2018/03/06 04:51

ログイン機能はできています。ユーザー情報はCSVに登録されています。DBやSQLは使えない環境なので 記述レベルは初めてから2か月弱の初心者です。 文法はなんとか基礎レベルは理解できていますが応用が利かず困っています。
guest

0

ベストアンサー

ログインしている名前が記事の投稿者と同じ人物なら削除可能

まず、
・ログインしているかどうかの判定はどういう仕様なのか。
・アクセスしているユーザーの情報とCSVファイルに保存しているユーザーの情報の一致性を何で判定する仕様なのか。
の2点を明瞭化してください。

本人じゃない人が「最高責任者」などのふりをするケースを除外するために、
安易に思いつく方法としてはログイン画面を踏ませて
(その人しか知らないはずの情報として)idとpassを入力させることになるのかなと思います。
その検証をどういう仕様でやるか考えて実装すれば、簡単な話なのかなと思います。

ログイン画面を踏ませてユーザーの検証が済めば、
セッション変数やクッキー変数にユーザー情報を格納するのも手ですし、
画面遷移するたびにユーザー情報をGETやPOSTで受け取る方法もあるでしょう。

投稿2018/03/06 00:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tabonon

2018/03/06 03:18

の判別方法は session[’username’] で判断しております。 ユーザーの情報の一致はsession[’username’]の名前とcsvファイルに載ってある名前が一致していれば削除可能、 もし違う名前が一つでもあれば不可能という処理を行います。
tabonon

2018/03/06 05:39

>の判別方法は session[’username’] 失礼しました ログインユーザーの判別方法は $_SESSION['username'] でした
guest

0

現状のコードのこの部分が参考になるのではないでしょうか。
if($_SERVER["REQUEST_METHOD"]=="POST" && !empty($_POST)){

投稿2018/03/05 15:49

takada0305

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問