削除フラグを使った投稿削除機能の実装について

このQ&Aのポイント
  • 削除フラグを使った投稿削除機能の実装について苦悩しています。
  • array_splice()関数を使用して特定の行を削除する方法では論理削除ができず困っています。
  • 物理削除ではなく表示をさせないようにすることで、論理削除を実現しようと考えています。
回答を見る
  • ベストアンサー

削除フラグ

こんにちわ。今まで、同じような質問をしてきたものです。 PHPの掲示板で削除機能を作成しようとしています。 投稿番号や削除キーがあっていれば、削除をするという 削除フラグまではを作成したのですが、実際の削除(論理削除)がうまく行かず、苦悩しております。下のarray_splice()の配列から特定の行を削除・置換する関数を使用し削除をしようとしているのですがこれでは論理削除などはできないでしょうか?関数ではできないのでしょうか?また、if( $temp[5] !=0 )とすることで、物理削除ではなく表示を させないということで、論理削除としようと考えました。 掲載した記述部分は、削除ボタンが押されたら削除処理をする 部分です。また、実際の書き込み部分も記述させていただきます。 <?php $NO = $_POST["NO"]; $hoge = $_POST["hoge"]; $delkey = $_POST["delkey"]; # 削除ボタンが押されたら if($submit =="削除"){ $data = file("data.txt"); foreach( $data as $value){ $temp = explode("\t",$value); if($temp[4] == $NO && $temp[6] ==$delkey ){ //削除フラグを0以外にする処理 if( $temp[5] !=0 ){ array_splice($data, $temp[4], 1); } } } } ?> 書き込み部分は下のようにしています。 $file = fopen("data.txt", "w"); fwrite($file, "$name\t$mail\t$body\t$dt\t$count\t$flag\t$delkey\n".implode("", $data)); fclose($file);

  • msnxl
  • お礼率81% (36/44)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • kaz33
  • ベストアンサー率60% (20/33)
回答No.1

$flagを1にしたいということでしょうか??? それだとそのコードじゃ動かないかと・・・ foreach( $data as $value){ $temp = explode("\t",$value); if($temp[4] == $NO && chop($temp[6]) == $delkey ){ //削除フラグを0以外にする処理 if( $temp[5] == 0 ){ array_splice($temp, 5, 1, "1"); } } $data2 .= implode("\t",$temp); } 後は$data2をdata.txtに書き込んであげる。 認識違いならごめんなさいね(^-^;

msnxl
質問者

お礼

ありがとうございます。なんとか削除機能を実装することができました。

msnxl
質問者

補足

おっしゃるとおり$flagを1にしたいとうことです。ただ気づいたのですが、表示部でflag=0;としてるのでif($temp[4] == $NO && $temp[6] ==$delkey )がある時点でif( $temp[5] !=0 )がいらないとうことに 気づきました。 回答を参考にさせていただきましたがどうも何かが足りないのか動作しませんでした。 表示部や削除部分以外ものせさせていただきます。 削除実行部はフォームで飛ばし subject03-02delete.phpで行っています。 <?php $hidden = $_POST["NO"]; $text = $_POST["delcode"]; $reset = $_POST["delete"]; $submi = $_POST["DELETE"]; $submit = $_POST["SUBMIT"]; $password =$_POST["delkey"]; if($submit == "送信"){ $num = $_POST["num"]; $name = $_POST["NAME"]; $mail = $_POST["MAIL"]; $body = $_POST["BODY"]; if($name== "" or $body == ""){ header("Location:subject03-02false.php"); exit; } #HTML無効 $name = htmlspecialchars("$name"); $mail = htmlspecialchars("$mail"); $body = htmlspecialchars("$body"); #クォートを取り除く if(get_magic_quotes_gpc()){$neme = stripslashes("$name");} if(get_magic_quotes_gpc()){$mail = stripslashes("$mail");} if(get_magic_quotes_gpc()){$body = stripslashes("$body");} #本文を1000文字まで表示 $body = substr($body, 0, 1000); $body = str_replace("\r\n","<br>", $body); $body = str_replace("\t", " ", $body); $dt = date("y/m/d H:i:s"); $data = file("data.txt"); $flag = 0; $count = count($data); $count++; $file = fopen("data.txt", "w"); fwrite($file, "$name\t$mail\t$body\t$dt\t$count\t$flag\t$delkey\t$data2\n".implode("", $data)); fclose($file); header("Location:subject03-02.php"); exit; } # ノーキャッシュヘッダー header("Expires: Mon,26 Jul 1997 05:00:00 GMT"); header("Last-Modified:".gmdate("D,d M Y H:is")."GMT"); header("Cache-Control: no-cache,must-revaildate"); header("Prodma:no-cache"); //入力フォーム echo ' subject03-BBS <h1>subject-BBS</h1> <form method="post" action="subject03-02.php" > お名前 <input type="text" size="20" maxlength="40" name="NAME"> メール <input type="text" size="30" maxlength="60" name="MAIL"> <p>本文<br></p> <textarea rows="20" cols="80" wrap="soft" name="BODY"></textarea> <p><input type="submit" name="SUBMIT" value="送信"><input type="reset" name="delete" value="消す"></p> <p>削除キー<input type="text" name="delcode" size=8></p> <input type="hidden" name="NO" value="$view[3]"> </form> '; $data = file("data.txt"); $i=1; foreach($data as $value){ $view = explode("\t", $value); if( $i < 11 && $view[5] == 0 ){ if($view[1] == ""){ echo "お名前:$view[0]$view[3]<br>"; echo "本文:$view[2]<br>"; echo "<form method=\"post\" action=\"subject03-02delete.php\" > <input type=\"hidden\" name=\"NO\" value=\"$view[3]\"> <input type = \"submit\" name = \"hoge\" value = \"削除\"> <input type=\"password\" name=\"delkey\" size=8> </form>"; echo '<hr size="1" width="80%"><br>'; } else { echo "お名前:<a href=\"mailto:$mail\">$view[0]</a>$view[3]<br>"; echo "本文:$view[2]<br>"; echo "<form method=\"post\" action=\"subject03-02delete.php\" > <input type=\"hidden\" name=\"NO\" value=\"$view[3]\"> <input type = \"submit\" name = \"hoge\" value = \"削除\"> <input type=\"password\" name=\"delkey\" size=8> </form>"; echo '<hr size="1" width="80%"><br>'; } } $i++; } ?>

関連するQ&A

  • 掲示板ログの削除方法が分かりません

    XAMPP for Windows Version 1.5.4a   PHP: 5.1.6 掲示板に削除ナンバーと削除キーが合えば記事削除したいのですが行き詰ってます、教えてください。 01.phpが本体01.txtが保存ファイル 01.txtへの書き込みは、タブ区切り 8 名前 タイトル コメント 投稿時間 メールアドレス URL 削除キー $ireru=file("01.txt"); if($_POST["write"]){ $nosyori=explode("\t",$ireru[0]); $no=$nosyori[0]+1; ~タグ処理・改行対策・エラーチェック記述~ $data="$no\t$name\t$title\t$comment\t$time\t$mail\t$url\t$sakujyokey\n"; array_unshift($ireru, $data); } //削除処理// ここが問題・・・ //再構築// if($_POST['write'] || $_POST['delete']){ $fp=fopen("01.txt","w"); foreach($ireru as $dasu) fputs($fp,$dasu); fclose($fp);} 番号<input type="text" name="delno">削除キー<input type="password" name="sakujyokey2" value=""> <input type="submit" name="delete" value="記事削除"> ------------------------------------------ 下記を実行すると記事分だけ(9記事あれば削除できませんが9回出る)削除できませんが返ってきます。 if($_POST['delete']){ for($i=0; $i<count($ireru); $i++){ $nosyori=explode("\t",$ireru[$i]); if($nosyori[0] == $_POST['delno'] && $nosyori[7] == $_POST['sakujyokey2']){ array_splice($ireru,$i,1); echo"該当記事を削除しました"; }else{echo"削除できません";} } よろしくお願いします

    • 締切済み
    • PHP
  • テキストデータから指定行の削除

    phpでサイトを作っています。 テキストデータを一行ずつ表示させ、指定した行を削除したいのですが、どうすればいいのでしょうか? -- data.txt -- aaa,data1, bbb,data1, ccc,data1, ddd,data1, -- php -- <?php $del=$_POST['del_no']; if($del!=""){ $data_all = file("data.txt"); for($i=0;$i<count($data_all);$i++){ $data_array = explode(",",$data_all[$i]); if($data_array[0]!=$del){//削除データ以外を再書き込み $txt="$data_array[0],$data_array[1],\n"; $fp = fopen("data.txt", "w"); flock($fp,1); foreach ($txt as $line) {// 1行ずつファイルへ書き込み? fwrite($fp, $line); } fclose($fp); break; } } } ?> <b>data list</b> <? $data_all = file("data.txt"); for($i=0;$i<count($data_all);$i++){ $data_array = explode(",",$data_all[$i]); echo "$data_array [0]<br />"; echo "<form method=\"post\">"; <input type=\"hidden\"name=\"del_no\" value=\"$data_array[0]\" />";//削除するデータをPOST echo "<input type=\"submit\" value=\"削除\" />"; echo "</form>"; } ?> こうすると、テキストデータが白紙になってしまいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 親記事を削除するとレスも削除

    いつも参考にさせてもらっています。 タイトルどおりなのですが、 親記事を削除すると親Noを含むレスをすべて削除できるように $lines = file('res.log'); for ($i = 0; $i < count($lines) + 1; $i++) { $items = explode("\t", $lines[$i]); if ($items[1] == $_GET['oya_del']) { $dno = $i; $dnum2++; if ($dnum) array_splice($lines $dno, $dnum2); $fp = fopen('res.txt', 'w'); foreach($lines as $line) fputs($fp, $line); fclose($fp); } } と、記述しています。 しかしレスが2つ以上あると、1つ残ってしまいます。 どのようにしたらよいのか教えていただけないでしょうか。 お願いいたします。

    • ベストアンサー
    • PHP
  • 【PHP】 記事の削除について(ログの一部を削除)

    log.txt ファイル の中身が下の様になっていた場合、削除したい記事番号を選び削除キーを押したら 選んだ記事番号の記事を削除するにはどうしたらよいでしょうか? ◆ log.txtファイルの中身 1 あああ君 おはよう ・ 3 かかか君 良い天気ですね ・ ・ 6 そそそ君 明日は晴れるでしょ ※ 記事番号($no) 名前($name) 内容($body)と配列がなっています。(全角の空白で区切ってます) ◆ 削除したい記事番号を選ぶ所のファイル名は 「file01.php」 としています。   「file01.php」では次ぎの様に削除キーを設定しています。 <table><tr><td> <form name="form" action="file02.php" method="POST"> <input type="text" name="delkey" size="8"> <input name="Submits" type="submit" value="削除"></form> </td></tr></table> ◆ 「file01.php」からのデーターの受け取りファイル名は 「file02.php」としています。   「file02.php」では次ぎの様にしてデーターを受け取る様にしています。 <?php $delkey = $_REQUEST["delkey"]; $data = file("log.txt"); for($i=0; $i<sizeof($data); $i++){ list($no,$name,$body) = explode( " " , $data[$i]); if($no == $delkey){ //・・・記事削除処理 } } ・ ・ ・ ?> ◆ 書込みは次ぎの様にしています。 $fp = fopen("log.txt","w"); $ndata = implode( " " , array($no,$name,$body."\n") ); fputs($fp,$ndata); fclose($fp); ここまではやってみましたが、ここから、どのような仕組みで選んだ記事番号の記事を削除したらよいのか分らないので教えて下さい? また、記事削除の処理をした場合、ログファイルを元のと書きかえるいはどうしたらよいのでしょうか教えて下さい? 例えば、選んだ削除番号が「3」だった場合など・・・記事削除処理のところはどうしたらよいのでしょうか? if の所では、記事番号($no)が選んだ削除したい記事番号($delkey)と等しいなら、・・・記事削除処理 と言う様にしています。 記事削除処理のところは、記事削除の仕組み仕方が分らないので空白となっています。 以上、出来れば詳しく教えて頂けると助かります。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • HTML文字列を取得→加工→書き出すスクリプト

    CGI(perl)がこういうHTMLを書き出すのですが、 <html> <body> <p><a href="file:///C:\temp\hoge1.txt">file:///C:\temp\hoge1.txt</a></p> <p><a href="file:///C:\temp24\hoge2.txt">file:///C:\temp24\hoge2.txt</a></p> :(中略) <p><a href="file:///C:\temp78\hoge15.txt">file:///C:\temp78\hoge15.txt</a></p> </body> </html> ↑のハイパーリンクに加え、hoge.txtが置かれている親フォルダへの リンクも併設したいです。イメージとしては、次のような感じです、 <html> <body> <p><a href="file:///C:\temp\hoge1.txt">file:///C:\temp\hoge1.txt</a><br> ↑のファイルがあるフォルダを開くなら<a href="file:///C:\temp\">こちら</a></p> <p><a href="file:///C:\temp24\hoge1.txt">file:///C:\temp24\hoge1.txt</a><br> ↑のファイルがあるフォルダを開くなら<a href="file:///C:\temp24\">こちら</a></p> :(中略) <p><a href="file:///C:\temp78\hoge15.txt">file:///C:\temp78\hoge15.txt</a><br> ↑のファイルがあるフォルダを開くなら<a href="file:///C:\temp78\">こちら</a></p> </body> </html> みたいに、ページを表示するたびに フォルダパスも記述されるという… JavaScriptで実現できますでしょうか?よろしくお願い致します。

  • PHPで作る掲示板について

    これを実行するとページは表示されるのですが、名前や題名、本文に日本語を入力すると 例えば名前に「山田」と入れ送信すると投稿者のところに何も出ません どうすれば解決できますか?環境はWin7でサーバは用意されたものを使用しているので 設定等の必要はありません。 画像は上が送信前、下が送信後です <?php $lines = file('bbs2.txt'); if ($_POST['write']) { $items = explode("\t", $lines[0]); $no = $items[0] + 1; $name = htmlspecialchars($_POST['name']); if (!$name) $name = "名無しさん"; $mail = htmlspecialchars($_POST['mail']); $title = htmlspecialchars($_POST['title']); if (!$title) $title = "無題"; $contents = htmlspecialchars($_POST['contents']); $contents = str_replace("\r\n", "<br>", $contents); $contents = str_replace("\r", "<br>", $contents); $contents = str_replace("\n", "<br>", $contents); $delkey = htmlspecialchars($_POST['delkey']); $time = date("Y/m/d H:i:s"); $expire = time() + 3600 * 24 * 30; setcookie("name", $name, $expire); setcookie("mail", $mail, $expire); setcookie("delkey", $delkey, $expire); $data = "$no\t$name\t$mail\t$title\t$contents\t$delkey\t$time\n"; array_unshift($lines, $data); } else { $name = $_COOKIE['name']; $mail = $_COOKIE['mail']; $delkey = $_COOKIE['delkey']; } if ($_POST['delete']) { for ($i = 0; $i < count($lines); $i++) { $items = explode("\t", $lines[$i]); if ($items[0] == $_POST['delno'] && $items[5] == $_POST['delkey2']) { array_splice($lines, $i, 1); } } } if ($_POST['write'] || $_POST['delete']) { $fp = fopen('bbs2.txt', 'w'); foreach($lines as $line) fputs($fp, $line); fclose($fp); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>掲示板2</title> </head> <body> <form method="post" action="bbs2.php"> お名前:<input type="text" name="name" value="<?php print $name ?>"><br> メール:<input type="text" name="mail" value="<?php print $mail ?>"><br> 題 名:<input type="text" name="title"><br> 削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>"><br> <textarea name="contents" cols="60" rows="5"></textarea><br> <input type="submit" name="write" value="送信"> <hr> 記事番号:<input type="text" name="delno">  削除キー: <input type="password" name="delkey2">  <input type="submit" name="delete" value="記事削除"> </form> <hr> <?php foreach($lines as $line) { $line = rtrim($line); $items = explode("\t", $line); print "No.{$items[0]} "; print "<b>{$items[3]}</b> 投稿者:"; if ($items[2]) print "<a href='mailto:{$items[2]}'>"; print $items[1]; if ($items[2]) print "</a>"; print " 投稿時間:{$items[6]}"; print "<p>{$items[4]}</p><hr>\n"; } ?> </body> </html>

    • 締切済み
    • PHP
  • PHPの掲示板について

    下記のソースコードを実行したところページは表示されるのですが 記事を書き込み画像を添付して送信することができませんでした。 どのように修正すればいいでしょうか <?php $con = pg_connect("dbname=postgres user=postgres password=postgres"); if ($_POST['write']) { $name = get_form($_POST['name']); if (strlen($name) > 100) exit(); if (!$name) $name = "名無しさん"; $title = get_form($_POST['title']); if (strlen($title) > 100) exit(); if (!$title) $title = "無題"; $contents = get_form($_POST['contents']); if (strlen($contents) > 500) exit(); if (!$contents) error("本文を入力してください"); $delkey = get_form($_POST['delkey']); $expire = time() + 3600 * 24 * 30; setcookie("name", $name, $expire); setcookie("delkey", $delkey, $expire); $tname = $_FILES['image']['tmp_name']; if ($tname) { if (!is_uploaded_file($tname)) error("不正なアップロード"); $type = $_FILES['image']['type']; if ($type != "image/jpeg" && $type != "image/pjpeg") { error("JPEG形式ではありません"); } $rs = pg_query($con, "select last_value from pgbbs3_no_seq"); $no = pg_fetch_result($rs, 0, 0) + 1; $path = "image/$no.jpg"; move_uploaded_file($tname, $path); $path_t = "image/{$no}_t.jpg"; list($sw, $sh) = getimagesize($path); $dw = 128; $dh = $dw * $sh / $sw; $src = imagecreatefromjpeg($path); $dst = imagecreatetruecolor($dw, $dh); imagecopyresized($dst, $src, 0, 0, 0, 0, $dw, $dh, $sw, $sh); imagejpeg($dst, $path_t); } pg_query($con, "insert into pgbbs3(name,title,contents,delkey) values('$name','$title','$contents','$delkey')"); } else { $name = $_COOKIE['name']; $delkey = $_COOKIE['delkey']; } if ($_POST['delete']) { $no = get_form($_POST['no']); $delkey = get_form($_POST['delkey']); $rs = pg_query($con, "delete from pgbbs3 where no=$no and delkey='$delkey'"); if (pg_affected_rows($rs) == 0) error("記事削除に失敗しました"); } // フォームの文字列を取得する function get_form($str) { $str = pg_escape_string(htmlspecialchars($str)); $str = ereg_replace("\n|\r|\r\n", "<br>", $str); return $str; } // エラー表示して終了 function error($msg) { print "<p><font color='red'>$msg</font></p>\n"; exit(); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>画像アップロード掲示板</title> </head> <body> <p>JPEGファイルのみアップロードできます。</p> <form method="post" action="pgbbs3.php" enctype="multipart/form-data"> お名前:<input type="text" name="name" value="<?php print $name ?>"><br> 題 名:<input type="text" name="title"><br> <input type="hidden" name="max_file_size" value="30000"> 画像:<input type="file" name="image"><br> 削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>"><br> <textarea name="contents" cols="60" rows="5"></textarea><br> <input type="submit" name="write" value="送信"> </form> <hr> <form method="post" action="pgbbs3.php"> 記事番号:<input type="text" name="no"> 削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>"> <input type="submit" name="delete" value="記事削除"> </form> <?php $rs = pg_query($con, "select * from pgbbs3 order by no desc"); while ($row = pg_fetch_array($rs)) { $time = substr($row['time'], 0, 19); $no = $row['no']; print "<hr>No.{$no} <strong>{$row['title']}</strong>"; print " 投稿者:{$row['name']} 投稿日時:$time"; $fn = "image/{$no}.jpg"; $fn_t = "image/{$no}_t.jpg"; if (file_exists($fn)) print "<br><br><a href='$fn'><img src='$fn_t' border='0'></a>"; print "<br><br>{$row['contents']}\n"; } pg_close($con); ?> </body> </html>

    • 締切済み
    • PHP
  • array_searchを使って外部ファイルから目的のキーを取得したい

    array_searchを使って外部ファイルから目的のキーを取得したいのですが どうしてもFALSEを返されてしまいます。 以下が構文です。 <?php $file = file_get_contents("arr.php"); $arr =explode("\n",$file); $delstr="DEF"; $hoge = in_array($delstr,$arr,1); if($hoge !== false){ array_splice($arr,$hoge,1); } var_dump($hoge); print_r($arr); ?> 3日くらい悩んでいます。 どうかご教授よろしくお願い致します。

    • 締切済み
    • PHP
  • 受け取ったデータを基にファイルを操作

    お世話になっております。 以下の内容に行き詰まっております。アドバイスのほど頂戴出来ればと投函しました。宜しくお願いいたします。 やりたいこと。 GETにて受け取ったデータ(URL)を基に、同じディレクトリ内のデータファイル(data.txt)に登録のあるデータから、受け取ったURLを削除した内容で書き換えたい。 ※data.txtは、行単位で各データがタブ区切りで以下のように登録されている。 URL 日付 メール … URL 日付 メール …   現状の報告 以下のスクリプトが実際に作成したものですが、現在、受け取っただけではファイル内容を書き換えることが出来ず、リロードしないと駄目な状況となっています。 アドバイス頂きたいこと。 1.スクリプト自体におかしなところ、見直すべきところがあるか? 2.data.txtを書き換えるスクリプトで、もっと効率のよいものはあるか? 以下がその現在のスクリプトです。 <?php $url = $_GET["url"]; $addfname = "./data.txt"; @$data_array = file($addfname); $data_cnt = count($data_array); $data_array2 = $data_array; $s=0; for($i=0; $i<$data_cnt; $i++){  $data_text = explode("<>", $data_array[$i]);  if($url == $data_text[0]){//GETデータと同じURLだったら配列から削除   $s++;   $key = $i - $s + 1;   array_splice($data_array2, $key, 1);  } } //data.txtのデータ上書き $file=fopen("$addfname", "w") or die("OPENエラー $file_name"); flock($file, LOCK_EX); for($i=0; $i<count($data_array2); $i++){ $new_data = $data_array2[$i]; fputs($file, "$new_data"); } flock($file,LOCK_UN); fclose($file); ?> 先にも述べましたが、現状ではこのスクリプトを実行した後、リロードしなければファイル(data.txt)の書き換えが出来ない状況となっています。どんな些細なことでも構いません。ご意見、アドバイスを頂戴できれば幸いです。お忙しい中恐縮ですが宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで作る掲示板について

    以前にも質問しましたがフォームから日本語を送信すると文字化けが発生します info.phpでPHPのマルチバイト系の設定を確認したとこを下のようになっていました。 サーバは借りているのでphp.iniで設定変更できないため.htaccessで対処しようと したのですがうまくいきませんでした。解決策をお願いします 環境はWin7でPHPのバージョンは 5.3.10です mbstring.detect_order auto mbstring.encoding_translation On mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output UTF-8 mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) mbstring.internal_encoding UTF-8 mbstring.language Japanese Japanese mbstring.script_encoding no value mbstring.strict_detection Off mbstring.substitute_character no value //プログラム <?php $lines = file('bbs2.txt'); if ($_POST['write']) { $items = explode("\t", $lines[0]); $no = $items[0] + 1; $name = htmlspecialchars($_POST['name']); if (!$name) $name = "名無しさん"; $mail = htmlspecialchars($_POST['mail']); $title = htmlspecialchars($_POST['title']); if (!$title) $title = "無題"; $contents = htmlspecialchars($_POST['contents']); $contents = str_replace("\r\n", "<br>", $contents); $contents = str_replace("\r", "<br>", $contents); $contents = str_replace("\n", "<br>", $contents); $delkey = htmlspecialchars($_POST['delkey']); $time = date("Y/m/d H:i:s"); $expire = time() + 3600 * 24 * 30; setcookie("name", $name, $expire); setcookie("mail", $mail, $expire); setcookie("delkey", $delkey, $expire); $data = "$no\t$name\t$mail\t$title\t$contents\t$delkey\t$time\n"; array_unshift($lines, $data); } else { $name = $_COOKIE['name']; $mail = $_COOKIE['mail']; $delkey = $_COOKIE['delkey']; } if ($_POST['delete']) { for ($i = 0; $i < count($lines); $i++) { $items = explode("\t", $lines[$i]); if ($items[0] == $_POST['delno'] && $items[5] == $_POST['delkey2']) { array_splice($lines, $i, 1); } } } if ($_POST['write'] || $_POST['delete']) { $fp = fopen('bbs2.txt', 'w'); foreach($lines as $line) fputs($fp, $line); fclose($fp); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>掲示板2</title> </head> <body> <form method="post" action="bbs2.php"> お名前:<input type="text" name="name" value="<?php print $name ?>"><br> メール:<input type="text" name="mail" value="<?php print $mail ?>"><br> 題 名:<input type="text" name="title"><br> 削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>"><br> <textarea name="contents" cols="60" rows="5"></textarea><br> <input type="submit" name="write" value="送信"> <hr> 記事番号:<input type="text" name="delno">  削除キー: <input type="password" name="delkey2">  <input type="submit" name="delete" value="記事削除"> </form> <hr> <?php foreach($lines as $line) { $line = rtrim($line); $items = explode("\t", $line); print "No.{$items[0]} "; print "<b>{$items[3]}</b> 投稿者:"; if ($items[2]) print "<a href='mailto:{$items[2]}'>"; print $items[1]; if ($items[2]) print "</a>"; print " 投稿時間:{$items[6]}"; print "<p>{$items[4]}</p><hr>\n"; } ?> </body> </html>

    • ベストアンサー
    • PHP